Depth-first search: Difference between revisions

From Algowiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 17: Line 17:
<pre>
<pre>
DFS(G)
DFS(G)
'''for''' each v of G {        // Alle Knoten weiß färben, Vorgänger auf nil setzen
<b>for</b> each vertex of [<i>G</i>]        /2      col[v] = 'w';
2      col[v] = 'w';
3         do <i>color</i>[<i>u</i>] &larr; WHITE
3     pi[v] = nil;
4  }
4  }
5  time = 0;
5  time = 0;

Revision as of 16:36, 14 August 2014

Definition

Pseudocode

DFS(G)

  1. for each vertex uV [G]
  2. do color[u] ← WHITE

3
4
5
6


DFS(G)
1   <b>for</b> each vertex of [<i>G</i>]         /2      col[v] = 'w';
3         do <i>color</i>[<i>u</i>] ← WHITE
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