Wolfgang Hönig / Andreas Ecke WS 09/10
Übung Algorithmen und Datenstrukturen
1. Übung: Zusatzaufgaben
1. Ein Alphabet (Σ) ist definiert als nichtleere endliche Menge von Terminalsymbolen.
Wie ist es trotzdem möglich aus Σ eine leere SpracheL=∅ zu konstruieren?
2. Gibt es für jede Sprache M SprachenK und Lbei denen gilt: M =K ·L?
3. Gegeben sind zwei nichtleere Sprachen K und L der Kardinalität k bzw. l (d.h.
|K|=k und|L|=l – es existieren alsok Wörter inK undl Wörter inL). Wie groß ist |K·L|, also die Anzahl der Wörter nach Anwendung des Komplexproduktes?
Hinweis: Es existiert keine „feste“ Lösung.
4. Gegeben sindn nichtleere Sprachen. Diese Sprachen sollen nun miteinander verket- tet werden, wobei jede Sprache genau einmal in der Verkettung enthalten ist, jedoch die Reihenfolge der Verkettungen unterschiedlich sein kann. Wie viele verschiede- ne neue Sprachen kann man durch solche Verkettungen der n Ausgangssprachen maximal bilden? Auf welcher mathematischen Eigenschaft der Verkettung ist dies begründet?
Hinweis: Verkettung ist in dieser Aufgabe als Synonym zu Konkatenation bzw.
Komplexprodukt zu verstehen.
Lösungen
1. FürLgilt laut Definition:L⊆Σ∗ bzw.L∈P(Σ∗)(beide Ausdrücke sind gleichwer- tig). Da ∅ ∈P(Σ∗), kann aus jedem Alphabet Σ die leere Sprache erzeugt werden.
Hinweis: Der Begriff „konstruieren“ in der Aufgabe ist schlecht gewählt. Es ist in diesem Falle keine Konkatenation gemeint, da auch ein null-maliges konkatenieren das leere Wort erzeugt.
2. Mit K = {} und L = M gilt offenbar: M = K ·L = {} ·M = M. (In diesem speziellen Fall können K und L auch vertauscht werden.)
3. Die einleuchtenste Lösung |K·L|=k·l ist leider falsch. Dies erkennt man an dem folgenden kleinen Beispiel: K = {ba, b}, L = {a, aa}. Damit ergibt sich K ·L = {baa, baaa, ba}, also|K·L|= 3 statt4. Daher ist die Angabe von Grenzen sinnvoll:
Kleinste obere Schranke: |K ·L| ≤k·l Größte untere Schranke: |K ·L| ≥k+l−1
4. Man kann höchstensn!verschiedene Sprachen bilden. Dazu diene folgendes Beispiel mit n = 3 und den Sprachen M1 = {a}, M2 = {b} und M3 = {c}. Durch diese Sprachen sind 3! = 3·2·1 = 6 verschiedene Verkettungen möglich:
L1 =M1·M2·M3 ={abc}
L2 =M1·M3·M2 ={acb}
L3 =M2·M1·M3 ={bac}
L4 =M2·M3·M1 ={bca}
L5 =M3·M1·M2 ={cab}
L6 =M3·M2·M1 ={cba}
Dabei ist die Anzahl bildbarer Sprachen – außer in Spezialfällen – größer als 1, da die Verkettung von Mengen nicht kommutativ ist, daher M1·M2 =M2·M1 gilt im Allgemeinen nicht!