Diferența dintre BFS și DFS

BFS vs DFS

Breadth First Search (cunoscută și ca BFS) este o metodă de căutare utilizată pentru a extinde toate nodurile unui anumit grafic. Ea realizează această sarcină căutând fiecare soluție pentru a examina și extinde aceste noduri (sau o combinație de secvențe). Ca atare, un BFS nu utilizează un algoritm euristic (sau un algoritm care caută o soluție prin mai multe scenarii). După ce toate nodurile sunt obținute, ele sunt adăugate la o coadă numită coada First In, First Out. Aceste noduri care nu au fost explorate sunt "stocate" într-un recipient marcat "deschis"; după ce au fost explorate, sunt transportate într-un container marcat "închis".

De asemenea, o primă căutare (cunoscută și sub numele de DFS) este o metodă de căutare care se extinde mai adânc într-un nod copil al unei căutări până când se ajunge la un obiectiv (sau până când există un nod fără alte permutări sau "copii"). După găsirea unui obiectiv, căutarea se efectuează la un nod anterior care a trecut cu o soluție, repetând procesul până când toate nodurile au fost căutate cu succes. Astfel, nodurile continuă să fie puse deoparte pentru explorare ulterioară - aceasta se numește implementare non-recursivă.

Caracteristicile BFS sunt complexitatea spațiului și a timpului, completitudinea, dovada de completitudine și optimitate. Complexitatea spațială se referă la proporția numărului de noduri la cel mai adânc nivel al unei căutări. Complexitatea de timp se referă la valoarea reală a "timpului" utilizat pentru a lua în considerare fiecare cale pe care un nod o va efectua într-o căutare. Completitudinea este, în esență, o căutare care găsește o soluție într-un grafic, indiferent de ce tip de grafic este. Dovada integrității este cel mai adânc nivel la care se găsește un scop într-un nod la o anumită adâncime. În cele din urmă, optimitatea se referă la un BFS care nu este ponderat - adică un grafic utilizat pentru costul pe unitate.

Un DFS este cea mai naturală ieșire folosind un arbore spanning - care este un arbore alcătuit din toate vârfurile și niște margini într-un grafic nedirecționat. În această formare, graficul este împărțit în trei clase: margini înainte, orientate de la un nod la un nod copil; muchiile din spate, indicând de la un nod la un nod anterior; și muchiile transversale, care nu fac nici una dintre acestea.

Rezumat:

1. Un BFS caută fiecare soluție într-un grafic pentru a-și extinde nodurile; un DFS se înmoaie adânc în interiorul unui nod copil până când se atinge un obiectiv.

2. Caracteristicile unui BFS sunt complexitatea spațiului și a timpului, completitudinea, dovada de completitudine și optimitate; cea mai naturală ieșire pentru un DFS este un arbore spanning cu trei clase: muchii posterioare, muchii posterioare și muchii transversale.