Jak korzystać z BFS, aby znaleźć najkrótszą ścieżkę?
Jak korzystać z BFS, aby znaleźć najkrótszą ścieżkę?

Wideo: Jak korzystać z BFS, aby znaleźć najkrótszą ścieżkę?

Wideo: Jak korzystać z BFS, aby znaleźć najkrótszą ścieżkę?
Wideo: Shortest Path using BFS Algorithm | Unweighted Graph | BFS | DFS | GATE | DSA 2024, Listopad
Anonim

Do odnaleźć ten najkrótsza droga wystarczy zacząć od źródła i wykonać a najpierw szerokość wyszukaj i zatrzymaj się, kiedy odnaleźć Twój węzeł docelowy. Jedyną dodatkową rzeczą, którą musisz zrobić, to mieć tablicę previous[n], która będzie przechowywać poprzedni węzeł dla każdego odwiedzonego węzła. Poprzednie źródło może mieć wartość null.

Zapytano również, dlaczego BFS znajduje najkrótszą ścieżkę?

Mówimy, że BFS to algorytm do wykorzystania, jeśli chcemy znajdź najkrótszą ścieżkę w nieskierowanym, nieważonym wykresie. Roszczenie o BFS jest to, że gdy węzeł zostanie odkryty po raz pierwszy podczas przemierzania, ta odległość od źródła zrobiłbym daj nam najkrótsza droga . Tego samego nie można powiedzieć o wykresie ważonym.

Wiesz też, gdzie jest najkrótsza ścieżka w labiryncie? Znajdź najkrótszą drogę w labiryncie

  1. Idź w górę: (x, y) –> (x – 1, y)
  2. Idź w lewo: (x, y) –> (x, y – 1)
  3. Idź w dół: (x, y) -> (x + 1, y)
  4. Idź w prawo: (x, y) -> (x, y + 1)

Warto też wiedzieć, czy możemy użyć DFS do znalezienia najkrótszej ścieżki?

Nie, ty Nie mogę użyj DFS, aby znaleźć najkrótszą ścieżkę na wykresie nieważonym. Nie jest tak, że odkrycie ten najkrótsza droga między dwoma węzłami jest rozwiązywany wyłącznie przez BFS. Na wykresie nieważonym najkrótsza droga to najmniejsza liczba krawędzi, które muszą przejść od węzłów źródłowych do docelowych.

Jaki jest czas działania BFS?

Złożoność Pierwsze wyszukiwanie wszerz Wyszukiwanie w oparciu o szerokość ma czas trwania z O (V + E) O(V + E) O(V+E), ponieważ każdy wierzchołek i każda krawędź będą sprawdzane raz. W zależności od danych wejściowych do wykresu, O (E) O(E) O(E) może wynosić od O (1) O(1) O(1) do O (V 2) O(V^2) O(V2).

Zalecana: