我在雅虎被問及機器學習配置文件的這個問題。給定一組點(x,y)座標,我被要求在O(n)或O(log n)時間內找到距離最近的點。 很明顯,我能夠拿出O(n^2)的時間,但沒法獲得更好的算法。儘管問題陳述尖叫分而治之,但我無法想出合併步驟的推理。我也在互聯網上搜索這個問題,發現它實際上非常受歡迎,但我仍然無法理解合併步驟的推理。在2D平面中給定的一組點中找到兩個點,其中距離最短的距離小於O(n^2)
任何人都可以幫我解決這個問題嗎?
輸入:(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4),(X5,Y5)
這應該在mathsection上公佈;)O(n)表示與點的量是線性的。那可能嗎?你只是比較每一對點的權利? –
是在O(n^2)算法我做了n *(n-1)/ 2複雜度 – Dude
也許這可能有所幫助:http://en.wikipedia.org/wiki/K-d_tree – marspzb