Wolna encyklopedia
| Niniejszy artykuł jest częścią cyklu teoria grafów.
|
|
Najważniejsze pojęcia Wybrane klasy grafów Algorytmy grafowe Zagadnienia przedstawiane jako problemy grafowe Inne zagadnienia |
| edytuj ten szablon |
| Przeszukiwanie wszerz | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Kolejność odwiedzania węzłów | ||||||||||
| Podstawowe informacje | ||||||||||
|
Przeszukiwanie wszerz (ang. Breadth-first search, w skrócie BFS) – w informatyce algorytm przeszukiwania grafu używany do przechodzenia lub przeszukiwania drzewa lub grafu. Algorytm zaczyna od korzenia i odwiedza wszystkie połączone z nim węzły. Następnie odwiedza węzły połączone z tymi węzłami i tak dalej, aż do odnalezienia celu.
Spis treści |
Algorytm
funkcja przeszukiwanie_wszerz (Start, Cel) {
dodaj_do_kolejki(Kolejka, Start)
dopóki nie_pusta(Kolejka) {
Wierzchołek:= pobierz_z_kolejki(Kolejka)
jeżeli Wierzchołek = Cel {
zwróć Wierzchołek /*kod poniżej nie wykonuje się*/
}
dla każdego Syna w Wierzchołek {
jeżeli nie_odwiedzony(Syn) {
zapamiętaj_że_odwiedzony(Syn)
dodaj_do_kolejki(Kolejka, Syn)
}
}
}
}
Właściwości
Złożoność pamięciowa
Ponieważ trzeba utrzymywać listę węzłów które się już odwiedziło, złożoność pamięciowa przeszukiwania wszerz wynosi O(|V| + |E|), gdzie |V| to liczba węzłów, a |E| to liczba krawędzi w grafie. Z powodu tak dużego zapotrzebowania na pamięć przeszukiwanie wszerz jest niepraktyczne dla dużych danych.
Złożoność czasowa
Ponieważ w najgorszym przypadku przeszukiwanie wszerz musi przebyć wszystkie krawędzie prowadzące do wszystkich węzłów, złożoność czasowa przeszukiwania wszerz wynosi O(|V| + |E|), gdzie |V| to liczba węzłów, a |E| to liczba krawędzi w grafie.
Kompletność
Przeszukiwanie wszerz jest kompletne, to znaczy że gdy istnieje rozwiązanie, przeszukiwanie wszerz odnajdzie je niezależnie od grafu.
Zastosowania przeszukiwania wszerz
Przeszukiwanie wszerz może zostać użyte do rozwiązania wielu problemów z teorii grafów, dla przykładu:
- Odnalezienie wszystkich połączonych węzłów w grafie.
- Odnalezienie najkrótszej ścieżki między dwoma wierzchołkami (nie uwzględnia wag krawędzi w grafie ważonym).