Beruflich Dokumente
Kultur Dokumente
(b) Schreiben Sie eine rekursive python oder julia-Funktion Catalan(n), die die n-te
Catalan-Zahl gemäß der Rekursionsregel berechnet. Zeigen Sie, dass für die Laufzeit
des Codes T (n) gilt,
T (n) ∈ Θ(3n ).
1
3. Aufgabe (Breiten- und Tiefensuche) (3 + 3 Punkte)
In CoMa I wurde der folgende Algorithmus zur Durchmusterung eines Graphen behandelt.
Input: Graph G = (V, E, Ψ), Knoten r ∈ V
Output: R ⊆ V von r aus erreichbare Knoten, F ⊆ E, sodass (R, F, Ψ |F ) Baum (mit
Wurzel r)
R ← {r}, F ← ∅, Q ← {r}
while Q ̸= ∅ do
Sei v nächstes Element in Q
if ∃ e ∈ δ(v) mit w ∈ Ψ(e) \ R then
R ← R ∪ {w}, Q ← Q ∪ {w}, F ← F ∪ {e}
else
Q ← Q \ {v}
return R, F
Wird hierin Q als Queue realisiert, spricht man von Breitensuche (BFS), wird Q als Stack
realisiert, spricht man von Tiefensuche (DFS). Führen Sie BFS sowie DFS für den folgenden
Graphen mit Wurzelknoten r = A durch. Wählen Sie innerhalb der if-Abfrage jeweils das
alphabetisch kleinste w ∈ Ψ(e) \ R.
B
A G
C
D
H
F
E
(a) Notieren Sie für jede Iteration der while-Schleife den aktuellen Inhalt der Queue Q.
Geben Sie den sich ergebenden BFS-Baum an.
(b) Notieren Sie für jede Iteration der while-Schleife den aktuellen Inhalt des Stacks Q.
Geben Sie den sich ergebenden DFS-Baum an.