【问题标题】:Convex hull proof [closed]凸壳证明[关闭]
【发布时间】:2021-11-07 18:16:07
【问题描述】:

如何正式证明不能在比 O(n log n) 更好的时间内找到凸包。我知道这是真的,与排序有关。因此,如果这不是真的,那意味着我们可以比 O(n log n) 更好地对 n 个时间点的集合进行排序,因为我们可以使用凸包算法进行排序,而且我们知道这是不可能的。但是如何正式证明呢?

【问题讨论】:

  • 我投票结束这个问题,因为它要求的是数学证明,而不是计算机程序。
  • 警告:用于排序的 n Log n 界限仅适用于基于比较的算法。如果允许其他操作(如在基数排序中),则可能会有更好的界限。外壳可以通过排序获得,然后应用 Graham's walk,这需要线性时间。

标签: time-complexity computer-science computational-geometry convex-hull


【解决方案1】:

简单的答案是,凸包算法期望以顺时针或逆时针顺序输出凸包的顶点 - 即算法的输出是多边形,并且多边形的顶点必须以正确的顺序。

假设你有一个数字列表;通过适当的缩放将它们转换为 0 到 359 度范围内的角度,以便与原始列表中的角度 t 对应的每个数字成为 polar coordinates 中位置 (1; t) 处的一个点。凸包必须包括所有点,并且必须按排序顺序,因此如果您可以在O(f(n)) 时间找到凸包,那么您可以在O(n + f(n)) 时间排序,其中额外的n 术语是将数字转换为角度并返回的成本。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 2016-09-28
    • 2012-06-28
    • 2015-02-07
    • 2018-05-17
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多