ps:為什麼陰影區域是d*2d的面積和至於為什麼最多有6個點,我是這樣理解的。首先對於任意乙個左側區域的px點,他有可能位於中間的垂線上面,因此如果存在最小的d在中間區域,則一定位於d*2d的陰影內,此外,不難發現,除了訂單的6個點,如果還存在其他的點,那麼必定右側就會出現最小的d,之前我們利用分治法已經得到兩邊最小的d值了。因此矛盾。
於是步驟如下:
步驟1:根據點的y值和x值對s中的點排序。
步驟2:找出中線l將s劃分為sl和sr
步驟3:將步驟2遞迴的應用解決sl和sr的最近點對問題,並令d=min(dl,dr)。
步驟4:將l-d~l+d內的點以y值排序,對於每乙個點(x1,y1)找出y值在y1-d~y1+d內的接下來的7個點,計算距離為d』。如果d』小於d,令d=d』,最後的d值就是答案。
最近點對問題
在n n 1 個點的集合中尋找最近點對。即求任意兩點的歐幾里得距離的最小值。1 最簡單的暴力搜尋演算法,時間複雜對為o n n 2 這裡主要考慮分治演算法,執行時間的遞迴式為t n 2 t n 2 o n 時間複雜度為o n lgn 演算法思想 將集合中的點按x座標排序,我們可以想象一條垂直的直線將...
最近點對問題
在二維平面上的n個點中,如何快速的找出最近的一對點,就是最近點對問題。一種簡單的想法是暴力列舉每兩個點,記錄最小距離,顯然,時間複雜度為o n 2 在這裡介紹一種時間複雜度為o nlognlogn 的演算法。其實,這裡用到了分治的思想。將所給平面上n個點的集合s分成兩個子集s1和s2,每個子集中約有...
最近點對問題
最近點對問題,是分治法的乙個典型應用,可以作為分治法入門的乙個切入點。最近點對問題的描述比較簡單,在二維平面中,給定一堆點,求距離最近的一對點,思路是,講這一堆點分為兩部分,左域與右域,如何劃分左域右域呢?我們知道,這一堆點,每乙個點都有其橫座標,假如有十個點,對應十個橫座標,我們就取其中間數,然後...