Căutare spanning copac în lățime și adâncime, prima căutare

Dacă luăm ca nod V0 Vb. puteți vizita în partea de sus, în ordine

Notă 1. După ce a vizitat site-ul nou, puteți vizita vecinii unui nou nod într-o ordine aleatorie. Aici vom folosi un acord care, dacă este necesar, selectați nodurile sunt vizitate în ordine alfabetică.

Notă 2. Dacă marcați un arc care leagă nodul vizitat nodul vizitat anterior, toate aceste arce marcate formează un arbore de acoperire a graficului G; în cazul în care fiecare arc are o lungime de 1, arborele se întinde este un pom al celor mai scurte trasee din V0 în toate celelalte noduri G.

DFS, DFS. Alegerea v0 arbitrar. și apoi urmați marginea E01 la nodul Vi. Apoi am urmat de nervură E12 V2 la nodul adiacent V1. În cazul în general, după ce a vizitat nod Vi urmați de-a lungul marginii eij în nodul Vj. În cazul în care Vj nu a fost vizitat anterior. În continuare, se aplică recursiv acest proces pentru a Vj și selectați o margine în EJK nod Vk. În cazul în care vârful Vj a avut deja, apoi înapoi la VI și selectați o altă margine. Dacă tot incidentul marginile VI. deja selectat și nu puteți găsi un singur nod nou, apoi ne întoarcem de la Vj la vârf anterior, urmat de un Vi. și să verifice incidentul coastele să.

Dacă în fig. 11 începe din partea de sus a Vb. este posibil pentru a vizita site-urile în ordinea următoare (ordonarea este determinată de mai mult de un fel):

Arc, urmând în noile vârfuri pentru a forma un arbore de acoperire. Acest arc: EBC. eca. DCE. ede. EEF.

două moduri de a vizita site-uri pot fi comparate. Atunci când BFS trebuie să verifice toate incidentul marginile la nodul înainte de trecerea la noul nod. Astfel, operația se realizează succesiv din nodurile ventilatorului. Când DFS trecerea la un nou nod se realizează numai după un nou nod este găsit, și există adâncimea de penetrare în grafic. Numai atunci când toate marginile sunt în partea de sus a vechi, se duce înapoi la nodul anterior și din DFS a fost reluată din nou.

BFS și DFS algoritmi au aceeași complexitate pentru cazul cel mai nefavorabil. Complexitatea algoritmului pentru cel mai rău caz - aceasta este o măsură aproximativă a numărului maxim de operații necesare pentru realizarea algoritmului. Această funcție de dimensiunea datelor de intrare direct în acest caz au fost prezentate grafic (de exemplu, D (n)). Deoarece algoritmii au aceeași complexitate, nici unul dintre ele are avantaje față de celălalt. Cu toate acestea, pentru un număr de grafice specifice, un algoritm ar putea produce un lemn de acoperire mai bună decât alta. De exemplu, căutați „profunzime“ eficient pentru Count „roți“ și căutați „lățime“ pentru contele „cruce malteză“.