Я пытаюсь разработать алгоритм, который сможет найти минимальное остовное дерево из графа. Я знаю, что для него уже существует много существующих алгоритмов. Однако я пытаюсь исключить сортировку ребер, требуемую в алгоритме Крускала. Алгоритм, который у меня есть разработанный до сих пор имеет часть, где требуется подсчет непересекающихся множеств, и мне нужен для этого эффективный метод. После долгих исследований я пришел к выводу, что единственным возможным способом является использование BFS или DFS, который имеет сложность O (V + E), тогда как алгоритмы Крускала имеют сложность O (ElogE). Теперь мой вопрос: какой из них лучше, O (V + E) или O (ElogE)?
Какой из них лучше O(V+E) или O(ElogE)?
Ответы (1)
Как правило, E = O(V^2)
, но эта граница не может быть жесткой для всех графиков. В частности, в разреженном графе E = O(V)
, но сложность алгоритма обычно указывается как значение для наихудшего случая.
O(V + E)
— это способ указать, что сложность зависит от количества ребер. В разреженном графе O(V + E) = O(V + V) = O(V)
, а в плотном графе O(V + E) = O(V + V^2) = O(V^2)
.
Другой способ взглянуть на это — увидеть, что в нотации с большой буквой «О» O(X + Y)
означает то же самое, что и O(max(X, Y))
.
Обратите внимание, что это полезно только тогда, когда V
и E
могут иметь одинаковую величину. Для алгоритма Крускала доминирующим фактором является то, что вам нужно отсортировать список ребер. Независимо от того, есть ли у вас разреженный или плотный граф, этот шаг доминирует над всем, что может быть O(V)
, поэтому просто пишут O(E lg E)
вместо O(V + E lg E)
.
V
в любом случае не имеет значения, поэтому просто пишут O(E lg E)
, а не O(V + E lg E)
.
- person chepner; 01.05.2018
V
можно выразить черезE
по формуле Эйлера. ПоэтомуO(V+E)
на самом деле простоO(E)
. СO(n) < O(nlogn)
,O(E + V) ~= O(E) < O(ElogE)
. Я не уверен в своей математике, поэтому публикую это как комментарий, а не ответ - person Srini   schedule 01.05.2018V <= E
- person Rerito   schedule 01.05.2018F
V - E + F = 2
для формулы Эйлера для плоских графов. Но я полагаю, что если бы ОП или кто-то еще мог выяснить, как с этим справиться, или доказать, чтоV
по-прежнему имеет линейную связь сE
, то я думаю, что они все еще могли бы опираться на этот аргумент. - person Srini   schedule 01.05.2018O(min(V+E, E Log E))
, которая всегда является лучшей. - person Yves Daoust   schedule 01.05.2018