問題
p為笛卡爾平面上n>1個點構成的集合,求最近的兩個點的距離(n=2k)
解析蠻力窮舉演算法:遍歷整個點集,計算每一對點之間的距離d,最終找出最近距離。
顯然這樣的方法時間複雜度為o(n2)
分治演算法:首先劃分整個點集劃分為兩各部分s1和s2,每個子點集的點的數量都為n/2,最近點對會出現點對在s1中,點對在s2中,點對分別在s1和s2中。用遞迴分別計算前兩種情況,最後分析第三種情況。最後合併,分析比較出三者中的最小值。
o(nlogn)。
3.偽**
double closest_pair(int left, int right)
4. 分析
蠻力演算法:
時間複雜度o(n2)
分治演算法:
時間複雜度w(n)=2w(n/2)+o(n)
w(n)=o(nlogn)
5.原始碼位址
演算法分析與實踐 作業5
在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地講,最近點對可能不止一對,此例輸出一對即可。利用分治求解 首先對所有的點按照x座標 或者y 從小到大排序 排序方法時間複雜度o nlogn o nlogn o nlogn ...
演算法分析與實踐 作業5
n個點在公共空間中,求出所有點對的距離最小值。對所有的點按照x座標從小到大排序。根據下標進行分割,使得點集分為兩個集合。遞迴的尋找兩個集合中的最近點對。取兩個集合最近點對中的最小值min dis left,dis right 最近距離不一定存在於兩個集合中,可能乙個點在集合a,乙個點在集合b,而這兩...
演算法分析與設計學習筆記 5
貪心演算法 在求最優解問題的過程中,依據某種貪心標準,從問題的初始狀態出發,直接去求每一步的最優解,通過若干次的貪心選擇,最終得出整個問題的最優解,這種求解方法就是貪心演算法。從貪心演算法的定義可以看出,貪心演算法不是從整體上考慮問題,它所做出的選擇只是在某種意義上的區域性最優解,而由問題自身的特性...