证明了在平面上n个点的凸壳可以用O(n)时间来计算,如果每个点的每个坐标都是形式p/q的有理数,且p和q有界值。
注:这是作业问题。我只想用贾维斯三月,通过某种方式避免扫描所有的点。也许这可以通过向固定的方向(使用有理条件)来检查下一个点的位置来实现。
发布于 2013-02-06 18:48:53
不要使用Jarvis,因为它具有O(nh)的时间复杂性。在最坏的情况下,h可能和n一样大。注意,h是船体上的点数。
相反,您应该使用格雷厄姆扫描,它的时间复杂度是O(nlogn)。在格雷厄姆扫描算法中,时间复杂度主要取决于对所有点的排序。请注意,基于比较的排序算法的时间复杂度为O(nlogn)。
在家庭作业问题中,您可以使用基类而不是任何基于比较的排序算法来击败O(nlogn)的上界,因为有一个假设,即所有点的坐标都是有界的。注意,当要排序的输入为有界基时,可以使用排序,这具有O(n)的复杂性。
有关各种凸壳算法的比较,请参见这里。
https://stackoverflow.com/questions/14735164
复制相似问题