【发布时间】:2016-11-09 12:51:14
【问题描述】:
我需要找到一种算法,该算法从给定的一组点S 大小为n 计算凸包。
我知道S 中正好有 6 个点构成了凸包。
计算这个的最好和最有效的方法是什么?
我考虑过从S 生成所有可能的点组合(这将是 n 选择 6 个点),这将花费 O(n^6),然后检查这是否是一个凸包,这将花费 O(n ) 但会导致非常糟糕的总运行时间。一定会有更好的办法。有什么提示吗?
【问题讨论】:
-
附带说明,nC6 是 O(n^6),而不是 O(n)
-
先在这里查看en.wikipedia.org/wiki/Convex_hull_algorithms 怎么样?编辑:忍者
-
凸包是独一无二的,所以你为什么要谈论 6 点等,只需查找算法并执行它 - 如果你有 1000 点或 10000 点,这是一个小问题,它不能超过 O( n^2)
-
检查 6 组需要 O(N),因此总复杂度为 O(N^7)。一般来说,O(N^7) 是不可想象的,除了微小的 N。对于 N=10,N^7 已经是千万。 N=100,就是十亿。
标签: algorithm geometry computational-geometry convex-hull convex