I DFS, Nodene som blir utforsket lagres i en stabeldatastruktur. Kantene som leder oss til uutforskede noder kalles 'Oppdagelseskanter'Mens kantene kommer til å lede allerede besøkte noder kalles'blokkerer kanter'. DFS er nyttig i scenarier når en programmerer ønsker å finne tilkoblede komponenter eller sykluser i en graf.
Følg denne artikkelens retningslinjer for å implementere DFS i c++.
Implementering av DFS i C++
I den følgende delen vil vi gå over hvordan DFS er implementert i C++. Man kan følge de gitte trinnene for å implementere DFS.
DFS pseudokode
De DFS Pseudokode vises nedenfor. I i det() funksjon, vi utfører vår DFS funksjon på hver node. Fordi grafen kan ha to frakoblede deler, kan vi kjøre DFS algoritme på hver node for å sikre at vi har dekket hvert toppunkt.
DFS (G A)
en.besøkt = sant
For hver B ∈ G.Adj [a]
Hvis b.Besøkt == FALSE
DFS (G, B)
i det()
For hver A ∈ G
en.Besøkt = falsk
For hver A ∈ G
DFS (G, A)
Her representerer G, A og B grafen, først besøkt Node og Node i bunken.
Implementering av DFS i C++
Et C ++ -program for DFS Implementering er gitt nedenfor:
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
mal
KlassedybdefirstSearch
privat:
kart> Adjlist;
offentlig:
DybdefirstSearch ()
void add_edge (t a, t b, bool dir = true)
adjlist [a].push_back (b);
if (dir)
adjlist [b].push_back (a);
void prnt ()
for (auto i: adjlist)
cout<";
for (t oppføring: jeg.sekund)
cout<
cout<
void dfs_helper (t node, kart& besøkte)
Besøkt [Node] = True;
cout << node <<" " << endl;
for (t nabo: adjlist [node])
hvis(!besøkte [nabo])
dfs_helper (nabo, besøkt);
void DFS (T SRC)
kartbesøkt;
dfs_helper (src, besøkt);
;
int main ()
DybdefirstSearchg;
g.Add_edge (0,5);
g.Add_edge (0,7);
g.Add_edge (4,7);
g.Add_edge (7,8);
g.Add_edge (2,1);
g.Add_edge (0,6);
g.Add_edge (2,4);
g.Add_edge (3,2);
g.Add_edge (3,6);
g.Add_edge (7,5);
g.Add_edge (5,8);
g.Prnt ();
g.DFS (6);
cout << endl;
I denne koden har vi implementert DFS algoritme etter pseudokoden gitt ovenfor. Vi har 12 par noder. Vi definerte en klasse “G”Som representerer en graf som har toppunkter A og B som representerer besøkte og uvisede noder.
Produksjon
Konklusjon
DFS er en populær søkealgoritme som er nyttig for flere scenarier, for eksempel å finne syklusene i en graf, og få informasjon om de tilkoblede komponentene eller alle hjørner i en graf. Vi beskrev også arbeidet med DFS metode med et eksempel. DFS bruker stabler for å utføre teknikken og kan også brukes på trær.