it-swarm.com.ru

Временная сложность алгоритма Крускала?

Я вычисляю сложность времени для алгоритма Крускала следующим образом (см. Алгоритм в Приложении)

T(n) = O(1) + O(V) + O(E log E) + O(V log V)
     = O(E log E) + O(V log V)
as |E| >= |V| - 1
T(n) = E log E + E log E
     = E log E

Алгоритм CLRS:

enter image description here

Это правильно, или я делаю что-то не так, пожалуйста, скажите.

9
Sonali

Крускал - это О (E log E); ваш вывод прав. Вы также можете сказать O (E log V), потому что E <= V * V, поэтому log (E) <= 2 log (V) (я не знаю, почему я это помню, кроме того, я думаю, что проф на экзамене в один прекрасный момент ...)

10
Bandrami

Поскольку | V | > | E | +1, мы предпочитаем жесткую верхнюю границу с V членами вместо E условий.

    |E| <= |V|²   
.   log |E| < log |V|²   
.   log |E| < 2 log |V| 
.   running time of MST-KRUSKAL is: O(E log V)
4
MOHIT KUMAR

Извините за задержку с ответом.
Время выполнения для алгоритма Крускала равно O (E log E), а не O (E log V).

Так как ребра должны быть отсортированы первыми, и требуется O (E log E), где он доминирует во время выполнения, для проверки, является ли рассматриваемый Edge безопасным Edge или нет, для которого потребуется O (E log V). И | Е | > | V | ((угловой случай, если граф уже является деревом)), поэтому можно предположить, что время выполнения равно O (E log E)

1
letsBeePolite

в строке 5-9 сложность O (E).

  1. O(E)
  2. O(1)
  3. O(1)
  4. O(1)
  5. O(1)

до строки 5 вы правильно рассчитали сложность. Наконец, доминирующим фактором здесь является O (E lg E). Итак, сложность O (E lg E)

0
Syed Ibna Zubayear