В соответствии с моим пониманием, я вычислил временную сложность алгоритма Дейкстры как обозначение большой O, используя приведенный ниже список смежности. Это не получилось так, как предполагалось, и это заставило меня понять это шаг за шагом.Понимание расчета сложности времени для алгоритма Дейкстры
- Каждая вершина может быть подключен к (V-1) вершин, следовательно, число смежных ребер в каждой вершине V - 1. Допустим, Е представляет собой V-1 ребер, соединенных с каждой вершиной.
- Поиск & Обновление веса каждой соседней вершины в куче min равно O (log (V)) + O (1) или
O(log(V))
. - Следовательно, из шагов 1 и 2 выше сложность времени для обновления всех смежных вершин вершины равна E * (logV). или
E*logV
. - Следовательно, временная сложность для всех V-вершин V * (E * logV) i.e
O(VElogV)
.
Но сложность времени для алгоритма Дейкстры равна O (ElogV). Зачем?
спасибо, получил вашу точку, смежныеДеги * totalVertices = totalEdges (E). но вы можете немного рассказать о том, что на самом деле означает более жесткая привязка/оценка. –
@MeenaChaudhary, точнее 'maxAdjacentEdgesOfAVertex * totalVertices> = totalEdges', и именно это дает более жесткую привязку. Более жесткая привязка означает приближение к истине. Например, если алгоритм выполняет операции «n + 10», вы можете сказать, что это «O (n^2)», который является истинным, или «O (nlogn)», который также является истинным. Но это также «O (n)», которая является более жесткой, чем две другие. Наименьшая возможная граница называется 'Θ', поэтому в приведенном выше примере« n + 1 = Θ (n) ». (Определение 'Θ' - это как верхняя, так и нижняя граница) – Shahbaz
@Shahbaz. Чтобы быть понятным, вы имеете в виду' E * log [2] (V) ', (log with base 2) правильно? Что происходит от принятия двоичной кучи, чтобы помочь отслеживать вещи? – SeldomNeedy