Мне сложно понять, почему сложность алгоритма Дейкстры с кучей равна O ((m + n) * log (n)), где m - число ребер и n - число вершин.Время выполнения алгоритма Дейкстры - приоритетная очередь (куча)
Мое понимание:
Теперь я знаю, что нужно сделать, п удалить мин. (Каждый снимок min берет log (n) из кучи).
Затем нужно сделать m обновить ключи. (Каждый ключ обновления принимает log (n)).
Отсюда и ответ. Является ли моя концепция понятной? В противном случае вы можете объяснить, как получить временную сложность Алгоритма Дейкстры.
Сложность Dijsktra с кучей O (m + n * log (n)) (см. Http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm), а не O ((m + n) log (n) , поэтому ваши рассуждения кажутся правильными. –
Я не использую кучу Фибоначчи. –
В этом разделе приведена математика для других типов куч: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Running_time –