Next: Ein besserer Algorithmus für
Up: Transitive Hülle
Previous: Der 4-Russen-Algorithmus für Boolesche
Tiefensuche(DFS):
proc DFS-visit(node v) =
markiere v;
num[v]:= ++count;
for alle Nachbarn u von v do
if u unmarkiert then DFS-visit(u) fi
od
algorithm DFS =
for alle Knoten v do unmarkiere(v); num(v):=0 od;
count:=0;
for alle Knoten v do
if v unmarkiert then DFS-visit(v) fi
od
Bemerkung: Funktioniert für Graphen und Digraphen.
Nachbarn in Graphen und Digraphen:
Beispiele für DFS:
Bemerkung: Alle Baumkanten zusammen ergeben den DFS-Wald (Spannwald).
Bemerkung: SZK: starke Zusammenhangskomponente (in Digraphen)
DFS in ungerichteten zyklischen Graphen, n Knoten, m Kanten, n-1 Baumkanten,
m-n+1 Rückwärtskanten.
Zeitaufwand:
A* aus DFS mit Aufwand in ungerichteten Graphen (Anm.: SZK = ZK).
DFS in gerichteten Graphen (Digraphen), n Knoten, m Kanten, Baum-, Vorwärts-,
Rückwärts- und Querkanten:
Zeitaufwand:
Es gilt: u ist von v aus auf einem gerichteten Pfad erreichbar g.d.w. u Knoten
in dem DFS-Baum (DFS-visit(v)) mit Wurzel v ist.
Also: Transitive Hülle in Zeit bzw. . Sehr gut für
dünne Graphen (also solche mit relativ wenigen Kanten).
Next: Ein besserer Algorithmus für
Up: Transitive Hülle
Previous: Der 4-Russen-Algorithmus für Boolesche
Abbas-Bardia Kabiri-Jarghouyeh
3/3/1999