首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >O(n)时间中的凸壳如果每个点的每个坐标是一个有理数

O(n)时间中的凸壳如果每个点的每个坐标是一个有理数
EN

Stack Overflow用户
提问于 2013-02-06 17:28:17
回答 1查看 2.4K关注 0票数 2

证明了在平面上n个点的凸壳可以用O(n)时间来计算,如果每个点的每个坐标都是形式p/q的有理数,且p和q有界值。

注:这是作业问题。我只想用贾维斯三月,通过某种方式避免扫描所有的点。也许这可以通过向固定的方向(使用有理条件)来检查下一个点的位置来实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-06 18:48:53

不要使用Jarvis,因为它具有O(nh)的时间复杂性。在最坏的情况下,h可能和n一样大。注意,h是船体上的点数。

相反,您应该使用格雷厄姆扫描,它的时间复杂度是O(nlogn)。在格雷厄姆扫描算法中,时间复杂度主要取决于对所有点的排序。请注意,基于比较的排序算法的时间复杂度为O(nlogn)

在家庭作业问题中,您可以使用基类而不是任何基于比较的排序算法来击败O(nlogn)的上界,因为有一个假设,即所有点的坐标都是有界的。注意,当要排序的输入为有界基时,可以使用排序,这具有O(n)的复杂性。

有关各种凸壳算法的比较,请参见这里

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14735164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档