演算法分析與設計5最近點對

2021-10-22 23:58:33 字數 609 閱讀 6302

在含有n個點的集合p中找出最近的兩個點的距離

採取分治策略,利用遞迴將問題反覆拆分為兩個子集,再對每個子集分別進行計算分析,然後合併比較得出最近點對間的距離

if

(n <2)

mid =

(high + low)/2

; dist1 =

closestpoint

(p, low, mid)

; dist2 =

closestpoint

(p, mid +

1, high)

; min_dist = dist1 > dist2 ? dist2 : dist1;

dist3 =

9999

;for

(i = low; i <= high; i++)}

} min_dist = min_dist > dist3 ? dist3 : min_dist;

return min_dist;

t(n) = 1 n=2時

t(n) = 2t(n/2) + n n >2時

t(n) = o(nlogn)
作業5/5.1.c

演算法分析與設計 最近點對問題

問題描述 最近對問題要求在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地將,最近點對可能不止一對,此例輸出一對即可。基本演算法思想 暴力法 在蠻力法實現最近點對問題中,將問題簡化 距離最近的點對可能多於一對,找出一對即可...

演算法分析與設計 最近點對問題

問題分析 這個題目目前對於大家會有點難度,有興趣的同學可以研究一下,這種題目才是分治的精髓所在。前段時間 partychen 到吳涇去買東西,發現在步行街有乙個賭博遊戲,乙個商人在地面上擺放了很多的小禮品,然後準備了很多大小相同的圓環,玩家可以到商人處花 5 塊錢買乙個圓環。然後站在一根白線外使用圓...

演算法分析與實踐 作業5 最近點對問題

p為笛卡爾平面上n 1個點構成的集合,求最近的兩個點的距離 n 2k 蠻力演算法 將每個點與其他點進行計算,求得最短的距離 但需要兩層遍歷,複雜度較高 分治演算法 把點集p 點個數為n 按照x軸從小到大排列 當n 3時,使用蠻力演算法 當n 3時,將點集分為左右大小為 n 2 和 n 2 的子集pl...