Prohledávání do šířky je jeden ze základních algoritmů teorie grafů. Jeho hlavní charakteristikou je, že prozkoumává všechny uzly v aktuální vzdálenosti od startu předtím, než se přesune k uzlům, které jsou o krok dále.
Algoritmus využívá datovou strukturu fronta (queue) pracující na principu FIFO (First-In, First-Out).
1. Vložte startovní uzel do fronty a označte jej jako navštívený. 2. Dokud není fronta prázdná: * Vyjměte uzel z čela fronty. * Prozkoumejte všechny jeho sousedy, které jste ještě nenavštívili. * Každého takového souseda označte jako navštíveného a vložte jej na konec fronty.
BFS je základem pro mnoho moderních technologií:
| Vlastnost | BFS (Do šířky) | DFS (Do hloubky) |
|---|---|---|
| Princip | Šíření ve vlnách. | Jde co nejdále v jedné větvi. |
| Datová struktura | Fronta (Queue). | Zásobník (Stack) / Rekurze. |
| Hledání cíle | Vhodné, pokud je cíl blízko startu. | Vhodné, pokud je cíl hluboko v grafu. |
| Nalezení nejkratší cesty | Ano (u neohodnocených grafů). | Ne. |
Analogie: Představte si, že hledáte klíče v domě. BFS znamená, že nejdříve prohledáte celou podlahu v předsíni, pak všechny plochy v předsíni, a teprve pak jdete do další místnosti. DFS znamená, že vběhnete do kuchyně, otevřete jednu skříňku, v ní krabičku, v ní obálku… a až když tam klíče nejsou, vracíte se zpět.