3.5.10 · HinglishGraphs

Dijkstra's algorithm — greedy, priority queue, O((V+E) log V) — no negative edges

1,690 words8 min readRead in English

3.5.10 · Coding › Graphs

Single-source shortest paths ek aisi graph mein jahan non-negative edge weights hon.


WHAT hai yeh problem?

Hum ek array rakhte hain jahan hamare abhi tak ka best known distance hai. Yeh sab ke liye se shuru hota hai, sivaay ke, aur jab hum shorter routes discover karte hain to hum ise chota karte hain (relaxation).


WHY greedy kaam karta hai? (key derivation)

Claim (wo invariant jo hume prove karna hai): Jab hum frontier se smallest tentative distance wale vertex ko pop karte hain, tab pehle se hi true shortest distance hai.


HOW: algorithm

dijkstra(G, s):
    dist[v] = INF for all v;  dist[s] = 0
    PQ = min-heap with (0, s)
    while PQ not empty:
        (d, u) = PQ.pop_min()
        if d > dist[u]: continue        # stale entry, skip
        for each edge (u, v, w):
            if dist[u] + w < dist[v]:
                dist[v] = dist[u] + w
                PQ.push((dist[v], v))    # lazy: leaves old entry behind
    return dist
Figure — Dijkstra's algorithm — greedy, priority queue, O((V+E) log V) — no negative edges

Complexity — derived, memorized nahi

Har edge zyada se zyada ek push trigger kar sakta hai (har successful relaxation pe ek), isliye heap mein zyada se zyada entries hoti hain.

  • Pops: zyada se zyada pops, har ek (heap size hai, aur ).
  • Pushes: zyada se zyada , har ek .
  • Initialization: .

Worked example

Graph (directed): A→B(4), A→C(1), C→B(2), C→D(5), B→D(1), source A.

Step Pop dist updates dist after
init A0 B∞ C∞ D∞
1 A(0) C: 0+1=1, B: 0+4=4 A0 B4 C1 D∞
2 C(1) B: 1+2=3<4 ✓, D: 1+5=6 A0 B3 C1 D6
3 B(3) D: 3+1=4<6 ✓ A0 B3 C1 D4
4 D(4) none done

C ko B se pehle kyun pop kiya? Step 1 ke baad, heap mein B(4) aur C(1) hain. Hum minimum, C ko pop karte hain. Yeh greedy order hi correctness guarantee karta hai — aur yahi wajah hai ki C ki relaxation baad mein B ko 4 se 3 pe improve karti hai.



Recall Feynman: ek 12-saal ke bachche ko explain karo

Tum ghar pe ho aur town ke har ghar tak pahunchne ka sabse fast time jaanna chahte ho. Tum ek timer shuru karte ho. Roads alag-alag minutes lagte hain chalne ke liye. Har ghar pe tumhara ek "abhi tak ka best time" wala sticky note hai. Tum hamesha us nearest ghar ko jaate ho jise tune abhi finalize nahi kiya, kyunki ek baar jab tum wahaan fast way se pahunch gaye, koi slower ghar tumhe shortcut nahi de sakta (sab roads positive time lete hain — koi magic road nahi hai jo minutes wapas de). Tum use "done" stamp karte ho aur uske neighbors ke sticky notes update karte ho. Repeat. Priority queue bas ek smart tarika hai jisse hamesha nearest not-done ghar quickly milta hai.


Flashcards

Dijkstra kaun si problem solve karta hai?
Source se ek graph mein saare vertices tak single-source shortest paths, jahan non-negative edge weights hon.
"Relaxation" kya hai?
update karna jab ke through jaana sasta ho.
Dijkstra ko non-negative edges kyun chahiye?
Correctness proof use karta hai "baaki path ka weight ≥ 0 hai" takki popped min-distance vertex already final ho; negative edges ise tod dete hain kyunki ek longer path sasta ho sakta hai.
Ek vertex ka distance kab finalized hota hai?
Jab use priority queue se popped kiya jaata hai non-stale distance ke saath (push/relax hone pe nahi).
Binary heap ke saath time complexity kya hai?
.
Fibonacci heap kaun si complexity deta hai?
amortized decrease-key ke zariye.
if d > dist[u]: continue line kya karti hai?
Lazy-deletion approach mein stale heap entries skip karti hai (ek vertex multiple baar push hota hai; sirf uska pehla/best pop matter karta hai).
Negative edges ke liye kaun sa algorithm use karein?
Bellman-Ford, (ya all-pairs ke liye Johnson's).
Unweighted shortest path ke liye kaun sa algorithm?
BFS, — koi heap ki zaroorat nahi.
Greedy invariant proof mein kya hai?
tak true shortest path pe pehla unfinalized vertex; jo finalized predecessor ke zariye already relax ho chuka hai.

Connections

  • Bellman-Ford algorithm — negative edges handle karta hai,
  • BFS — Dijkstra BFS ban jaata hai jab saare weights 1 ke barabar hon
  • A* search — Dijkstra + admissible heuristic
  • Priority Queue (Binary Heap) ke peeche ka engine
  • Greedy algorithms — exchange/invariant arguments greedy ko kyun justify karte hain
  • Prim's algorithm — same heap-driven skeleton, alag relaxation (MST nahi SSSP)
  • Johnson's algorithm — negative-edge graphs pe Dijkstra run karne ke liye reweighting

Concept Map

solved by

maintains

updated by

picks closest via

pops min

guaranteed by

proven using

removing breaks

lazy deletion

gives

shrinks

SSSP Problem

Dijkstra Greedy

dist array

Relaxation Rule

Min-Heap Priority Queue

Finalize Vertex

Invariant: dist is true

Non-Negative Edges

Fails on Negative Edges

Skip Stale Entries

O of V+E log V