If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Analiza przeszukiwania wszerz (BFS)

Jak długo trwa przeszukiwanie wszerz grafu ze zbiorem wierzchołków V i zbiorem krawędzi E? Odpowiedź to czas o złożoności O, left parenthesis, V, plus, E, right parenthesis.
Zobaczmy, co oznacza czas O, left parenthesis, V, plus, E, right parenthesis. Załóżmy na chwilę, że vertical bar, E, vertical bar, is greater than or equal to, vertical bar, V, vertical bar, co jest prawdą dla większości grafów, zwłaszcza dla tych, dla których używamy przeszukiwania wszerz. Zatem vertical bar, V, vertical bar, plus, vertical bar, E, vertical bar, is less than or equal to, vertical bar, E, vertical bar, plus, vertical bar, E, vertical bar, equals, 2, dot, vertical bar, E, vertical bar. Ponieważ ignorujemy stałe czynniki w notacji asymptotycznej widzimy, że kiedy vertical bar, E, vertical bar, is greater than or equal to, vertical bar, V, vertical bar, O, left parenthesis, V, plus, E, right parenthesis naprawdę oznacza O, left parenthesis, E, right parenthesis. Jeśli jednak vertical bar, E, vertical bar, is less than, vertical bar, V, vertical bar, wtedy vertical bar, V, vertical bar, plus, vertical bar, E, vertical bar, is less than or equal to, vertical bar, V, vertical bar, plus, vertical bar, V, vertical bar, equals, 2, dot, vertical bar, V, vertical bar, zatem O, left parenthesis, V, plus, E, right parenthesis naprawdę oznacza O, left parenthesis, V, right parenthesis. Możemy połączyć oba przypadki, mówiąc, że O, left parenthesis, V, plus, E, right parenthesis naprawdę oznacza O, left parenthesis, \max, left parenthesis, V, comma, E, right parenthesis, right parenthesis. Ogólnie, mając parametry x i y, wtedy O, left parenthesis, x, plus, y, right parenthesis naprawdę oznacza O, left parenthesis, \max, left parenthesis, x, comma, y, right parenthesis, right parenthesis.
(Zauważ, że graf jest spójny Jeśli istnieje ścieżka z każdego wierzchołka do wszystkich innych wierzchołków. Aby graf był spójny musi posiadać co najmniej vertical bar, V, vertical bar, minus, 1 wierzchołków. Graf spójny, w którym vertical bar, E, vertical bar, equals, vertical bar, V, vertical bar, minus, 1 nazywamy drzewem.)
Dlaczego przeszukiwanie grafu wszerz działa w czasie O, left parenthesis, V, plus, E, right parenthesis? Zainicjalizowanie odległości i przodków dla każdego wierzchołka zajmuje O, left parenthesis, V, right parenthesis (właściwie \Theta, left parenthesis, V, right parenthesis) czasu. Każdy wierzchołek jest odwiedzany co najwyżej raz, ponieważ tylko za pierwszym razem, gdy jest osiągany jego odległość posiada wartość null, zatem każdy wierzchołek jest dodany do kolejki co najwyżej raz. Ponieważ przeglądamy krawędzie wychodzące z wierzchołka jedynie, gdy badamy dany wierzchołek, każda krawędź jest sprawdzana co najwyżej dwa razy, raz dla każdego wierzchołka z którym się łączy. Zatem przeszukiwanie grafu wszerz zajmuje O, left parenthesis, V, plus, E, right parenthesis czasu odwiedzając wszystkie wierzchołki.

Materiał powstał we współpracy profesorów z Dartmouth Computer Science Thomasa Cormena i Devina Balkcoma oraz zespołu nauczycieli informatyki Khan Academy. Materiał jest udostępniony na licencji CC-BY-NC-SA.

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.