我有一个程序,其中代码的一个元素具有复杂度O(| V | *(| V | + | E |))(其中V是我的图中的顶点,E是边),并且我的代码的另一部分具有复杂度O(n log n)。我似乎无法弄清楚我的计划的总体复杂程度是什么? O(n log n)是否大于O(| V | *(| V | + | E |))?
答案 0 :(得分:1)
在图算法的上下文中,我们通常表示| V |由n和| E |由米。因此,您的算法有两个部分,一个花费时间O(n(n + m)),一个花费时间O(n log n)。第一部分可以简化为O(n 2 + nm)。因此总运行时间为O(n 2 + nm + n log n)。由于n log n = o(n 2 ),这反过来简化为O(n 2 + nm),这给出了整体运行时间。
如果您假设图形已连接,那么您可以进一步简化此向下O(nm),因为您知道m至少为n - 1.
希望这有帮助!