Depth-first search
Jump to navigation
Jump to search
Definition
Pseudocode
DFS(G)
- for each vertex u ∈ V [G]
- do color[u] ← WHITE
3
4
5
6
DFS(G) 1 '''for''' each v of G { // Alle Knoten weiß färben, Vorgänger auf nil setzen 2 col[v] = 'w'; 3 pi[v] = nil; 4 } 5 time = 0; 6 for each u of G // Für alle weißen Knoten: DFS-visit aufrufen 7 if col[u] == 'w' 8 DFS-visit(u);
DFS-visit(u) 1 col[u] = 'g'; // Aktuellen Knoten grau färben 2 time++; // Zeitzähler erhöhen 3 d[u] = time; // Entdeckzeit des aktuellen Knotens setzen 4 for each v of Adj[u] { // Für alle weißen Nachbarn des aktuellen Knotens 5 if col[v] == 'w' { 6 pi[v] = u; // Vorgänger auf aktuellen Knoten setzen 7 DFS-visit(v); // DFS-visit aufrufen 8 } 9 } 10 col[u] = 's'; // Aktuellen Knoten schwarz färben 11 time++; 12 f[u] = time; // Finishing-Time des aktuellen Knotens setzen