Przeszukiwanie w głąb - Google

Przeszukiwanie w głąb

Z Wikipedii

Skocz do: nawigacji, szukaj
Niniejszy artykuł jest częścią cyklu teoria grafów.




Najważniejsze pojęcia
graf
drzewo
podgraf
cykl
klika
stopień wierzchołka
dopełnienie grafu
obwód grafu
pokrycie wierzchołkowe
liczba chromatyczna
indeks chromatyczny
izomorfizm grafów
homeomorfizm grafów


Wybrane klasy grafów
graf pełny
graf spójny
drzewo
graf dwudzielny
graf regularny
graf eulerowski
graf hamiltonowski
graf planarny


Algorytmy grafowe
A*
Bellmana-Forda
Breadth-first search
Depth-first search
Dijkstry
Fleury'ego
Floyda-Warshalla
Johnsona
Kruskala
Prima
przeszukiwanie grafu
najbliższego sąsiada


Zagadnienia przedstawiane jako problemy grafowe
problem komiwojażera
problem chińskiego listonosza
problem kojarzenia małżeństw


Inne zagadnienia
kod Graya
diagram Hassego


edytuj ten szablon
Przeszukiwanie w głąb
Kolejność odwiedzania  węzłów
Kolejność odwiedzania węzłów
Podstawowe informacje
Klasa algorytmu: przeszukiwania
Struktura danych: graf, drzewo
Złożoność czasowa: O( | V | + | E | )
Złożoność pamięciowa: O( | V | + | E | )
Kompletny: tak

Przeszukiwanie w głąb (ang. Depth-first search, w skrócie DFS) – w informatyce algorytm przeszukiwania grafu używany do przechodzenia lub przeszukiwania drzewa lub grafu. Przeszukiwanie zaczyna się od korzenia i porusza się w dół do samego końca gałęzi, po czym wraca się o jeden poziom i próbuje kolejne gałęzie itd.

Spis treści

[edytuj] Przykład

Przyjrzyjmy się poniższemu grafowi:

Image:graph.traversal.example.png.

Zakładając że najpierw wybiera się węzły z lewej strony, później te z prawej, przeszukiwanie zaczynając od A, odwiedzi się węzły w tej kolejności:

A, B, D, B, F, E, F, B, A, C, G.

[edytuj] Właściwości

[edytuj] Złożoność pamięciowa

Złożoność pamięciowa przeszukiwania w głąb jest o wiele mniejsza niż przeszukiwania wszerz.

[edytuj] Złożoność czasowa

Złożoność czasowa obu algorytmów jest proporcjonalna do sumy liczby wierzchołków i liczby krawędzi w przeszukiwanym grafie.

[edytuj] Kompletność

[edytuj] Zastosowania algorytmu

Przeszukiwanie w głąb jest często stosowanym algorytmem w teorii grafów. Używa się go m.in. do:

  • Znajdywania najkrótszych ścieżek między dwoma wierzchołkami w drzewie.
  • Sprawdzania, czy istnieje ścieżka między dwoma wierzchołkami w grafie.
  • Wyznaczania spójnych składowych.

Rozwiązania poniższych problemów teoriografowych opierają się na przeszukiwaniu w głąb:

Ponadto algorytm ten jest często spotykany w rozwiązaniach typu brute force problemów z innych dziedzin. Bazuje na nim zdecydowana większość algorytmów służących do przeglądania drzewa gry, np. min-max, czy też alpha-beta.

[edytuj] Przykład w C++

Implementacja DFS w C++:

void DFS(vector< vector<int> > &graf,int wierzcholek,vector<bool> &uzyto) {
	vector<int>::iterator iter; //iterator po sąsiadach wierzchołka
	uzyto[wierzcholek] = true; //kolorujemy odwiedzony wierzchołek
	//na tym węźle jesteśmy
	cout <<wierzcholek<<"\n";
	//przejście po sąsiadach wierzchołka
	for (iter=graf[wierzcholek].begin(); iter!=graf[wierzcholek].end(); iter++) { 
		//jeżeli wierzchołek nie odwiedzony, to wywołujemy DFS rekurencyjnie
		if (uzyto[*iter] == false) 
			DFS(graf,*iter,uzyto);
	}
}
 
void DFS(vector< vector<int> > &graf, //wektor wektorów, w którym zapisujemy sąsiadów wierzchołka	
	 int wierzcholek=0 //wierzchołek, od którego startujemy
) {
	vector <bool> uzyto(graf.size(),false);
	DFS(graf,wierzcholek,uzyto);
}

[edytuj] Bibliografia


Obama zamierza stworzyć 2,5 mln miejsc pracy
Amerykański prezydent-elekt Barack Obama oświadczył w sobotę, iż zamierza w ciągu pierwszych dwóch lat kadencji stworzyć 2,5 mln miejsc pracy.
APEC: wolny handel pozwoli zwalczyć kryzys
Przywódcy państw Azji i obu Ameryk, uczestniczący w szczycie państw regionu w Limie, uznali w sobotę, że wolny handel i reformy międzynarodowych instytucji kredytowych pozwolą światu na uniknięcie głębszego kryzysu.
"Bogate kraje wykupują ziemię w krajach biednych"
Rządy i narodowe korporacje z bogatych państw wykupują miliony hektarów ziemi uprawnej w krajach rozwijających się, by zapewnić sobie dostawy żywności w dłuższym okresie - pisze w sobotnim wydaniu brytyjski dziennik "The Guardian".
Berlusconi: nadchodzi kryzys, który może być bardzo głęboki
Premier Włoch Silvio Berlusconi po raz pierwszy ostrzegł swych rodaków, że nadchodzi kryzys, który - jak dodał - może być "bardzo głęboki".
Szczyt APEC: przywódcy 21 państw radzą w Limie jak pokonać kryzys
Przywódcy 21 krajów z regionu Azji i Pacyfiku, którzy rozpoczynają w sobotę wieczorem (czasu polskiego) dwudniowe obrady w Limie, uznają zagrożenie dla świata, jakie stanowi obecny kryzys gospodarczy.
Linki: Strona gwna