Ist der folgende Sprachkontext frei?
Wie von sdcvvc hervorgehoben, kann ein Wort in dieser Sprache auch als die Verkettung von zwei Wörtern gleicher Länge beschrieben werden, deren Hamming-Distanz 2 oder mehr beträgt.
Ich denke, es ist nicht kontextfrei, aber es fällt mir schwer, es zu beweisen. Ich habe versucht, diese Sprache mit einer regulären Sprache zu schneiden (wie zum Beispiel 0 ∗ 1 ∗ 0 ∗ 1 ∗ ), dann habe ich das Pumplemma und / oder die Homomorphismen verwendet, aber ich bekomme immer eine Sprache, die zu kompliziert ist, um sie zu charakterisieren und aufzuschreiben.
Antworten:
Hinweis [30.07.2019] Der Beweis ist falsch ... die Frage ist komplizierter als es klingt.
Nach einem gescheiterten Versuch hier ist es eine andere Idee.
Wenn wir schneidenL mit dem regulären Sprache Lr e g= 0∗10∗10∗10∗ wir eine CF Sprache erhalten.
Vielleicht können wir mehr Glück haben , wenn wir verwendenL′r e g= 0∗10∗10∗10∗10∗ (eine Zeichenkette mit genau 4 1s).
LetL1= L ∩ L′r e g , formlos w ∈ L1 , wenn es in zwei Teile gespalten Hälften werden kann, so dass eine Hälfte genau enthält { 0 , 1 , 3 , 4 } 1 s oder beiden Hälften zwei enthalten 1 s aber ihre Positionen stimmen nicht überein.
Angenommen,L1 ist CF und sei G seine Grammatik in Chomsky-Normalform, und sei
Wir haben| u | = | v | (gerade Länge) und d( u , v ) ≥ 2
Wenn wir unsere Aufmerksamkeit auf die Art und Weise beschränken, in der die vier Einsen vonw erzeugt werden können, haben wir die drei oben in Abbildung 1 gezeigten Fälle. Der zentrale Teil von Abbildung 1 zeigt den ersten Fall (die anderen sind jedoch ähnlich). .
Abbildung 1 (das vollständige Bild kann hier heruntergeladen werden )
Wenn wira = e , c = 2 a und b ,d≫ a wählen , sehen wir, dass die Nullen zwischen den beiden Einsenpaaren unabhängig voneinander pumpbar sein müssen (rote Knoten in der Abbildung): insbesondere für ausreichend große b ≫ a , Wir erhalten einen doppelten nicht-terminalen Knoten in einem internen Teilbaum (Knoten X in Abbildung 2) oder eine wiederholte Teilsequenz auf dem Weg zur ersten oder zweiten 1 (Knoten Y in Abbildung 2). Man beachte , dass 2 ein wenig vereinfacht: Es kann zwischen den zwei Nicht - Terminal - Knoten sein , X s, und auch zwischen den beiden Y.s ( Y.→ . . . → Zich→ . . . Y. aber mitZich ergibt das nur 0s rechts von der ersten 1).
Figur 2
Wir können also ein willkürlichesa = e = k , c = 2 a festlegen und dann ein ausreichend großes b auswählen , um einen unabhängig pumpbaren Knoten in der Folge von Nullen zwischen der ersten und der zweiten 1 . Für die Folge von Nullen zwischen der dritten und vierten 1 können wir d= b ! + b wählen ! + b . 0b ist unabhängig pumpbar, so dass es einen p ≤ b pumpbaren Teilstring y , dh so, dass b = x yz, | y| =p, | x | ≥0, | z| ≥0 undx yichz= b ! + b . Die Zeichenfolge, die wir erhalten, ist:
Aber
aberw′∉ L1 . Somit ist L1 nicht CF und schließlich ist L nicht CF.
Wenn der Beweis korrekt ist (???), kann er auf jede SpracheLk= { u v : | u | = | v | , d( u , v ) ≥ k } , k ≥ 2
quelle
Nach 2 fehlgeschlagenen Versuchen, die von @Hendrik Jan abgelehnt wurden (danke), ist hier ein weiterer, der nicht erfolgreicher ist. @Vor hat ein Beispiel für eine deterministische CF-Sprache gefunden, bei der die gleiche Konstruktion angewendet würde, wenn sie korrekt wäre. Dies ermöglichte es, einen Fehler bei der Verankerung des Strings in der Anwendung des Lemmas zu identifizieren . Das Lemma selbst scheint nicht schuld zu sein. Dies ist eindeutig eine zu vereinfachende Konstruktion. Weitere Details finden Sie in den Kommentaren.y
Die Sprache ist nicht kontextfrei.L = { u x v y∣ u , v , x , y∈ { 0 , 1 }∗{ ϵ } , ∣ u ∣ = ∣ v ∣ , u ≠ v , ∣ x ∣ = ∣ y ∣ , x ≠ y }
Es ist hilfreich, die Charakterisierung berücksichtigen u | = | v | , d ( u , v ) ≥ 2 } wobei d die Hamming-Distanz ist, vorgeschlagen von @sdcvvc. Woran man denken muss, sind 2 ausgewählte Positionen in jeder halben Saite, so dass sich die entsprechenden Symbole unterscheiden.L = { u v : | u | = | v | , d( u , v ) ≥ 2 }
Dann betrachten Sie eine Zeichenkette so, dass i < j und i + j gerade sind. Es ist eindeutig in der Sprache L, indem u und x irgendwo zwischen den beiden Einsen geschnitten werden. Wir wollen diese Zeichenkette im ersten Teil zwischen den Einsen pumpen, damit sie 10 j 10 j wird, was nicht in der Sprache sein soll.10ich10j i < j i + j u x 10j10j
Wir versuchen zunächst, Ogdens Lemma zu verwenden , das dem Pump-Lemma ähnelt, aber auf oder mehr auffällige Symbole angewendet wird , die in der Zeichenfolge markiert sind, wobei p die Pumplänge für markierte Symbole ist (aber das Lemma kann mehr pumpen, weil es auch pumpen kann nicht markierte Symbole). Die Pumplänge p hängt nur von der Sprache ab. Dieser Versuch wird fehlschlagen, aber der Fehler wird ein Hinweis sein.p p p
Wir können dann wählen und Symbole in der ersten Folge von i 0 markieren . Wir wissen, dass keine der beiden Einsen in der Pumpe sein wird, weil sie einmal herauspumpen kann (Exponent 0), anstatt hinein zu pumpen. Und das Herauspumpen der Einsen würde uns aus der Sprache bringen.i = p ich
Wir könnten jedoch auf beiden Seiten der zweiten 1 genauso schnell oder sogar schneller auf der rechten Seite pumpen, so dass die zweite 1 niemals durch die Mitte der Saite gelangen würde. Auch Ogdens Lemma legt keine Obergrenze für die Größe des zu pumpenden Materials fest, so dass es nicht möglich ist, das Pumpen so zu organisieren, dass die genaueste 1 genau in der Mitte der Saite liegt.
Wir verwenden eine modifizierte Version des Lemmas, hier Nash's Lemma genannt, die diese Schwierigkeiten bewältigen kann.
Wir brauchen zuerst eine Definition (es hat wahrscheinlich einen anderen Namen in der Literatur, aber ich weiß nicht welche - Hilfe ist willkommen). Eine Zeichenkette wird als Löschen einer Zeichenkette v bezeichnet, wenn sie aus v durch Löschen von Symbolen in v erhalten wird . Wir werden u ≺ v beachten .u v v v u ≺ v
Nashs Lemma: Wenn eine kontextfreie Sprache ist, gibt es zwei Zahlen p > 0 und q > 0, so dass für jede Zeichenfolge w mit einer Länge von mindestens p in L und für jede Art, p oder mehr der Zeichenfolgen zu „markieren“, gilt Positionen in w , w können wie folgt geschrieben werden: w = u x y z v mit der Zeichenfolge u , x , y , z , v , so dassL p > 0 q> 0 w p L p w w w = u x yzv u x y z v
Beweis : Ähnlich wie der Beweis von Ogdens Lemma, jedoch werden die Teilbäume, die den Zeichenfolgen und x z entsprechen, so beschnitten, dass sie keinen Pfad mit dem doppelten gleichen nicht-terminalen Wert enthalten (mit Ausnahme der Wurzeln dieser beiden Teilbäume). Dies notwendigerweise begrenzt die Größe der erzeugten Zeichenfolge x z und y durch eine Konstante q . Die Zeichenfolgen x j und z j für j ≥ 0 , die einer unbeschnittenen Version des Baums entsprechen, werden hauptsächlich mit j = 1 verwendety x z x^z^ y^ q xj zj j≥0 j=1 Vereinfachung der Rechnungslegung bei Anwendung des Lemmas.
Wir ändern den obigen Beweis Versuch die Markierung ganz links Symbole 0, aber sie werden von gefolgt 2 q Symbole 0 , um sicherzustellen , dass wir im linken Teil des Strings, zwischen den beiden 1 der Pumpe. Dass insgesamt machen i = p + 2 q 0'en zwischen der 1'en (tatsächlich i = p + q wäre ausreichend, da die am weitesten rechts liegenden 1 nicht sein kann , z , die einfach zu entfernen erlauben würden).p 2q i=p+2q i=p+q z^
Was bleibt, ist gewählt zu haben, damit wir genau die richtige Anzahl von Nullen pumpen können, so dass die beiden Sequenzen gleich sind. Bisher besteht die einzige Einschränkung für j darin, größer als i zu sein . Und wir wissen auch, dass die Anzahl der Nullen, die bei jedem Pumpen gepumpt werden, zwischen 1 und q liegt. Also sei h Produkt der ersten q ganzen Zahlen. Wir wählen j = i + h .j j i h q j=i+h
Da das Pumpinkrement - was auch immer es ist - in [ 1 , q ] ist , teilt es h . Sei k der Quotient. Wenn wir genau k- mal pumpen , erhalten wir einen String 10 j 10 j, der nicht in der Sprache ist. Daher ist L nicht kontextfrei.d [1,q] h k k 10j10j
.
Ich denke, ich werde niemals
eine Schnur sehen, die so schön ist wie ein Baum.
Wenn es keine Syntaxanalyse gibt, ist
die Zeichenfolge nichts anderes als eine Farce
quelle
Durch diese Frage denke ich, dass kontextfrei ist und durch die folgende Grammatik erzeugt wirdL SABXY→AXBY∣BYAX→0∣0A0∣0A1∣1A0∣1A1→1∣0B0∣0B1∣1B0∣1B1→0∣0X0∣0X1∣1X0∣1X1→1∣0Y0∣0Y1∣1Y0∣1Y1
quelle