---
tags: Assignments
---
# Blatt 06
|Kurs |Semester |Team |
|--- |--- |--- |
|Algorithmen und Datenstrukturen |SS 2020 |Carlo Mohl & Noah Nuebling |
---
## Aufgabe 1
### 1)
Um das Wort s in das Wort s' umzuwandeln können wir alle Buchstaben der LGTS belassen. Um nun die 'inkorrekten' Teilworte w zwischen den Elementen der LGTS in s in die entsprechenden 'korrekten' Teilworte w' von s' umzuwandeln, können wir für jedes Element aus dem korrekten w' entweder ein Element aus dem w umwandlen oder ein Element in w einfügen. Wir brauchen also höchstens |w'| Operationen um w in w' umzuwandeln.
Die Länge aller w' aufsummiert ist m - |LGTS(s,s')|.
### 2)
Gegenbeispiel: Man nehme das gleiche Wort für n und m z.B "Tee" und vergleiche die Editierdistanz zwischen "nichts tun" und "löschen aller Zeichen von s und einfügen der Zeichen von s´". Dabei kommt für "nichts tun" eine Editierdistanz von 0 heraus, bei "löschen aller Zeichen von s und einfügen der Zeichen von s´" eine Editierdistanz von 3. 3>0 -> somit Aussage falsch.
### 3)
Falsch. Gegenbeispiel:
xabcy
yabcx
### 4)
Falsch.
s = a b c d x y
s' = a y b x c d
s_4 = a b c d
-> Haben trotzdem gemeinsame Zeichen.
### 5)
Falsch. Gegenbeispiel:
ANA
## Aufgabe 2
### OST zu WEST
OST, EST, WEST
### RAST zu LOS
RAST, LAST, LAS, LOS
### ZUNGE zu MAGEN
ZUNGE, ZUNGEN, ZANGEN, ZAGEN, MAGEN
### BODEN zu SEE
BODEN ODEN, DEN, SEN, SEE
### EINS zu ZEHN
EINS, EIN, ZEIN, ZEHN
## Aufgabe 3
_Im folgenden benutzen wir "Schritt" und "Operation" mit gleicher Bedeutung. Hiermit meinen wir die Operationen die angewendet werden um Wörter in andere Wörter umzuwandeln. Also Löschen, Einfügen, und Ersetzen._
### a)
1.)
__Positive Definitheit__
Die ED(s, s') entspricht der minimalen Anzahl an Schritten um s in s' umzuwandeln. Die Anzahl der Schritte ist >= 0.
Die Anzahl der Schritte ist genau dann 0 wenn s = s'.
__Symmetrie__
Da alle Operationen reversibel sind, gilt: Für eine minimale Abfolge an Schritten f um s in s' umzuwandeln, kann die umgekehrte Abfolge an Schritte f' auf s' angewendet werden kann um s' mit einer minimalen Anzahl an Schritten in s umzuwandeln.
In sofern Löschen und Einfügen die selben Kosten haben gilt also d(a,b) = d(b,a).
__Dreiecksungleichung__
d(a,c) ist gleich der Länge der minimalen Schrittefolge um a in c umzuwandeln |f(a,c)|. d(a,b) + d(b,c) ist gleich der Summe der Längen der minimalen umwandlungs-Schrittefolgen |f(a,b)| + |f(b,c)|. Diese beiden Schrittefolgen hintereinander ausgeführt beschreiben nun auch eine Schrittefolge die a in c umwandelt f'(a,c). |f'(a,c)| muss nun aber >= |f(a,c)| sein, da f(a,c) nach Definition minimal ist.
2.)
Siehe den Text unter "Symmetrie" weiter oben.
Wenn z.B. p(Einfügen) = 1 und p(Löschen) = 2, dann gilt die Symmetrie nicht, da eine Operation und ihre Reversierungsoperations unterschiedliche Kosten haben.
### b)
Nein, die Länge des längsten gemeinsamen Teilwortes und die Länge der längsten gemeinsamen Teilsequenz sind keine Metriken, denn beide sind nicht 0 wenn a = b. (insofern |a| = |b| > 0)
Damit haben Sie nicht die Eigenschaft der positiven Definitheit.
## Aufgabe 4
### a)
__1. Aggregationsmethode__
$c(Op_i) = 1 \textbf{ für } i \neq 4^j + 1$
$c(Op_i) = 4^{j+1} + 4^{j} + 1 \textbf{ für } i = 4^j + 1$
$$
\sum_{i=1}^{n} c(Op_i) = n + \sum_{j=0}^{log_4n} 5\cdot 4^j \leq 8n
$$
__2. Bankkontomethode__
$c'_i = 8$
Bei billigen Einfügungen gilt $c_i = 1$, der Überschuss beträgt also 7.
Bei Vergrößerungsoperationen beträgt unser Guthaben mindestens
$$
\sum_{i=1}^{3 \cdot 4^{j-1}} 7 + 8 = 21 \cdot 4^{j-1} + 8 \geq 5 \cdot 4^{j} + 8
$$
Das Guthaben ist größer als die Reallokierungskosten $5 \cdot 4^j + 1$, damit haben wir also eine valide obere Schranke gefunden.
### b)
:::info
_Lieber Tutor, das folgende ist Blödsinn, und du kannst es gerne ignorieren._
:::
Anzahl Elemente in der x-ten Ebene: 2^x (Die Wurzel ist auf der 0-ten Ebene)
Worst case Laufzeit für ein Element der Ebene x:
- Wenn x = ceil(log n) - 1: ceil(log n) - 1
- Auf der letzten Ebene, kann es sein, dass es kein rechtes Kind gibt. Dann muss der Baum im worst-case bis zur Wurzel traversiert werden
- Wenn x = ceil(log n) - 2: ceil(log n) - 2
- Gleiches gilt für die zweit-letzte Ebene
- Sonst: (log n) - x
- In allen anderen Fällen muss es in einem balancierten Baum ein rechtes Kind geben. Hier wird der Baum also im worst-case bis ganz nach unten traversiert.
Es ergibt sich also die folgende Formel für die Gesamtlaufzeit:
$\sum_{x=0}^{ceil(\log n) - 3} 2^x \cdot (ceil(\log n) - x)$
$+ 2^{ceil(\log n) - 2} \cdot (ceil(\log n) - 2)$
$+ 2^{ceil(\log n) - 1} \cdot (ceil(\log n) - 1)$
Wenn diese Formel richtig ist und eine ausreichend scharfe obere Schranke darstellt, dann würde Wolfram Alpha sagen, dass sie in O(n) ist.