The most common version of Dijkstra's algorithm assumes that you have access to some kind of priority queue structure that supports the following operations:
- make-heap (s, n): n & infin;, node s, 0.
- dequeue-min(): .
- reduce-key (obj, key): obj , .
Dijkstra make-heap, O (n) dequeue-min, O (m) , n - , m - . O (T mh + nT deq + mT dk), T mh, T deq, T dk - () make-heap, dequeue .
, . : . .
- O (n): node, n - 1 . dequeue-min - O (1): . - O (n), node, , , , , ( case), . , O (n + n + nm) = O (mn).
O (n), n . dequeue-min O (n), , . O (1), node . , O (n + n 2 + m) = O (n 2 + m) = O (n 2), O (n 2). .
O (n), heapify . - O (log n), - O (log n) ( ). , O (n + n log n + m log n) = O (m log n), , m & ge; .
. , . make- O (n), dequeue-min O (log n) - () O (1) . O (n + n log n + m) = O (m + n log n), , .
, ! . , " " , , .