Fakultät für Mathematik Technische Universität München Propädeutikum Diskrete Mathematik Tiefensuche Prof. Dr. R. Hemmecke B.Sc. W.F. Riedl Dipl-Math. M. Silbernagl Technische Universität München WS 2013/14 Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
28
Embed
Propädeutikum Diskrete Mathematik - Tiefensuche · Fakultät für Mathematik Technische Universität München Stapel/Stack I Definition EinStapel/StackS isteineFolgevonElementenmitdenfolgenden
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Fakultät für Mathematik Technische Universität München
Propädeutikum Diskrete MathematikTiefensuche
Prof. Dr. R. HemmeckeB.Sc. W.F. Riedl Dipl-Math. M. Silbernagl
Technische Universität München
WS 2013/14
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
If-Abfrage
Input : M ⊂ N endliche MengeOutput : u Anzahl ungerader Zahlen in M,
g Anzahl gerader Zahlen in M1 u ← 0, g ← 0;2 for n ∈ M do3 if n ist ungerade then4 u ← u + 1;
else5 g ← g + 1;
endend
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Stapel/Stack I
DefinitionEin Stapel/Stack S ist eine Folge von Elementen mit den folgendenbeiden Operationen:
Push(S, u): Füge das Element u am Ende der Folge ein.v ← Pop(S): Speichere das letzte Element von S als v ab undentferne es aus S.
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Stapel/Stack IIBeispiel 1
v ← Pop(S)
751
Push(S, 6)
75
v = 1
Push(S, 8)
756
v ← Pop(S)
7568
756
v = 8
Beispiel 2Befehl Stack S
(7, 5, 1)v ← Pop(S) (7, 5) und v = 1Push(S, 6) (7, 5, 6)Push(S, 8) (7, 5, 6, 8)v ← Pop(S) (7, 5, 6) und v = 8
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Stapel/Stack IIBeispiel 1
v ← Pop(S)
751
Push(S, 6)
75
v = 1
Push(S, 8)
756
v ← Pop(S)
7568
756
v = 8
Beispiel 2Befehl Stack S
(7, 5, 1)v ← Pop(S) (7, 5) und v = 1Push(S, 6) (7, 5, 6)Push(S, 8) (7, 5, 6, 8)v ← Pop(S) (7, 5, 6) und v = 8
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Tiefensuche (DFS)
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1}, Vorgänger : V \ {u} → V .
1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = ()
v bekannt(v) Vorgänger(v)
12345
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = ()
v bekannt(v) Vorgänger(v)
12345
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (1)
v bekannt(v) Vorgänger(v)
12345
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (1)
v bekannt(v) Vorgänger(v)
1 02 03 04 05 0
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (), v = 1
v bekannt(v) Vorgänger(v)
1 02 03 04 05 0
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (), v = 1
v bekannt(v) Vorgänger(v)
1 12 03 04 05 0
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 5), v = 1
v bekannt(v) Vorgänger(v)
1 12 0 13 04 05 0 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2), v = 5
v bekannt(v) Vorgänger(v)
1 12 0 13 04 05 0 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2), v = 5
v bekannt(v) Vorgänger(v)
1 12 0 13 04 05 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3, 4), v = 5
v bekannt(v) Vorgänger(v)
1 12 0 13 0 54 0 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3), v = 4
v bekannt(v) Vorgänger(v)
1 12 0 13 0 54 0 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3), v = 4
v bekannt(v) Vorgänger(v)
1 12 0 13 0 54 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3, 2, 3), v = 4
v bekannt(v) Vorgänger(v)
1 12 0 43 0 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3, 2), v = 3
v bekannt(v) Vorgänger(v)
1 12 0 43 0 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3, 2), v = 3
v bekannt(v) Vorgänger(v)
1 12 0 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3, 2), v = 3
v bekannt(v) Vorgänger(v)
1 12 0 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3), v = 2
v bekannt(v) Vorgänger(v)
1 12 0 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3), v = 2
v bekannt(v) Vorgänger(v)
1 12 1 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2, 3), v = 2
v bekannt(v) Vorgänger(v)
1 12 1 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (2), v = 3
v bekannt(v) Vorgänger(v)
1 12 1 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München
Input : Graph G = (V , E), Startknoten u ∈ VOutput : Funktionen bekannt : V → {0, 1},
Vorgänger : V \ {u} → V .1 S ← (u);2 for w ∈ V do3 bekannt(w)← 0;
end4 while S 6= ∅ do5 v ← Pop(S);6 if bekannt(v) = 0 then7 bekannt(v)← 1;8 for w ∈ N(v) mit bekannt(w) = 0 do9 Push(S, w);
10 Vorgänger(w)← v ;end
endend
1
2
3
4
5
S = (), v = 2
v bekannt(v) Vorgänger(v)
1 12 1 43 1 44 1 55 1 1
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14
Fakultät für Mathematik Technische Universität München