Big o Can';无法确定最大的复杂性

Big o Can';无法确定最大的复杂性,big-o,time-complexity,graph-algorithm,Big O,Time Complexity,Graph Algorithm,我有一个程序,其中代码的一个元素的复杂度为O(|V |*(|V |+| E |))(其中V是图中的顶点,E是边),代码的另一部分的复杂度为O(n log n)。我似乎不知道我的程序的总复杂性是多少?O(n对数n)是否大于O(|V |*(|V |+| E |)) 在图算法的上下文中,我们通常用n表示| V |,用m表示| E |。因此,您的算法有两个部分,一个是花费时间O(n(n+m))和一个花费时间O(n logn)。第一部分可以简化为O(n2+nm)。因此,总运行时间为O(n2+nm+n lo

我有一个程序,其中代码的一个元素的复杂度为O(|V |*(|V |+| E |))(其中V是图中的顶点,E是边),代码的另一部分的复杂度为O(n log n)。我似乎不知道我的程序的总复杂性是多少?O(n对数n)是否大于O(|V |*(|V |+| E |))

在图算法的上下文中,我们通常用n表示| V |,用m表示| E |。因此,您的算法有两个部分,一个是花费时间O(n(n+m))和一个花费时间O(n logn)。第一部分可以简化为O(n2+nm)。因此,总运行时间为O(n2+nm+n log n)。由于n logn=o(n2),这反过来又简化为o(n2+nm),这将给出您的总体运行时间

如果假设图是连通的,那么可以进一步简化为O(nm),因为你知道m至少是n-1


希望这有帮助

n和| V |或| E |的值之间有联系吗?在某些情况下,字母n表示| V |,但我不确定这里是否也是这样。是的,我想是这样。logn部分是我使用Collections.sort的地方,我排序的列表是| V |长的(所有顶点)。非常感谢!那么n log n与n^2相同?我不知道,谢谢:)n log n与n^2不一样。表示法“n logn=o(n^2)”意味着“n logn的增长严格渐近地慢于函数n^2”。因此,您可以删除n logn项,因为它主要由n^2项控制。您可以证明删除n lg n项是正确的,而无需使用很少的oh。即使对于一些与n^2渐近相同的函数g(n),
O(n^2+g(n))=O(2n^2)=O(n^2)
@chepner这是真的。我想特别强调的是,n logn的增长速度严格低于n^2,所以我选择使用little-o表示法。