Kuroda-Normalform

Aus testwiki
Zur Navigation springen Zur Suche springen

Die Kuroda-Normalform ist ein Begriff der Theoretischen Informatik, der im Zusammenhang mit kontextsensitiven Sprachen von Interesse ist. Sie ist nach dem Linguisten Sige-Yuki Kuroda benannt und beschreibt eine Normalform der monotonen Grammatiken, also eine Teilmenge der monotonen Grammatiken, die gegenüber der Menge aller monotonen Grammatiken nichts an Ausdrucksstärke einbüßt. Die Bedeutung der Kuroda-Normalform liegt in der sehr einfachen Struktur der Produktionen. Weil monotone Grammatiken und kontextsensitive Grammatiken gelegentlich nicht unterschieden werden, wird die Kuroda-Normalform auch als Normalform der kontextsensitiven Grammatiken bezeichnet.

Die Kuroda-Normalform ist eine Verallgemeinerung der Chomsky-Normalform, die eine Normalform für kontextfreie Grammatiken ist.

Definition

Eine formale Grammatik ist in Kuroda-Normalform (kurz KNF, nicht zu verwechseln mit „KNF“ – Konjunktive Normalform), wenn alle Produktionen die folgende Form haben:

  • Aa
  • AB
  • ABC
  • ABCD

wobei A, B, C und D Variablen sind und a ein Terminalsymbol ist.

Falls die zweite und die vierte Regelform nicht vorkommen, liegt die Grammatik in der Chomsky-Normalform vor.

Eigenschaften

  • Jede Grammatik in Kuroda-Normalform ist eine monotone Grammatik.
  • Zu jeder monotonen Grammatik G1 mit εL(G1) existiert eine monotone Grammatik G2 in Kuroda-Normalform, die die gleiche Sprache erzeugt, das heißt, L(G1)=L(G2). G2 wird dann auch eine Kuroda-Normalform der monotonen Grammatik G1 genannt.

Umwandlung einer Grammatik in Kuroda-Normalform

Sei G1=(V1,Σ,P1,S) eine monotone Grammatik mit ϵL(G1). Eine Kuroda-Normalform G2=(V2,Σ,P2,S) von G1 kann so konstruiert werden:

  • Alle in P1 auftretenden Terminalsymbole a, welche nicht alleine auftreten, werden jeweils durch eine neue Variable Aa ersetzt, und für jedes Terminalsymbol a wird die neue Produktionen Aaa eingeführt.
  • Jede Produktion der Form AA1A2Ak ersetzt man durch folgende neuen Produktionen: AA1B1, BiAi+1Bi+1 für alle i{1,,k3} und Bk2Ak1Ak. Dabei seien B1,,Bk2 neue Variablen.
  • Jede Produktion der Form A1A2AlB1B2Bk, 2lk mit 3k ersetzt man durch folgende neuen Produktionen: A1A2B1C1, für alle i{1,,l2}: CiAi+2Bi+1Ci+1, für alle i{l1,,k3}: CiBi+1Ci+1 und Ck2Bk1Bk. Dabei seien C1,,Ck2 neue Variablen.

Die so erzeugte Grammatik ist in Kuroda-Normalform und produziert dieselbe Sprache wie die Grammatik zuvor.

Révész-Normalform

Jede monotone Grammatik G1=(V1,Σ,P1,S) in Kuroda-Normalform kann in eine kontextsensitive Grammatik G2=(V2,Σ,P2,S) in Révész-Normalform überführt werden. Dazu werden für jede Produktionsregel der Form ABCDP1 zwei neue Nichtterminale W,ZV2 eingeführt und die Regel durch vier Regeln ersetzt:

  • ABAZ
  • AZWZ
  • WZWD
  • WDCD

Eine kontextsensitive Grammatik ist in Révész-Normalform, wenn alle Produktionen die folgende Form haben:

  • ABAC
  • ABCB
  • ABC
  • AB
  • Aa

Dabei sind A, B und C Variablen und a ist ein Terminalsymbol.

Zu jeder kontextsensitiven Grammatik G1 mit εL(G1) existiert eine kontextsensitive Grammatik G2 in Révész-Normalform, die die gleiche Sprache erzeugt, das heißt, L(G1)=L(G2).

Literatur