पाठ 12 / 42
Graph
Edge से जुड़े nodes — नक्शे, नेटवर्क और निर्भरताओं का मॉडल।
प्रतिनिधित्व
Adjacency list हर node को उसके पड़ोसियों से मैप करती है — O(V+E) स्थान, edge पर तेज़ पुनरावृत्ति। Adjacency matrix V×V grid है — O(V^2) स्थान पर O(1) edge lookup। Sparse graphs (अधिकांश असली) के लिए list बेहतर।
शहर और सड़कें
शहर nodes, सड़कें edges। एकतरफ़ा सड़कें directed graph; टोल लागत edge weight।
बनाएँ और traverse करें
list का dict काफ़ी है। BFS अभारित graph में सबसे छोटा पथ खोजता है; DFS components और cycle खोजता है।
from collections import defaultdict, deque
g = defaultdict(list)
for u, v in edges:
g[u].append(v)
g[v].append(u) # undirected
def bfs(start):
seen, q = {start}, deque([start])
while q:
node = q.popleft()
for nb in g[node]:
if nb not in seen:
seen.add(nb)
q.append(nb)
return seenएल्गोरिदम मेन्यू
अभारित सबसे छोटा पथ → BFS। भारित, गैर-ऋणात्मक → Dijkstra। निर्भरता के साथ क्रम → topological sort। कनेक्टिविटी समूह → Union-Find या DFS।