一尘不染

给定一组点,找出三个点是否共线

algorithm

找出一组点中说n的三个点是否共线的最佳算法是什么?如果复杂性不小的问题,也请解释一下。

由于
巴拉


阅读 276

收藏
2020-07-28

共1个答案

一尘不染

如果您能提出优于O(N ^ 2)的算法,则可以发布它!

这个问题是3-SUM
Hard
,是否存在次二次算法(即优于O(N ^
2))是一个开放问题。许多常见的计算几何问题(包括您自己的问题)已证明是3SUM难题,并且这类问题正在不断增加。像NP-Hardness一样,3SUM-
Hardness的概念已被证明可用于证明某些问题的“韧性”。

有关您的问题很难解决3SUM的证明,请参见此处的出色的综合文章:http
:
//www.cs.mcgill.ca/~jking/papers/3sumhard.pdf

您的问题出现在上述论文的第3页上(通常称为3-POINTS-ON-LINE)。

因此,当前最知名的算法是O(N ^ 2),您已经有了:-)

2020-07-28