Sie sind auf Seite 1von 2

Technische Universität Berlin SS 2024

Fakultät II, Institut für Mathematik


Sekretariat MA 5–2, Dorothea Kiefer-Hoeft
Prof. Dr. Max Klimm
Dr. Tobias Hofmann, Martin Knaack, Marcel Wack.

1. Übungsblatt Computerorientierte Mathematik II


Abgabe: 25.04.2023 (bis 18:00 Uhr über ISIS)
Alle Antworten sind zu beweisen. Für Einzelabgaben gibt es keine Punkte.

1. Aufgabe (Catalan-Zahlen) (1 + 5 Punkte)


Die Catalan-Zahlen sind durch C0 := 1 und die rekursive Regel
n−1
X
Cn := Ck · Cn−1−k
k=0

für alle n ≥ 1 definiert.


(a) Beweisen Sie, dass für alle n ≥ 1 gilt,
n−1
X
2· 3k = 3n − 1.
k=0

(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 ).

2. Aufgabe (Längste Palindromsequenz) (4 + 2 Punkte)


Im Folgenden sei Σ ein Alphabet. Gegeben ist eine Zeichenkette x = x1 x2 . . . xn ∈ Σ∗ .
Eine Palindromsequenz in x ist eine Teilfolge xi1 xi2 . . . xit mit 1 ≤ i1 < i2 < · · · <
it ≤ n und xij = xit−j+1 für alle j ∈ {1, . . . , t}. Beispielsweise gibt es in der Zeichenkette
dynamische␣Programmierung die Palindromsequenz nmrgrmn.
(a) Geben Sie einen Algorithmus mit Laufzeit O(n2 ), welcher die maximale Länge einer
Palindromsequenz in x berechnet. Begründen Sie, dass Ihr Algorithmus Laufzeit in
O(n2 ) besitzt.
(b) Erweitern Sie Ihren Algorithmus so, dass er auch eine längste Palindromsequenz in
x ausgibt. Die Laufzeit soll immer noch in O(n2 ) sein.
Hinweis: Schreiben Sie ein dynamisches Programm, das für 1 ≤ i ≤ j ≤ n die Länge L[i, j]
der längsten Palindromsequenz in xi xi+1 . . . xj berechnet.

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.

4. Aufgabe (Rekursive Bäume) (2 + 2 + 2 Punkte)


Für jede natürliche Zahl n definieren wir einen gewurzelten Baum T (n) rekursiv wie folgt:
T (0) und T (1) bestehen aus einem einzelnen Knoten 0 bzw. 1 , der gleichzeitig die
Wurzel ist. Für n ≥ 2 ist T (n) der Baum mit Wurzelknoten n , der zwei Kindknoten
besitzt, wobei die beiden Teilbäume, die am linken und rechten Kindknoten beginnen,
durch T (n − 1) bzw. T (n − 2) gegeben sind.
(a) Zeichnen Sie T (2), T (3) und T (4).
(b) Ein Blattknoten ist ein Knoten, der keinen Kindknoten besitzt. Wie viele Blattknoten
besitzt T (n)?
(c) Ein innerer Knoten ist ein Knoten, der kein Blatt ist. Wie viele innere Knoten besitzt
T (n)?

Das könnte Ihnen auch gefallen