gpt4 book ai didi

algorithm - CLRS :33. 1-4 :Show how to determine in O(n*n*lg n) time whether any three points in a set of n points are colinear?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:09 25 4
gpt4 key购买 nike

我正在阅读 CLRS 的计算几何算法书。在练习 33.1-4 中,它要求我们“显示如何在 O(n*n*lg n) 时间内确定一组 n 点中的任意三个点是否共线?”通过一次取三个点并进行叉积,可以在 O(n*n*n) 时间复杂度内轻松完成此操作,但我无法理解如何在 中完成此操作>O(n*n*lg n) 时间。需要帮助。

最佳答案

slope(P, Q),对于任意两点 PQ,是通过 的直线的斜率>PQ。现在,三个点,比如 PQR,共线当且仅当 slope(P,Q) = slope(P, R)。因此,固定 P,您可以在 O(n*log n) 时间内确定是否还有另外两个点 QR 这样 PQR 就是一行。这很容易通过为 n 点集中的所有其他点 Q 计算 slope(P,Q) 并检查是否有任何重复 - 使用类似集合的结构或只是排序并检查重复项。现在,遍历 P 的所有选择,为您提供 O(n*n*log n) 的运行时间。

关于algorithm - CLRS :33. 1-4 :Show how to determine in O(n*n*lg n) time whether any three points in a set of n points are colinear?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com