Gibt es Permutationen und Polynomgröße (in ) kontextfreie Grammatik, die die endliche Sprache über Alphabet ?| w | = n { w π 1 ( w ) π 2 ( w ) } { 0 , 1 }
UPDATE: Für eine Permutation es möglich. ist die Umkehrung oder relativ geringfügige Modifikation der Umkehrung.π
Antworten:
Chomsky Normalform
Ein CFG liegt in CNF (Chomsky-Normalform) vor, wenn die einzigen Produktionen die Form und A → B C haben ; Eine Grammatik kann mit nur quadratischer Vergrößerung zu CNF gebracht werden.A→a A→BC
Für eine Grammatik in CNF haben wir das schöne Unterwort Lemma: Wenn G ein Wort w erzeugt , gibt es für jedes ℓ ≤ w ein Unterwort x von w der Länge ℓ / 2 ≤ | x | < ℓ, das von einem Nicht-Terminal von G erzeugt wird . Beweis: Steigen Sie vom (binären) Syntaxbaum ab und gehen Sie immer zu dem Kind, das das längere Unterwort generiert. Wenn Sie mit einem Teilwort der Größe zumindest begonnen l , können Sie nicht haben unten gegangen l / 2 .G G w ℓ≤w x w ℓ/2≤|x|<ℓ G ℓ ℓ/2
Lösung
Ohne Verlust der Allgemeinheit können wir annehmen, dass eine Grammatik für (eine solche Sprache mit spezifischem π 1 , π 2 ∈ S n ) in Chomsky-Normalform vorliegt. Die Sprache L n besteht aus den Wörtern w ( x ) = x π 1 ( x ) π 2 ( x ) für alle x ∈ { 0 , 1 } n .Ln π1,π2∈Sn Ln w ( x ) = x π1( x ) π2( x ) x ∈ { 0 , 1 }n
Mit dem Unterwort Lemma können wir für jedes einen Teilstring s ( x ) der Länge n findenw ( x ) s ( x ) wird durch ein SymbolA(x) erzeugtund tritt an der Positionp(x) auf.
Angenommen, und A ( x ) = A ( y ) . Da | s ( x ) | < n kann das Unterwort s ( x ) nicht sowohl den x- Teil als auch den π 2 ( x ) -Teil von w ( x ) schneiden ; wir können annehmen, dass es vom x- Teil getrennt ist. Also wp(x)=p(y) A(x)=A(y) |s(x)|<n s(x) x π2(x) w(x) x hat die Form x α s ( x ) β . Dies impliziert, dass A ( x ) genau eine Zeichenfolge erzeugt, nämlich s ( x ) . Daher ist s ( x ) = s ( y ) .w(x) xαs(x)β A(x) s(x) s(x)=s(y)
Jetzt schneidet entweder π 1 ( y ) oder π 2 ( y ) an mindestens n / 4 Stellen und bestimmt somit mindestens n / 4 Bits von y . Daher höchstens 2 3 n / 4 Strings y ∈ { 0 , 1 } n haben kann p ( x ) = p ( y )s(y) π1(y) π2(y) n/4 n/4 y 23n/4 y∈{0,1}n p(x)=p(y) und . Da es für p ( y ) höchstens 3 n Möglichkeiten gibt, erhalten wir mindestens 2 n / 4A(x)=A(y) 3n p(y) verschiedene Nicht-Terminals in der Grammatik.
Kommentar: Der gleiche Beweis funktioniert, wenn , dh beliebige Permutationen auf der Menge aller n- Bit-Wörter sind. Bei n / 4 Bits von π i ( y ) gibt es genau 2 3 n / 4 Vorbilder y .π1,π2∈S{0,1}n n n/4 πi(y) 23n/4 y
Mehr Beispiele
Mit der gleichen Methode kann nachgewiesen werden, dass für die Sprache, in der jedes Zeichen genau zweimal vorkommt, ein CFG mit exponentieller Größe in der Größe des Alphabets erforderlich ist. Wir können "zweimal" durch eine andere Teilmenge von als vier triviale ersetzen (wobei 0 ignoriert wird und entweder keine von N ≥ 1 oder alles davon enthält).N 0 N≥1
Ich würde mich über eine Referenz für diese Beweismethode freuen.
quelle