Wie kann man beweisen, dass eine Sprache nicht regelmäßig ist?


75

Wir haben etwas über die Klasse der regulären Sprachen gelernt . Es zeichnet sich durch ein beliebiges Konzept aus regulären Ausdrücken, endlichen Automaten und linkslinearen Grammatiken aus, sodass leicht gezeigt werden kann, dass eine bestimmte Sprache regulär ist.REG

Wie zeige ich das Gegenteil? Mein TA hat darauf bestanden, dass wir dazu für alle regulären Ausdrücke (oder für alle endlichen Automaten oder für alle linkslinearen Grammatiken) nachweisen müssen, dass sie die jeweilige Sprache nicht beschreiben können. Das scheint eine große Aufgabe zu sein!

Ich habe etwas über pumpfähiges Lemma gelesen, aber es sieht wirklich kompliziert aus.

Hierbei handelt es sich um eine Referenzfrage, in der übliche Nachweismethoden und Anwendungsbeispiele gesammelt werden. Sehen Sie hier für die gleiche Frage auf kontextfreien Sprachen.

Antworten:


60

Ein Widerspruchsbeweis wird häufig verwendet, um zu zeigen, dass eine Sprache nicht regulär ist: Lassen Sie eine Eigenschaft für alle regulären Sprachen gelten. Wenn Ihre spezifische Sprache P nicht verifiziert , ist sie nicht regulär. Die folgenden Eigenschaften können verwendet werden:PP

  1. Das pumpfähige Lemma, wie in Daves Antwort veranschaulicht ;
  2. Schließungseigenschaften regulärer Sprachen (Mengenoperationen, Verkettung, Kleene-Stern, Spiegel, Homomorphismen);
  3. Eine reguläre Sprache hat eine endliche Anzahl von Präfixäquivalenzklassen, Myhill-Nerode-Theorem .

Um zu beweisen, dass eine Sprache Verwendung von Abschlusseigenschaften nicht regelmäßig ist, besteht die Technik darin, L mit regulären Sprachen durch Operationen zu kombinieren , die die Regelmäßigkeit bewahren, um eine Sprache zu erhalten, die als nicht regelmäßig bekannt ist, z. B. die archetypische Sprache I = { a n b n | n N } . Zum Beispiel sei L = { a p b q | p q } . Angenommen, L ist regulär, da reguläre Sprachen durch Komplementation geschlossen werden, ist L auch Komplement LLLI={anbn|nN}L={apbq|pq}LL . Nehmenwirnun den Schnittpunkt von L c und a b ⋆, der regulär ist. Wir erhalten I, der nicht regulär ist.LcLcabI

Der Myhill-Nerode-Satz kann verwendet werden, um zu beweisen, dass nicht regulär bin . Für p 0 ist I / a p = { a r b r b p | r N } = I . { b p } . Alle Klassen sind unterschiedlich und es gibt unzählige solcher Klassen. Da eine reguläre Sprache eine begrenzte Anzahl von Klassen haben muss, bin ich nicht regulär.Ip0I/ap={arbrbp|rN}=I.{bp}I


3
Ich wusste nichts über den Myhill-Nerode-Satz, cool!
Daniil

Wikipedia hat auch einen Abschnitt über die Anzahl der Wörter in einer regulären Sprache: Wenn Sie nachweisen können, dass Ihre Sprache nicht mit der Charakterisierung übereinstimmt, dann ist Ihre Sprache nicht regulär: de.wikipedia.org/wiki/…
Alex ten Brink

@Daniil, reguläre Ausdrücke können nicht zählen, scheint mir eine beliebte informelle Formulierung des Myhill-Nerode-Theorems zu sein.
AProgrammer

@AlextenBrink: Das ist ordentlich. Ich vermute, die Konstanten in der Anweisung sind die Eigenwerte des Automaten Laplace? Dies wäre eine schöne Ergänzung zu den Antworten hier.
Louis

@ Louis: Eigentlich haben wir für dieses Theorem überhaupt keine Referenz gefunden. Wenn Sie also mehr darüber wissen ... Siehe auch: cs.stackexchange.com/questions/1045/…
Alex ten Brink

37

Basierend auf Daves Antwort finden Sie hier ein schrittweises "Handbuch" für die Verwendung des Pump-Lemmas.

Erinnern Sie sich an das pumpfähige Lemma (entnommen aus Daves Antwort aus Wikipedia):

Sei L eine reguläre Sprache. Dann gibt es eine ganze Zahl n1 (nur in Abhängigkeit von L ), so dass jede Kette w in L einer Länge von mindestens n ( n wird als "Pumplänge" bezeichnet) wie folgt geschrieben werden kann: w=xyz (dh w kann) in drei Teilzeichenfolgen unterteilt sein), die die folgenden Bedingungen erfüllen:

  1. |y|1
  2. |xy|n und
  3. a "gepumpt" w ist noch in L : für alle i0 , xyizL .

Angenommen, Ihnen wird eine Sprache L und Sie möchten zeigen, dass sie über das Pumplemma nicht regelmäßig ist. Der Beweis sieht so aus:

  1. Angenommen, L ist regelmäßig.
  2. Wenn es regelmäßig ist, sagt das Pumplemma, dass eine Zahl n die die Pumplänge ist.
  3. Wählen Sie ein spezifisches Wort wL der Länge größer ist als n . Der schwierige Teil ist zu wissen, welches Wort zu nehmen ist.
  4. Betrachten Sie ALLE Möglichkeiten, w mit | in 3 Teile zu unterteilen, w=xyzx y | n und y nicht leer. Zeigen Sie für jede dieser Möglichkeiten, dass sie nicht gepumpt werden kann: Es gibt immer einige i 0, so dass x y i z L ist .|xy|nyi0xyizL
  5. Fazit: Das Wort w kann nicht "gepumpt" werden (egal wie wir es in xyz aufteilen ), im Gegensatz zum Pumplemma, dh unsere Annahme (Schritt 1) ​​ist falsch: L ist nicht regulär.

Bevor wir zu einem Beispiel gehen, lassen Sie mich noch einmal Schritt 3 und Schritt 4 wiederholen (hier machen die meisten Leute Fehler). In Schritt 3 müssen Sie ein bestimmtes Wort in L auswählen . schreibe es explizit auf, wie "00001111" oder " anbn ". Beispiele für Dinge, die kein bestimmtes Wort sind: " w " oder "ein Wort, das 000 als Präfix hat".

Andererseits müssen Sie in Schritt 4 mehr als einen Fall berücksichtigen. Wenn beispielsweise w=000111 ist, reicht es nicht aus, x=00,y=01,z=00 zu sagen und dann einen Widerspruch zu erreichen. Sie müssen auch x=0,y=0,z=0111 und x=ϵ,y=000,z=111 und alle anderen möglichen Optionen überprüfen .


Folgen wir nun den Schritten und beweisen Sie, dass L={0k12kk>0} nicht regulär ist.

  1. Angenommen, L ist regelmäßig.
  2. Sei n die Pumplänge, die durch das Pumplemma gegeben ist.
  3. Sei w=0n12n .
    (Plausibilitätsprüfung: |w|>n nach Bedarf. Warum dieses Wort? Andere Wörter können ebenfalls funktionieren. Es bedarf einiger Erfahrung, um das richtige w ) Beachten Sie erneut, dass w ein bestimmtes Wort ist: 0000n times11112n times .
  4. Betrachten wir nun die verschiedenen Fälle, um w mit | in xyz aufzuteilen x y | n und | y | > 0 . Seit | x y | < n egal wie wir w teilen , x besteht nur aus Nullen und y ebenfalls . Nehmen wir an | x | = s und | y | = k . Wir müssen ALLE Optionen in Betracht ziehen, das sind alle möglichen s|xy|n|y|>0|xy|<nwxy|x|=s|y|=ks,k so dasss0,k1 unds+kn . FÜR DIESESL der Beweis für alle diese Fälle der gleiche, aber im Allgemeinen kann er unterschiedlich sein.
    nimmi=0 und betrachtexyiz=xz . Dieses Wort ist NICHT inL da es die Form0nk12n (egal wass undkwaren), und da k1 , ist dieses Wort nicht in L und wir erreichen einen Widerspruch.
  5. Daher ist unsere Annahme falsch und L ist nicht regelmäßig.

Ein YouTube-Clip, in dem erklärt wird, wie man das pumpfähige Lemma in die gleiche Richtung verwendet, ist hier zu finden


1
Es ist n, das die Pumplänge in dieser Definition ist!
Saadtaame

28

Aus Wikipedia ist die Pumpensprache für reguläre Sprachen die folgende:

Sei eine reguläre Sprache. Dann existiert eine ganze Zahl p 1 (abhängig nur von L ), so dass jede Kette w in L mit einer Länge von mindestens p ( p wird als "Pumplänge" bezeichnet) wie folgt geschrieben werden kann: w = x y z (dh w kann in drei Teilzeichenfolgen unterteilt sein), die die folgenden Bedingungen erfüllen:Lp1LwLppw=xyzw

  1. |y|1
  2. und |xy|p
  3. für alle , x y i z L . y ist die Teilzeichenfolge, die gepumpt werden kann (entfernt oder beliebig oft wiederholt, und die resultierende Zeichenfolge ist immer in L ). i0xyizL
    yL

(1) bedeutet, dass die zu pumpende Schleife y mindestens eine Länge haben muss; (2) bedeutet, dass die Schleife innerhalb der ersten p Zeichen auftreten muss. Es gibt keine Einschränkung für x und z.

In einfachen Worten: Für jede reguläre Sprache L kann jedes ausreichend lange Wort in drei Teile geteilt werden. dh w = x y z , so dass alle Zeichenketten x y k z für k 0 auch in L sind .wLw=xyzxykzk0L

Betrachten wir nun ein Beispiel . Es sei .L={(01)n2nn0}

Um zu zeigen, dass dies nicht regulär ist, müssen Sie überlegen, wie alle Zerlegungen aussehen, und wie alle möglichen Dinge x, y und z lauten, wenn x y z = ( 01 ) p 2 p (Wir sehen uns dieses spezielle Wort mit der Länge 3 p an , wobei p die Pumplänge ist.) Wir müssen uns überlegen, wo der y- Teil der Zeichenfolge vorkommt. Sie könnte sich mit dem ersten Teil überschneiden und ist daher entweder ( 01 ) k + 1 , ( 10 )w=xyzxyz=(01)p2p3ppy(01)k+1 ,1(01 ) k oder0(10 ) k , für einigek0(vergessen Sie nicht, dass | y |1 ist). Es könnte sich mit dem zweiten Teil überschneiden, was bedeutet, dassy= 2 k ist , für einigek>0. Oder es könnte sich über die beiden Wortteile hinweg überschneiden und die Form(01 ) k + 1 2 l ,(10 ) k haben(10)k+11(01)k0(10)kk0|y|1y=2kk>0(01)k+12l ,1(01 ) k 2 l oder0(10 ) k 2 l fürk0undl1.(10)k+12l1(01)k2l0(10)k2lk0l1

Pumpen Sie nun jeden einzelnen, um einen Widerspruch zu erhalten, der ein Wort ist, das nicht in Ihrer Sprache vorkommt. Wenn wir zum Beispiel , sagt das Pumplemma zum Beispiel, dass x y 2 z = x 0 ( 10 ) k 2 l 0 ( 10 ) k 2 l z in der sein muss Sprache, für eine entsprechende Auswahl von x und z . Dieses Wort kann jedoch nicht in der Sprache vorkommen, da eine 2 vor einer 1 steht .y=0(10)k2lxy2z=x0(10)k2l0(10)k2lzxz21

Andere Fälle führen dazu, dass die Anzahl von größer ist als die Anzahl von 2 oder umgekehrt, oder es entstehen Wörter, die beispielsweise nicht die Struktur ( 01 ) n 2 n haben Zwei Nullen hintereinander.(01)2(01)n2n0

Vergessen Sie nicht , dass . Hier ist es sinnvoll , den Beweis zu verkürzen: viele der Zersetzungen oben sind unmöglich , weil sie das machen würde z Teil zu lang.|xy|pz

Jeder der oben genannten Fälle muss zu einem solchen Widerspruch führen, der dann ein Widerspruch zum Pumplemma wäre. Voila! Die Sprache wäre nicht regelmäßig.


Ein Beispiel, in dem die Hypothese wird benötigt wäre nett. |xy|p
Gilles

@Gilles: Ich bin mir nicht mal sicher, was der von Ihnen hinzugefügte Satz bedeutet.
Dave Clarke

@ Gilles: Ich denke, dass alle Zerlegungen möglich sind, nur dass begrenzt sein wird. Ich bin mir nicht sicher, was es mit der Länge von z zu tun hat . kz
Dave Clarke

Duh! Ich sehe es jetzt. Vielen Dank. Es schließt jedoch keine der in der Antwort genannten Zersetzungsformen aus; es begrenzt nur, welche Werte von und l ich annehmen kann. kl
Dave Clarke

1
Die Menge an Bearbeitung, die durchgeführt wurde, um eine so einfache Frage zu beantworten, lässt mich wundern, warum jeder das pumpfähige Lemma als "den" Weg lehrt, Unregelmäßigkeiten zu beweisen. Warum nimmst du aus Neugier nicht einfach deine Saite als ? Das pumpfähige Lemma sagt dir, dass y keine 2 s enthält, woraus sich ein Widerspruch ergibt. (01)2p22py2
Louis

14

Für eine gegebene Sprache , lassenLΣ

SL(z)=n0|LΣn|zn

die (gewöhnliche) Erzeugungsfunktion von , dh ihre Folge von Wortzählungen pro Länge.L

Die folgende Anweisung lautet [ FlSe09 , p52]:

LREGSL rational

Das heißt, mitP,QPolynomen.SL(z)=P(z)Q(z)P,Q

So ist jede Sprache, deren Erzeugungsfunktion nicht rational ist, nicht regulär. Leider haben alle linearen Sprachen auch rationale Generierungsfunktionen¹, sodass diese Methode für die einfacheren nicht regulären Sprachen nicht funktioniert. Ein weiterer Nachteil ist, dass es schwierig sein kann , (und zu zeigen, dass es nicht rational ist).SL

Beispiel: Betrachten Sie die Sprache korrekt geschachtelter Wörter in Klammern, dh die Dyck-Sprache . Es wird durch die eindeutige Grammatik erzeugt

S[S]Sε

was in die Gleichung übersetzt werden kann

S(z)=z2S2(z)+1

eine Lösung (die mit allen positiven Koeffizienten) davon ist

.S(z)=114z22z2

Da [ Kuic70 ] und S nicht rational sind, ist die Dyck-Sprache nicht regulär.SL=SS


  1. Der Beweis für die Aussage für reguläre Sprachen erfolgt über Grammatiken und wird sofort in lineare Grammatiken übertragen (Kommutativität der Multiplikation).

  [FlSe09] Analytic Combinatorics von P. Flajolet und R. Sedgewick (2009) [Kuic70] Über die Entropie kontextfreier Sprachen von W. Kuich (1970)
  


13

Dies ist eine erweiterte Version meiner Antwort von hier Pumping Lemma Mit Sprache zu beweisen , ist nicht regulärL={(01)m2mm0} , da es sich hierbei um eine Referenz Frage sein.

Sie denken also, das pumpfähige Lemma sieht kompliziert aus? Mach dir keine Sorgen. Hier ist ein etwas anderer Ansatz, der sich auch in der Antwort von @ Romuald verbirgt. (Quiz: wo?)

Beginnen wir damit, uns daran zu erinnern, dass jede reguläre Sprache von einem deterministischen Finite-State-Automaten (DFA) akzeptiert wird. Ein DFA ist ein endlich gerichteter Graph, bei dem jeder Scheitelpunkt genau eine Außenkante für jeden Buchstaben im Alphabet hat. Zeichenfolgen geben Ihnen einen Rundgang im Diagramm, der auf einem Scheitelpunkt mit der Bezeichnung "Start" basiert, und der DFA akzeptiert, wenn dieser Rundgang auf einem Scheitelpunkt mit der Bezeichnung "Akzeptieren" endet. (Die Eckpunkte werden "Zustände" genannt, weil verschiedene Bereiche der Mathematik gerne ihre eigene Terminologie für die gleiche Sache bilden.)

Mit dieser Denkweise ist es einfach , zu sehen , dass: Wenn Strings und b die DFA in den gleichen Zustand fahren, dann für jede andere Zeichenfolge c , a c und b c die DFA in den gleichen Zustand fahren. abcacbcWarum? Denn der Ausgangspunkt eines Spaziergangs und die ihn definierende Schnur bestimmen das Ende vollständig.

Etwas anders ausgedrückt: Wenn regulär ist und die Zeichenfolgen a und b einen Erkennungsautomaten in denselben Zustand versetzen, dann sind für alle Zeichenfolgen c entweder a c und b c beide in L oder keine von beiden .LabcacbcL

Wir können dies verwenden, um zu zeigen, dass Sprachen nicht regelmäßig sind, indem wir sie uns vorstellen und dann und b einführen, um einen DFA in den gleichen Zustand zu versetzen, und c, sodass a c in der Sprache ist und b c nicht. Die Beispielsprache entnehmen Sie bitte der Antwort von @ Dave. Stellen Sie sich vor, es ist regulär, sodass es einige anerkennende DFAs mit m Zuständen gibt. Das Pigeon Hole-Prinzip besagt, dass mindestens zwei von { ( 01 ) i : 0 i m + 1 } den DFA in denselben Zustand versetzen, dh a = ( 01)abcacbcm{(01)i:0im+1} und b = ( 01 ) q . Da p q ist , sehen wir, dass a 2 p in der Sprache ist und b 2 p nicht, so dass diese Sprache nicht regulär sein kann.a=(01)pb=(01)qpqa2pb2p

Das Schöne ist, dass das Beispiel wirklich eine Vorlage ist, um zu beweisen, dass Sprachen nicht regelmäßig sind:

  • Finden Sie eine Familie von Zeichenfolgen mit der Eigenschaft, dass jede von ihnen einen "Schwanz" t i hat, so dass a i t i in der Sprache und a i t j ist , weil i j nicht ist.{ai:iN}tiaitiaitjij
  • Wende das obige Argument wörtlich an. (Dies ist zulässig, da es immer genug , um das Pigeon Hole-Prinzip aufzurufen.)ai

Es gibt noch andere Tricks, aber dieser wird bei den meisten Ihrer Hausaufgaben problemlos funktionieren.

Bearbeiten: Eine frühere Version hatte einige Diskussion darüber, wie sich diese Idee auf das Pumping Lemma bezieht.


Ich denke nicht, dass es allgemein nützlich ist, den Beweis von Pumping Lemma zu reproduzieren, sondern YMMV. Den Beweis zu verstehen ist auf jeden Fall gut; Es ist unmittelbar mit einer Reihe von Abschlüssen und anderen interessanten Eigenschaften endlicher Automaten und regulärer Sprachen verbunden. Ich stimme dem letzten Satz jedoch überhaupt nicht zu: Die Automatentheorie ist überhaupt nicht langweilig, und sie ist mit Sicherheit nicht der langweiligste Teil des Theorieunterrichts.
Raphael

@ Louis In Ihrer Antwort, wie Sie mit dieser Aussage we see that a2p is in the language and b2p is not, so this language can't be regular.im letzten kommen. Bitte geben Sie ein Beispiel
Himanshu

@Himanshu und b bringen Sie beide in den gleichen Zustand q 1 . Also, was auch immer Sie danach lesen (abq1 hier), bringt Sie in den gleichen Zustand q 2 , unabhängig davon, mit was Sie begonnen haben - a oder b . 2pq2ab
Al.G.

7

Im Anschluss an die Antwort hier , werde ich eine Methode zu beweisen , nicht-Regelmäßigkeit basierend auf Kolmogorv Komplexität beschreiben.

Dieser Ansatz wird in "Ein neuer Ansatz zur formalen Sprachtheorie durch Kolmogorov-Komplexität" von Ming Li und Paul MB Vitanyi diskutiert (siehe Abschnitt 3.1).

Lassen bezeichnen die Kolmogorov - Komplexität eines Strings x , dh die Länge der kürzesten Codierung einer Turingmaschine M , so dass M ( ε ) = x (jedes der üblichen Definitionen tun wird). Man kann dann das folgende Lemma verwenden, um die Unregelmäßigkeit zu beweisen:K(x)xMM(ϵ)=x

KC-Gleichmäßigkeits : Let eine reguläre Sprache sein, so gibt es eine Konstante c , die nur davon abhängt , L , so dass für alle x & egr ; & Sgr; * , Wenn y ist die n ' t h Zeichenfolge (bezogen auf die lexikographische Ordnung ) in L x = { y LΣcLxΣynth , dannK(y)O(logn)Lx={yΣ|xyL} .K(y)O(logn)+c

Man kann verstehen (und beweisen) , um die oben Lemma wie folgt für alle , die beschreiben n ' t h Zeichenfolge in L x ein angeben muss:xΣnthLx

  • Der Automat, der L akzeptiertL
  • Der Zustand im Automaten nach der Verarbeitung des Präfixes x
  • Der Index n

Da wir uns nur den Zustand nach der Verarbeitung von x merken müssenx und nicht selbst, können wir diesen Faktor in Abhängigkeit von L in der Konstanten ausblenden. Der Index n benötigtzur Beschreibung log n Bits, und wir erhalten das obige Ergebnis (der Vollständigkeit halber muss man die spezifischen Anweisungen hinzufügen, die zur Erzeugung von y erforderlich sind, aber dies fügt der endgültigen Beschreibung nur einen konstanten Faktor hinzu).xLnlogny

Dieses Lemma zeigt, wie man die Kolmogorov-Komplexität aller Saiten, deren Mitglieder sind, begrenzt für einige reguläre Sprache L und x & egr ; & Sgr; * . UmUnregelmäßigkeitenzu zeigen, kann man annehmen, dass L regulär ist, und beweisen, dass die Grenzen zu restriktiv sind (z. B. begrenzte Kolmogrov-Komplexität für eine unendliche Menge von Zeichenfolgen).LxLxΣL

Die oben verlinkte Antwort enthält ein Beispiel für die Verwendung dieses Lemmas, um zu zeigen p is prime } ist nicht regulär, einige weitere Beispiele finden Sie in der Arbeit. Der Vollständigkeit halber zeigen wir hier, wie man beweistL={1p|p is prime} ist nicht regulär.L={0n1n|n0}

Gegeben einige bezeichnen wir mit y x i das i ' t h Wort in L x . Man beachte, dass y 0 i 1 = 1 i . Wenn wir das obige Lemma verwenden und uns auf die Präfixe x der Form x = 0 i und n = 1 konzentrieren , erhalten wir ) c . Da y 0 i 1 = 1x{0,1}yixithLxy10i=1ixx=0in=1i0:K(y10i)cy10i=1iDies bedeutet, dass wir die Kolmogorov-Komplexität aller Zeichenketten der Form durch eine Konstante begrenzen können , was offensichtlich falsch ist. Es ist erwähnenswert, dass wir ein einzelnes x , z. B. x = 0 n, für groß genug n hätte untersuchen können , das K ( 0 n ) log1ixx=0nn(wir beginnen mit einem Präfix mit hoher Komplexität). Da y x 1 = 1 n ist , erhalten wirK(0n)logny1x=1n , Widerspruch (nehme an, n > 2 c ).K(1n)<cn>2c


7

Bei unären Sprachen (Sprachen über einem Alphabet der Größe 1) gibt es ein einfaches Kriterium. Lassen Sie uns ein Alphabet festlegen und für A N L ( A ) = { σ n : n A } definieren .{σ}AN

L(A)={σn:nA}.

Satz. Lassen . Folgendes ist äquivalent:AN

  1. ist regelmäßig.L(A)

  2. ist kontextfrei.L(A)

  3. Es gibt so dass für alle n n 0 gilt, dass n A ist, wenn n + m A istn0,m1nn0nAn+mA . (Wir sagen , dass ist schließlich periodisch .)A

  4. Lassen Sie . Dann 0. a 0 aai=1iA rational.0.a0a1a2

  5. Die Erzeugungsfunktion ist eine rationale Funktion.iAxi

Der Satz kann auf viele Arten bewiesen werden, zum Beispiel mit dem Pump-Lemma, der Myhill-Nerode-Theorie, dem Satz von Parikh, der Struktur von DFAs auf unären Sprachen (sie sehen aus wie ein ", wie in Pollards ρ- Algorithmus) und so weiter . Hier ist eine nützliche Folgerung.ρρ

Logische Folge. Sei und nehme an, dass L ( A ) regulär ist.ANL(A)

  1. Die Grenze existiert. (Dies ist dieasymptotische DichtevonA.)ρ=limn|A{1,,n}|nA

  2. Ist so ist A endlich.ρ=0A

  3. Wenn dann A cofinite ist (das heißt, ¯ A endlich ist ).ρ=1AA¯

Zum Beispiel die Sprache nicht regulär, da die Menge eine verschwindende asymptotische Dichte hat und dennoch unendlich ist.L({2n:n0})


4

Die Klasse der regulären Sprachen wird durch verschiedene Abschlussoperationen geschlossen, z. B. Vereinigung, Schnittmenge, Komplement, Homomorphismus, reguläre Substitution, inverser Homomorphismus und mehr. Dies kann verwendet werden, um zu beweisen, dass eine bestimmte Sprache nicht regelmäßig ist, indem sie auf eine Sprache reduziert wird, von der bereits bekannt ist, dass sie nicht regelmäßig ist.

Nehmen wir als sehr einfaches Beispiel an, wir wissen, dass die Sprache {anbn:n0} nicht regulär ist. Dann können wir beweisen, dass die Sprache {w{a,b}:#a(w)=#b(w)} (die Sprache aller Wörter mit gleich vielen a s und b s) wie folgt nicht regelmäßig ist:

Angenommen, L={w{a,b}:#a(w)=#b(w)} regulär. Dann wäre auch Lab regulär. Aber Lab={anbn:n0} , von dem bekannt ist, dass es nicht regelmäßig ist.

Hier ist ein komplizierteres Beispiel. Zeigen wir, dass die Sprache L={(0+1)n2(0+1)n:n0} nicht regulär ist.

Sei h die Homomorphismus-Abbildung, die gegeben ist durch h(0)=0 , h(1)=1 , h(2)=ϵ . Wenn L regelmäßige wurden dann würde so die folgende Sprache sein: h(L021)={0n1n:n0} . Wir wissen jedoch, dass Letzteres nicht regelmäßig ist.

Schließlich ist hier ein Beispiel mit inversem Homomorphismus. Zeigen wir, dass die Sprache L={0n10n:n0} nicht regulär ist.

Sei k der Homomorphismus, gegeben durch k(0)=0 , k(1)=0 , k(2)=1 . Wenn L regulär wäre, wäre es k1(L) , aber das ist nur die Sprache L aus dem vorhergehenden Beispiel.


3

Verwenden Sie die Myhill-Nerode-Theorie.

Lassen L eine Sprache. Wir sagendaß zwei Wortex,y sindinäquivalentenmoduloL (oder: mit Bezug aufL )wenn es ein Wort existiertz , so dass genau eine vonxz,yz in istL . In jedem DFA fürL istδ(q0,x)δ(q0,y) (Übung). Dies impliziert das folgende Kriterium:

Sei L eine Sprache. Nehmen wir an, dass es eine unendliche Menge von paarweise inäquivalenten Worten besteht (das heißt, eine unendliche Menge S , so daß irgendwelche zwei nicht gleich x,yS sind inäquivalenten modulo L ). Dann ist L nicht regelmäßig.

Hier ist ein einfaches Beispiel für die Anwendung dieses Kriteriums:

Die Sprache L={anbn:n0} ist nicht regulär.

Beweis. Sei S={an:n0} . Wir behaupten, dass zwei verschiedene Wörter inS inequivalentes ModuloL . In der Tat, lassen Sieai,ajS , woij . DannaibiL aberaibjL .

Ein wichtiges Merkmal dieser Methode ist, dass der Erfolg garantiert ist: Wenn L nicht regulär ist, gibt es eine unendliche Menge paarweise ungleicher Wörter. Dies ist eine Konsequenz des Myhill-Nerode-Theorems . Kurz gesagt ist das Äquivalenzmodul L (die oben definierte Negation des Unäquivalenzmoduls L ) eine Äquivalenzbeziehung, und eine Sprache L ist regelmäßig, wenn die Anzahl der Äquivalenzklassen des Äquivalenzmoduls L endlich ist. Wenn L nicht regulär ist, würde das Herausnehmen eines Wortes aus jeder Äquivalenzklasse eine unendliche Menge von nicht äquivalenten Wörtern darstellen.


1

Bei einer Sprache L , für jede Saite x gibt es eine Reihe von Strings y , so daß xyL . Jeder solche Satz könnte als ein Zustand in einer Zustandsmaschine verwendet werden.

Alles, was Sie tun müssen, ist zu zeigen, dass die Anzahl solcher Mengen nicht endlich ist.

Als Beispiel sei L=anbn:n0 . Wenn x=anb für einige n1 , ist die einzige Zeichenfolge y so dass xyL ist, y=bn1 . Also haben wir für jedes n eine andere Menge, was L bedeutetL nicht regulär ist.

Wenn Sie also eine unendliche Menge von Strings x , sodass jedes x eine andere Menge {y:xyL} ergibt, kann die Sprache im Allgemeinen nicht von einer Finite-State-Maschine erkannt werden und ist daher nicht regulär.


Ist das nicht nur Myhill-Nerode?
David Richerby
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.