微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Douglas-Peucker 线简化算法时间复杂度

如何解决Douglas-Peucker 线简化算法时间复杂度

我正在分析 Douglas-Peucker 行简化算法的时间复杂度。在线阅读我发现它的最坏情况运行时间为 O(n^2),其中 n 是线上的点数。但是,我无法提供完整的证据。这是我正在使用的伪代码

pseudo-code

这是我的分析:

第 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 举报,一经查实,本站将立刻删除。