O(| E | + | V |)算法是否被认为是O(| E |)?

时间:2017-05-06 06:51:36

标签: time-complexity complexity-theory

当我被要求设计O(| E |)算法时,是否可以设计O(| E | + | V |)算法并将其称为O(| E |)? (如果图表已连接)

2 个答案:

答案 0 :(得分:1)

简答:
O(|E|)指的是每条边应该只被遍历(处理)一次,所以是的,你也应该处理O(|E|+|V|)复杂度的顶点。

答案稍长:
你需要问自己的问题是:

如果我将边数量加倍(对于大边数),算法将花费大约两倍的时间来执行。如果答案是,那么您的复杂性为O(|E|+|V|)

最后请注意,在关联图表中,|V|的最大金额为|E|-1。因此,在更糟糕的情况下,O(|E|+|V|)是[{1}},O(2|E|)O(|E|)

相同

答案 1 :(得分:-1)

如果连接了图形,则边数(即| E |)至少比顶点数少一个(即| E |> = | V | -1)。因此,| E | + | V | = O(| E | + | E | +1)= O(| E |)。因此,如果您的算法是O(| E |),它也是O(| E | + | V |)。