28
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

Propädeutikum Diskrete Mathematik - Tiefensuche · Fakultät für Mathematik Technische Universität München Stapel/Stack I Definition EinStapel/StackS isteineFolgevonElementenmitdenfolgenden

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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