【发布时间】:2012-09-05 14:35:46
【问题描述】:
我在雅虎被问到机器学习简介这个问题。给定一组点 (x,y) 坐标,我被要求在 O(n) 或 O(log n ) 时间内找到距离最短的点。 显然我能够想出 O(n^2) 时间,但离获得更好的算法还差得很远。尽管问题陈述是分而治之,但我还是想不出合并步骤的理由。我也在网上搜索了这个问题,发现它实际上很受欢迎,但我仍然无法掌握合并步骤的推理。
谁能帮我解决这个问题?
输入:(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)
【问题讨论】:
-
这应该张贴在数学部分;) O(n) 表示与点数成线性关系。那可能吗?您刚刚比较了每一对点对吗?
-
是的,在 O(n^2) 算法中我做到了 n*(n-1)/2 复杂度
-
也许这会有所帮助:en.wikipedia.org/wiki/K-d_tree
标签: performance algorithm data-structures time-complexity