algorithm - 包含不超过 11 个点的最大圆

标签 algorithm math geometry puzzle

<分区>

一道数学题我已经被困了几天了。

给定二维平面上的一组点(超过 11 个),找出不包含超过 11 个点的最大圆。

显而易见的方法是获取大小为 12 的所有可能子集,然后为每个子集找到最小外接圆,但这将花费太长时间来计算。

关于更有效的方法有什么想法吗?

最佳答案

我怀疑存在一个完全不切实际的 O(n log n) 时间算法,它计算 order-12 (!) Voronoi 图并像 O(n log n) 时间算法一样进行最大空圆。实际上,每个可行的圆是由输入点中的三个(在边界上)或两个(作为直径)确定的。天真地尝试所有这些都是四次时间,但对于每对点 P 和 Q,线 PQ 一侧的点相对于圆上方的其他点所包围的点是完全有序的,下面的点也是如此。这种洞察使我们通过排序得到 n^3 log n;使用选择算法应该可以实现二次。

关于algorithm - 包含不超过 11 个点的最大圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518980/

相关文章:

javascript - 调平系统进度条

c++ - 从数列中减去一个数后,剩下的数中有多少是正数?

python - 跨 kd 树的双重递归以查找两组点之间最接近的方法

c# - 如何在四边形中找到一个随机点?

c - 查找数组中恰好出现一次的两个元素

c++ 或 c pow 给出错误的结果

c# - 猜谜和数字比较

java - 如何使用 JTS 中的 Delaunay 三角剖分为点插值 Z 值的示例

algorithm - 为什么我们说 map-reduce 比传统方法更好地解决了 "Paper reference"问题?

algorithm - 改进查找数组中的最小值和最大值