当我被要求设计O(| E |)算法时,是否可以设计O(| E | + | V |)算法并将其称为O(| E |)? (如果图表已连接)
答案 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 |)。