找出一组点中说n的三个点是否共线的最佳算法是什么?如果复杂性不小的问题,也请解释一下。
由于 巴拉
如果您能提出优于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),您已经有了:-)