是否有可能找到可以从长度列表中形成的三角形数量,而不是(n选择3)时间?

时间:2016-10-04 15:00:50

标签: algorithm language-agnostic time-complexity complexity-theory

这与我正在处理的一个更大的问题有关。

例如,假设我们有一个列表

9 5 6 1

可能的三角形的边长

(9,5,6)
(9,6,1)
(9,5,1)
(5,6,1)

和有效的(由三角不等式)是

(9,5,6)
(5,6,1)

是否可以在优于 - O(n choose 3)时间内找到那些有效的?

3 个答案:

答案 0 :(得分:11)

一般情况下,答案是:想象一下你

 1, 1 - ε, 1 - 2 * ε, ..., 1 - (n - 1) * ε 

在这种情况下,所有3个项目的组合

 n * (n - 1) * (n - 2) / 6 = O(n**3)

不同的并使有效的三角形,并且枚举(和输出的复杂性O(n**3) em>)他们

答案 1 :(得分:3)

首先对您的清单进行排序。

现在我们不需要完成O(n ^ 3)搜索,而只需要在O(n ^ 2)中搜索一对点并找到第三个点(可能多于一个点,所以你需要检查通过二分搜索来获得下限和上限。

总的来说,新的复杂性是O(n ^ 2 log(n))

答案 2 :(得分:1)

没有。你可以拥有一组任意大的输入,其中每个三元组都是一个有效的三角形。