如何解决Douglas-Peucker 线简化算法时间复杂度
我正在分析 Douglas-Peucker 行简化算法的时间复杂度。在线阅读我发现它的最坏情况运行时间为 O(n^2)
,其中 n
是线上的点数。但是,我无法提供完整的证据。这是我正在使用的伪代码:
这是我的分析:
第 1 行: O(1)
第 2 行: 可以说它经过了 PL
中第一个点和最后一个点形成的折线中的所有点,并返回到距离最大的点上述点之间的直线。我们可以肯定地说这是O(n)
第 4-6 行: 如果我们在这里,我们将进行两次递归调用。 每次调用中使用的元素数量可能不同(并不总是一半)。取决于第 2 行中的点。撇开实现细节不谈,我们可以说分裂是O(1)
。此外,我们有一个 JOIN
操作,它需要 O(n)
来加入两个列表。
第 8 行:这也是一个 JOIN
操作,但这只需要 O(1)
。
看完这些步骤后,我认为我们有以下递归关系:
T(n) = T(index + 1) + T(n - index) + 2n
其中 index in [1,...,n-1]
我说得对吗?如果是这样,我如何证明这是 O(n^2)
?主定理?
非常感谢您提前
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。