Derinlemesine arama bir yol bulur ama en kısasını bulmaz. En kısa yol için sırayı değiştirirsin: önce başlangıcın bütün komşuları, sonra onların komşuları. Suya atılan taşın halkaları gibi dışarı yayılırsın; bir düğüme ilk vardığında oraya en az adımla varmışsındır. Buna genişlemesine arama (BFS) denir.
from collections import dequequeue = deque([(start, 0)])seen = {start}while queue:node, steps = queue.popleft()if node == goal:return stepsfor nxt in graph[node]:if nxt not in seen:seen.add(nxt)queue.append((nxt, steps + 1))return -1
Bu, her adımın aynı "maliyette" olduğu durumlar için geçerlidir (ızgarada bir kare, labirentte bir hamle). Enerjin sınırlıysa ya da en yakın hedefi arıyorsan kuş uçuşu mesafe seni yanıltır: duvarın arkasındaki yakın hedef, uzaktaki açık hedeften daha pahalı olabilir. Mesafeyi BFS ile ölç.