Teil 3 : Potenzreihen

Werbung
Automaten, formale Sprachen
und Berechenbarkeit II
SoSe 2004
Prof. W. Brauer
Teil 3: Potenzreihen und kontextfreie
Sprachen
(Vgl. Buch von A. Salomaa)
T sei ein endliches Alphabet.
L  T* ist beschreibbar durch seine charakteristische Funktion L : T*  Z mit L(w) = 1
für w in L und = 0 sonst.
(Z sei die Menge der ganzen Zahlen, N die Menge der natürlichen Zahlen mit der 0.)
Allgemeiner beschreibt jede Abbildung
 : T*  Z eine formale Sprache L
 T*:
L = supt () := { w  T* | (w) ≠ 0 } (supt steht für support).
Jede Abbildung  : T*  Z lässt sich als formale Potenzreihe schreiben:
 = wT*
(w)w = (w1)w1
+ (w2)w2 +
(w3)w3 + ...
(Reihenfolge der Summanden beliebig)
Dabei wird jedes Element von T als Unbestimmte aufgefasst; diese Unbestimmten
sind aber nicht vertauschbar.
Ist (w)  {0, 1} für jedes w aus T*, dann ist  die charakteristische Potenzreihe von L.
Z(T) sei die Menge aller formalen Potenzreihen  mit Koeffizienten (w) aus Z und
Unbestimmten aus T.
Analog sei N(T) die Menge aller formalen Potenzreihen  mit Koeffizienten (w) aus N und
Unbestimmten aus T.
Verschiedene Interpretationen der Koeffizienten einer formalen Potenzreihe.
1) Sei G ein Hilfsmittel zur Erzeugung der formalen Sprache L(G)  T* (Grammatik, Automat,
...). Dann hat jedes w aus L(G) mindestens eine strukturelle Beschreibung an Hand des
Erzeugungshilfsmittels (Linksableitung, Ableitungsbaum, ...).
Sei (w) die Anzahl der verschiedenen Strukturbeschreibungen vom selben Typ für w. Dann
gibt (w) die strukturelle Mehrdeutigkeit von w an.
Ist etwa G eine kontextfreie Grammatik, so sei (w) der Grad der Mehrdeutigkeit von w
bezüglich G. Dann kann  als form. Pot.-R. aus N(T) gewählt werden:
w  L(G) gdw. (w) > 0.
2) Wie unter 1) aber mit Akzeptierungsmechanismen statt Erzeugungsverfahren.
3) Seien G und E zwei verschiedene Erzeugungsverfahren für L  T*.
Dann kann man wie folgt eine formale Potenzreihe  aus Z(T) für L definieren:
(w) sei: Anzahl verschiedener Erzeugungsmöglichkeiten von w mittels G minus
Anzahl verschiedener Erzeugungsmöglichkeiten von w mittels E.
Operationen mit formalen Potenzreihen.
Definitionen zunächst für Z(T) - für N(T) geht alles analog.
• „Zahlprodukt“: Für n  N und   Z(T) sei n := wT* n(w)w  Z(T).
Es gilt (n)(w) = n(w) .
Seien , ‘ aus Z(T).
• „Summe“:  w  T*: ( + ‘)(w) := (w) + ‘(w) . Es gilt  + ‘  Z(T).
• „Cauchy-Produkt“:  w  T*: (‘)(w) := uv=w (u)‘(v) . Es gilt ‘  Z(T).
Dies Produkt ist assoziativ. Vgl. das Produkt zweier „normaler“ Polynome!
Z(T) ist bzgl. Summe und Cauchy-Produkt ein Ring.
Feststellung:
supt( + ‘) = supt()  supt(‘)
supt(‘) = (supt())(supt(‘))
• „Plus-Operation“ (iteriertes Cauchy-Produkt) für   N(T).
Für k≥1 sei k das k-fache Cauchy-Produkt von , d.h. k+1 = k, 1 =  .
Hilfssatz 1: + := limm∞ k=1,...m k ist für jedes   N(T) mit ()=0 wohldefiniert.
Beweis: (1) Für jedes w aus T* ist +(w) ≠ 0 gdw. w sich schreiben lässt als
w = w1w2w3 ... wn mit wi  supt(), 1≤i≤n≤|w|.
(2) Jedes w aus T* mit (w) ≠ 0 hat nur endlich viele Zerlegungen wie in (1), und deren
Anzahl ist der Koeffizient von w in +.
Hilfssatz 2: (1) +  N(T), supt(+) = (supt())+ = supt()  (supt())2  (supt())3...
(2)  + + =  + + = +
Beweis: Nachrechnen!
Bemerkung: Sei  das leere Wort und  die form. Pot.-R. mit
() = 1
sowie
(w) = 0 für alle w aus T+.
Sei ferner ‘  N(T) mit ‘() = 1 und   Z(T) so, dass ‘ =  + (-1) (und ()=0).
Für ‘‘:=  + + gilt: ‘‘‘ = ( - )( + +) =  + (+ -  - +) =  und ‘‘‘= .
D.h. ‘‘ ist die Inverse zu ‘; deshalb wird + auch Quasi-Inverse von  genannt.
Familien formaler Potenzreihen aus N(T).
Definition: (1) Für aT sei a die form. Pot.-R. mit supt(a)={a} und (a)=1.
( a ist die charakteristische Pot.-R. von {a} )
(2) Eine Familie F von form. Pot.-Reihen heißt rational abgeschlossen, wenn für jedes
 aus F mit ()=0 auch + in F liegt.
(3) Die Familie der rationalen nichtnegativen form. Pot.-R. ( in Zeichen rat+(T) ) ist
die kleinste rational abgeschlossene Familie form. Pot.-R., die die Reihe  und für
jedes a aus T auch die Reihe a enthält, und die abgeschlossen ist unter Zahlprodukt
mit natürlichen Zahlen sowie Summe und Cauchy-Produkt.
Satz: L  T* ist regulär gdw. L = supt() für mindestens ein  aus rat+(T).
Beweis: Offenbar sind die regulären Teilmengen von T* genau die Mengen supt() mit  aus
rat+(T).
Kontextfreie Sprachen und formale Potenzreihen.
Wir betrachten nur kontextfreie Grammatiken G ohne Kettenregeln (A  B) und ohne Regeln (A  ). Zu jeder solchen Grammatik wird, wie folgt, eine formale Potenzreihe 
konstruiert, deren Koeffizienten (w) den Grad der Mehrdeutigkeit (Anzahl der verschiedenen
Linksableitungen) der Wörter w aus L(G) bzgl. dieser Grammatik angeben.
• Man schreibe die Grammatik G um in ein formales Gleichungssystem, indem man
| durch
+ und  durch = ersetzt und die Variablen (Nichtterminale) von G als
Unbekannte für Teilmengen von T* auffasst.
Beispiel: Die Dycksprache über {a,b} ohne  :
Grammatik: X0  X0X0 | aX0b | ab
Gleichungssystem: X0 = X0X0 + aX0b + ab
• Die allgemeine Form des Gleichungssystems Gl(G) zur Grammatik G :
Seien X0, X1, ... Xn mit n≥0 die Variablen von G und Pq(i), q=1,2, ...mi die rechten Seiten der
Regeln für Xi; X0 sei die Startvariable. Die i-te Zeile von Gl(G), für i=0, ...,n, ist dann
Xi = P1(i) + P2(i) + ... + P(i)mi ;
die rechten Seiten werden kurz mit i bezeichnet.
Die Potenzreihe  wird sukzessiv durch Polynome (k), die aus GL(G) berechnet werden, approximiert.
Die formalen Pot.-Reihen i(k) für 0≤ i ≤ n und k ≥ 0 seien definiert durch:
• i(0) = 0, d.h. supt i(0) = 
• Für k > 0 erhält man i(k) aus i,
indem man jedes Xm (0≤m≤n) durch m(k-1) ersetzt.
Beispiel: Dyck-Sprache. 0(0) = 0 , 0(1) = ab , i(2) = abab + aabb + ab ,
i(3) = (abab +aabb +ab) (abab +aabb +ab) + a(abab +aabb +ab)b +ab.
Offenbar ist jedes i(k) als Polynom auffassbar.
Die Potenzreihe für L(G) ist dann  = limk∞ 0(k) .
Begründung: Für jedes m  N und jedes w  T* mit |w| ≤ m ist der Koeffizient von w
in der form. Pot.-R. 0(2m-1) gleich dem Koeffizienten von w in der Pot.-R. .
(Das beruht auf der Einschränkung: „keine Ketten- und keine -Regeln“)
Verallgemeinerung
Es werden formale Potenzreihen aus Z(T) und allgemeinere Gleichungssysteme zugelassen;
d.h. in den Potenzreihen und in den Pq(i) auf den rechten Seiten der Gleichungen werden
beliebige ganze Zahlen (aus Z) als Koeffizienten zugelassen (also auch „-“ statt „+“), aber Pq(i) ≠
 und Pq(i) ≠ Xj gilt weiterhin..
Die form. Pot.-R., die man aus solchen Gleichungssystemen nach obigem Verfahren
konstruieren kann, heißen algebraische Potenzreihen.
Beispiel eines allgemeineren Satzes:
Def.: Das Hadamard-Produkt zweier form Pot.-Reihen  und ‘ aus Z(T) ist
wT* (w)‘(w)w
 Z(T).
Satz: Das Hadamard-Produkt einer rationalen und eine algebraischen Potenzreihe ist eine
algebraische Pot.-Reihe.
Das ist eine Verallgemeinerung des Satzes: Der Durchschnitt einer regulären mit einer
kontextfreien Sprache ist kontextfrei.
Literatur: W. Kuich, A. Salomaa. Semirings, Automata, Languages. Springer-Verlag, 1985.
J. Berstel, C. Reutenauer: Rational Series and Their Languages. Springer-Verlag, 1987.
Zugehörige Unterlagen
Herunterladen