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: = wT* (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 := wT* 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 aT 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 wT* (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.