Info4 Stoff Aufgabentypen: • Grammatik CH einordnen NFA • Grammatik Chomsky-NF CYK-Algorithmus: Tabelle / Ableitungsbäume • Grammatik streng kf. Grammatik • Grammatik Pumping Lemma Beweis, dass Gr. nicht reg, bzw. kf. • NFA • zeige, dass eine Funktion pr. rek. Sprache DFA reg. Ausdruck (KSE-Regeln) Turingmaschine Diagonalisierung Entscheidbarkeit Sortierverfahren Laufzeitbestimmung Induktionsbeweis, dass Sortierung korrekt • Heap-Sortierung (schrittweise) mit unsortiertem Binärbaum • AVL-Baum aufbauen (mit Rotationen) Spickerblatt: Grammatik G = (V Variablen, Terminalalphabet V Ø, P Produktionen, S Startvariable V) kontextsensitiv (Typ 1): für alle Regeln u → v gilt u ≤ v . kontextfrei (Typ 2): zusätzlich: u ist eine !"# regulär (Typ 3): zusätzlich: v ist entweder ein einzelnes Terminalzeichen, oder v ≥1 ein Terminalzeichen gefolgt von einer einzelnen Variablen. Bei allen 3 Typen ist jedoch die Produktion S → ε $&%(')+*,-/. 0 -Sonderregelung). BNF: zur Beschreibung von Typ 2 Grammatiken. Regeln: statt A → a, A → b schreibt man A → a | b statt A → ac, A → abc schreibt man A → a[b ]c A → a{b}c b kann beliebig oft vorkommen. Bei kontextfreien Sprachen sind die Ableitungsgraphen immer Bäume. eindeutige, kontextfreie Grammatik: für jedes Wort w ∈ L(G ) gibt es genau eine Linksableitung. Sonst mehrdeutig! streng kf.: 1234265 -Produktion DFA M (für CH3) = (Z Zustände, 7 8 Übergangsfunktionen) Eingabealphabet, z0 Startzustand, E ⊆ Z Endzustände, NFA kann mehrere Startzustände haben. Umwandlung zu DFA immer möglich (MyHill)! Zu jedem DFA M ∃ reguläre Grammatik G mit L(G) = L(M). regulärer Ausdruck: Beispiel: Alle Worte, die 0110 enthalten. Umwandlung DFA 9 {(0|1)*0110(0|1)*} reg. Ausdruck: - neuen Start- :;<>=?;@<A&:CBED(F;<HGJIKDML -Übergängen - Regel K: - Regel S: - Regel E: * Ist die Sprache L ⊆ Σ durch einen regulären Ausdruck beschreibbar ⇔ L regulär. Pumping Lemma: zeigen, dass eine Sprache L nicht regulär ist. -> uvw-Theorem: n = Pumpingzahl, x ≥ n , x =uvw, v ≥ 1 , uv ≤ n , uv i w ∈ L zeigen, dass eine Sprache L nicht kontextfrei ist: uvwxy-Theorem: x ≥ n , vx ≥ 1 , vwx ≤ n , uv i wx i y ∈ L ; i ≥ 0 Abgeschlossenheit: Die Menge L von Sprachen ist abgeschlossen unter der Operation u , falls gilt: L1 , L2 ∈ L ⇒ L1 v L2 ∈ L . zu jeder kontextfreien Grammatik G mit ε ∈ L (G ) gibt es eine äquivalente Grammatik G’, die ε -frei ist. ( äquivalent: L(G) = L(G’) ) Chomsky-Normalform (CNF): Alle ε -Produktionen und alle Zyklen müssen weg! Am Schluss dürfen nur noch Produktionen der Form A N OQPSRTU&VXWZY [6\+]^`_bac^\de\fhg Ableitungsbäume einer kontextfreien Grammatik in CNF sind immer Binärbäume, also kann ein Wort der Länge n in genau 2n-1 Schritten abgeleitet werden! zu jeder kontextfreien Grammatik G mit ε ∉ L (G ) gibt es eine äquivalente Gr. G’ in CNF. CYK-Algorithmus: kein exponentieller Aufwand mehr, sondern O(n3). Verfahren: zuerst umformen in CNF. Um zu prüfen, ob Wort x in L i Kellerautomat M (für CH2) = (Z Zustände, r z0 Startzustand, #∈ Γ Kellerbodenzeichen). bei deterministischem KA zusätzlich E ⊆ Z Eingabealphabet, jlk+monpqpn Γ Kelleralphabet st Übergangsfunktionen, Übergang z.B. δ ( z 0 , a, # ) → ( z 0 , A# ), ( z1 , A# ) Endzustände ∀z ∈ Z , ∀a ∈ Σ, ∀A ∈ Γ : δ ( z , a, A) + δ ( z , ε , A ≤ 1 Z, außerdem mus gelten: deterministisch: Automat hat zu jedem Zeitpunkt höchstens eine Alternative! eine kontextfreie Grammatik G heißt deterministisch kontextfrei, falls es einen deterministischen KA M gibt mit L(G) = L(M). Ch2-Grammaktik G=(V, Σ , P, S) w xyz{}|(~|& +o& Σ , V ∪ Σ , δ , z, S) : - Für jede Regel aus P: δ ( z , ε , S ) → ( z , a ) - zusätzlich für alle a ∈ Σ : δ ( z , a, a) → ( z , ε ) nichtdet. KA M = (Z, Σ , Γ , δ , z0 , #) -Grammatik G=(V, Σ , P, S) : - V := {S } ∪ Z × Γ × Z - S - [z, A, z’] für alle δ ( z , a, A) → ( z ' , ε ) - [z, A, y] ¡Q @¢@£ für alle δ ( z , a, A) → ( z ' , B) und alle y ∈ Z - [z, A, y’] ¤ 0, #, z] , B, y][y, C, y’] für alle z ∈ Z für alle δ ( z , a, A) → ( z ' , BC ) und alle y , y '∈ Z LR(k)-Grammatik: Eine kontextfreie Grammatik ist eine LR(k)-Grammatik, wenn man durch Lookaheads der Länge k erreichen kann, dass bei einer Reduktion von Links nach rechts in jedem Schritt genau eine Regel anwendbar ist. Jede kontextfreie Sprache, für die es eine LR(k)-Grammatik gibt, ist det. k-frei., Turingmaschine (für CH1 und CH0) = (Z Zustände, ¥ Eingabealphabet, Γ Bandalphabet, ¦ Übergangsfunktionen, z0 Startzustand, § ∈ Γ \ Σ Leerzeichen, E ⊆ Z Endzustände). Übergang δ ( z , a ) → δ ( z ' , b, x ) ; d.h. wenn sich M im Zustand z befindet und unter dem Schreib-/Lesekopf das Zeichen a steht ¨ Übergang zu z’, schreibe anstatt des a’s das Zeichen b und bewege den Schreib-/Lesekopf in Richtung x (R, oder L) Konfiguration: (© ª@«+ª ¬ ): ­® liegt auf dem Band, Maschine befindet sich im Zustand z, Schreib-/Lesekopf auf erstem Zeichen von ® . ( α , β ∈ Γ * ) Startkonfiguration einer Turingmaschine bei Eingabe x : (ε , x, z 0 ) . linear beschränkte Turingmaschine: Sie darf nur Positionen beschreiben, an denen zu Beginn die Eingabe x stand. Die von Turingmschinen akzeptierten Sprachen sind vom Typ CH0. Die von linear beschränkten Turingmaschinen akzeptierten Sprachen sind vom Typ CH1. Abschlusseigenschaften: Typ Schnitt Vereinigung ¯ Komplement ¯ CH3 det kf / CH2 / Produkt ¯ ¯ ¯ ¯ / / ¯ ¯ ¯ ¯ ¯ ¯ CH0 ¯ ¯ ¯ ¯ ¯ / / ¯ / CH1 Stern Entscheidbarkeit: Typ CH3 Wortproblem ist Wort x in L(G) ? ¶ Leerheitsproblem ist L(G)=Ø ? ¶ det kf ¶ ¶ CH2 ¶ ¶ CH1 ¶ CH0 / Äquivalenzproblem L(G1)=L(G2) ? ¶ Schnittproblem L(G1) ° ±³²µ´ 2) ? ¶ ¶ / / / / / / / / / Turing-Berechenbarkeit: Es gibt eine Turingmaschine, die für alle Eingaben bin(n1)#bin(n2)#...#bin(nk) nach endlich vielen Schritten mit bin(f(n1, ..., nk)) auf dem Band stoppt. Jede k-Band Turingmaschine kann man durch eine 1-Band Turingmaschine simulieren. Loop-Programme: xi:=c, xi:=xj+c, xi:=xj-c (=0, falls c>xj) sind Loop-Programme. Beispiel: IF x=0 THEN A END · y :=1; LOOP x DO y:=0 END; LOOP y DO A nicht Loop-berechenbar: Ackermann-Funktion Ist eine Funktion While- oder Goto-berechenbar, so ist sie auch Turing-berechenbar. Klasse der primitiv-rekursiven Funktionen (entspr. Loop): - alle konstanten Funktionen - Nachfolgefunktion s(n) = n+1 - Projektionen f(n1, ..., nk)=nj für alle j∈ {1, ..., k}. Bsp.: p13 (ad ( x, y ), x, y ) - Komposition: Sei f, g pr.rek., so ist auch f(g(n)) pr.rek. ∀n ∈ N 0 - Funktion, die aus pr. rek. Funktionen entsteht. Sei F : N 0k → N 0 und g, h pr.rek, dann , falls n = 0 h( F (n − 1, x 2 ,..., x k ), n − 1, x 2 ,..., x k ) , sonst g ( x 2 ,...x k ) F(n, x2, ..., xk) = 0 , falls x = 0 add (mult ( x − 1, y ), y ) , sonst Bsp.: mult (x,y) = ¸º¹»¼¼e½6¾½&¿ À -rekursiven Funktionen (entspr. While, Goto): À zusätzlich -Operator. Sei f Á : N 0k → N 0 , dann ( x1 ,..., x k ) min{ n ⊂ N | f (n, x1 ,...x k ) = 0} (undefiniert )  Menge A ⊆ Σ * heißt entscheidbar, wenn: ℵ A (w) = 1, w ∈ A 0, w ∉ A , falls f (m, x1 ,..., x k ) def. ∀ m ≤ n , sonst semi-entscheidbar, wenn: ℵ A (w) = 1, w∈ A undefinier t, w ∉ A entspr. für alle w ∈ Σ * , charakteristische Fkt. semi-charakteristische Fkt. Eine Sprache A ⊆ Σ ist genau dann entscheidbar, wenn sowohl A als auch A ⊆ Σ* \ A semi* entscheidbar sind. rekursiv aufzählbar: Für die Sprache A ⊆ Σ * gibt es eine berechenbare Fkt. f : N 0 → Σ * , so dass A={f(0), f(1), f(2), ...}. Genau dann ist die Sprache auch semi-entscheidbar! spezielles Halteproblem: Sprache HS={w∈ {0,1}* | Mw angesetzt auf w hält} allg. Halteproblem: Sprache H={w#x∈ {0,1}* | Mw angesetzt auf x hält}; # = Trennzeichen Halteprobleme sind nicht entscheidbar! Reduzierbarkeit: Sei A ⊆ Σ * und B ⊆ Γ * . A heißt reduzierbar auf B (in Zeichen A ÃÄ ), falls eine totale, berechenbare Fkt f: Σ * → Γ * existiert. Mit: ∀x ∈ Σ * : x ∈ A ⇔ f ( x) ∈ B . Heap und AVL-Bäume sind binäre Suchbäume. Heap: - alle inneren Knoten bis auf max. einen haben genau zwei Kinder - alle Nachfolger haben höchstens gleich großen Schlüssel - Knoten mit weniger als 2 Kindern befinden sich auf Level größer Tiefe - Baum unten von links nach rechts aufgefüllt Sortierverfahren mit Heap: - beginne auf unterster Ebene - falls Kind(er) größer Knoten, vertausche (größeres) Kind mit Knoten - evtl. Wurzel weiter absenken (auch durch vertauschen) eine Ebene nach oben AVL-Baum: Höhe des lUB und rUB unterscheiden sich höchstens um eins. Rechts-/Linksrotation: Einfachrotation: evtl. Def. von (a,b)-Bäumen & Hashing (wenn noch Platz ist) Doppelrotation: