propädeutikum diskrete mathematik - tiefensuche · fakultät für mathematik technische...
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
ZwischenergebnisseZeile S v Neue Knoten w mit
bekannt(w) = 1Vorgänger(w)
1 (1) –5 () 110 (2, 5) 1 1 Vorgänger(2) = 1
Vorgänger(5) = 15 (2) 510 (2, 3, 4) 5 5 Vorgänger(3) = 5
Vorgänger(4) = 55 (2, 3) 410 (2, 3, 2, 3) 4 4 Vorgänger(2) = 4
Vorgänger(3) = 45 (2, 3, 2) 310 (2, 3, 2) 3 35 (2, 3) 210 (2, 3) 2 25 (2) 35 () 2
Hemmecke, Riedl, Silbernagl Prop DM (MA 1503) WS 2013/14