Schreiben Sie für die Dezimalerweiterung von (ohne führenden ). Sei und ganze Zahlen mit . Betrachten Sie die Sprache der Dezimalerweiterungen der Vielfachen Plus-Konstante:0
Ist regelmäßig? kontextfrei?
(Kontrast zur Sprache des Graphen einer affinen Funktion )
Ich denke, dies wäre eine gute Hausaufgabenfrage. Antworten, die mit ein oder zwei Hinweisen beginnen und nicht nur erklären, wie die Frage zu lösen ist, sondern auch zu entscheiden, welche Techniken verwendet werden sollen, wären willkommen.
formal-languages
context-free
regular-languages
integers
Gilles 'SO - hör auf böse zu sein'
quelle
quelle
Antworten:
Sehr einfach: Angenommen, Zahlen werden dezimal geschrieben (andere Basen werden durch eine triviale Modifikation behandelt). Bauen Sie einen DFA, mit Zuständen 0, 1, ..., . Der Startzustand ist 0, und vom Zustand bei der Eingabe geht die Ziffer in den Zustand . Der akzeptierende Status ist (muss möglicherweise angepasst werden, wenn ).a a−1 q d (10q+d)moda b > abmoda b>a
quelle
Es ist regelmäßig. Lassen Sie uns zunächst in Binärform arbeiten, die auf jede Basis> 1 verallgemeinert wird. Sei die fragliche Sprache. Für a = 1, b = 0 erhalten wirMa,b
Das sind alle Zeichenfolgen über ohne führende Nullen, was regulär ist (konstruiere einen regulären Ausdruck dafür).{0,1}
Nun erhalten wir für jedes mit b noch 0 von indem wir numerisch mit a multiplizieren, dh die Transformation für jede Zeichenfolge von ausführen . Dies kann bitweise durch eine Folge von Verschiebungen und Additionen von , die von den Bits der festen Zeichenfolge abhängen . Die zwei Transformationen, die wir brauchen, sind:M a , 0 M 1 , 0 ˉ x → ¯ a x M a , 0 x ˉ aa Ma,0 M1,0 x¯→ax¯¯¯¯¯¯ Ma,0 x a¯
ˉ x → ˉ x 0x¯→2x¯¯¯¯¯ , alsox¯→x¯0
und
Durch Verketten einer 0 auf der rechten Seite bleibt die Regelmäßigkeit deutlich erhalten. Wir müssen also nur beweisen, dass die zweite Operation die Regelmäßigkeit bewahrt. Der Weg dazu ist mit einem Finite-State-Wandler, der von rechts nach links an . Das ist der schwierigste Schritt. Ich schlage vor, dies mit einem Pseudocode-Programm und einem endlichen Hilfsspeicher (wie einigen Bitvariablen) zu tun, anstatt Zustände zu verwenden. Solange der Speicher über alle Eingänge hinweg eine feste Größe hat und Sie streng von rechts nach links scannen, handelt es sich um eine endliche Zustandsübertragung und behält die Regelmäßigkeit bei.x¯
Um schließlich von , müssen wir jedem String numerisch hinzufügen , aber dies geschieht mit einem ähnlichen Wandler der von der festen Zahl b abhängt. M a , 0 b T bMa,b Ma,0 b Tb
Um dasselbe in jeder Basis zu tun, zeigen Sie zusätzlich, wie eine Multiplikation mit einer einzelnen Ziffer in dieser Basis unter Verwendung eines Wandlers , der von d abhängt. Damit können wir mit mehrstelligen Zahlen multiplizieren und bleiben dennoch in den regulären Sprachen. Oder wir können dies verfeinern, indem wir sagen, dass die Multiplikation mit nur eine wiederholte Addition ist.S d dd Sd d
Sie wollten nur Hinweise. Jeder dieser Schritte hängt von einem ziemlich komplexen Theorem / einer ziemlich komplexen Technik ab. Daher ist es die zusätzliche Arbeit, zu beweisen, dass diese einen vollständigen Beweis erhalten.
quelle
Tipp 1 : Lösen Sie zuerst das populärere Problem "Schreiben Sie einen Automaten, der die durch 3 teilbaren Dezimal- / Binärdarstellungen von Zahlen erkennt", wenn das am wenigsten signifikante Bit zuerst erscheint.
Zwischenfrage: Beweisen Sie, dass regulär ist.{ax+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯∣ax+b≥0x∈Z}
Hinweis Nr. 2 : Der Graph der Funktion "modulo " ist endlich. Sie können es für jedes in berechnen das sowohl die Ziffernmenge als auch die Sprache Ihres Automaten ist.a d { 0 , … , 9 }(n↦10n+d) a d {0,…,9}
Tipp # 3 : jetzt, ersetzen mit . Was ändert sich daran? Versuchen Sie, die Tatsache zu nutzen, dass reguläre Sprachen durch Schnittpunkte stabil sind, anstatt einen Ad-hoc- Automaten zu erstellen. x ∈ N.x∈Z x∈N
Tipp 4 : wir nun an, dass eine Primzahl ist (so dass ein Feld ist) und dass wir uns immer noch in dem Fall befinden, in dem . Wir verwenden jetzt eine Darstellung, bei der das erste Bit das höchstwertige Bit ist. Können Sie den Automaten auf die gleiche Weise bauen?Z / a Z x ∈ Z.a Z/aZ x∈Z
Tipp 5 : Sie müssen nicht immer einen Automaten bauen, um zu beweisen, dass eine Sprache regelmäßig ist. Wie können Sie frühere Ergebnisse verwenden, um zu beweisen, dass regelmäßig ist? (mit dem höchstwertigen Bit zuerst)M
quelle
Ich folge der Idee von @vonbrand:
Tipp 1:
Löse zuerst nach . Sie können den Myhill-Nerode- Satz verwenden.b=0
Tipp 2:
Lösen Sie den allgemeinen Fall und verwenden Sie den durch den Fall induzierten Automaten erneut .b=0
quelle
Die Sprache ist regelmäßig.
Tipp: Neun austreiben
Beweisidee
Für und ista=9 b<9
Um andere Werte von , die mit koprime sind ,10a 10
Um Werte von deren einzige Primfaktoren und ,2 5a 2 5
Um auf alle Werte von und zu verallgemeinern ,ba b
Beachten Sie, dass wir die jeweils geeignete Technik verwenden. Die drei wichtigsten Elementartechniken (reguläre Ausdrücke, endliche Automaten, satztheoretische Eigenschaften) sind in diesem Beweis alle dargestellt.
Detaillierter Beweis
Sei mit Koprime mit . Es sei und . Durch Elementararithmetik sind die Zahlen gleich modulo genau die Zahlen gleich modulo und modulo , also . Da der Schnittpunkt regulärer Sprachen regulär ist unda ' 10 M ' = { ¯ a 'a=2p5qa′ a′ 10 M′={a′x+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯∣x∈Z∧a′x+b≥0} M′′={2p5qx+b¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯∣x∈Z∧2p5qx+b≥0} b a b a′ b 2p5q M∩{x¯¯¯∣x≥b}=M′∩M′′∩{x¯¯¯∣x≥b} {x¯¯¯∣x≥b} ist regulär, weil es das Komplement einer endlichen (daher regulären) Sprache ist. Wenn und auch regulär sind, dann ist regulär; und ist daher regelmäßig, da es die Vereinigung dieser Sprache mit einer endlichen Menge ist. Um den Beweis abzuschließen, genügt es zu beweisen, dass und regulär sind.M′ M′′ M∩{x¯¯¯∣x≥b} M M′ M′′
Beginnen wir mit , dh Zahlen modulo . Die ganzen Zahlen, deren Dezimalerweiterung in werden durch ihre letzten -Ziffern charakterisiert , da das Ändern der Ziffern weiter links das Hinzufügen eines Vielfachen von ist ein Vielfaches von . Daher ist wobei das Alphabet aller Ziffern ist und eine endliche Menge von Wörtern der Länge und ist eine reguläre Sprache.M′′ 2p5q M′′ max(p,q) 10max(p,q) 2p5q 0∗M′′=ℵ∗F ℵ F max(p,q) M′′=(ℵ∗F)∩((ℵ∖{0})ℵ∗)
Wir wenden uns nun , dh Zahlen modulo wobei Koprime mit . Wenn dann ist die Menge der Dezimalerweiterungen aller Naturtöne, dh , was a ist reguläre Sprache. Wir nehmen jetzt . Sei . Nach Fermats kleinem Satz ist , was bedeutet, dass teilt . Wir bauen einen deterministischen endlichen Automaten, der wie folgt erkennt :M′ a′ a′ 10 a′=1 M′ M′={0}∪((ℵ∖{0})ℵ∗) a′>1 k=a′−1 10a′−1≡1moda′ a′ 10k−1 0∗M′
Der Zustand von einem Wort erfüllt und . Dies kann durch Induktion über das Wort nach den Übergängen auf dem Automaten bewiesen werden; Die Übergänge werden hierfür unter Verwendung der Tatsache berechnet, dass . Somit erkennt der Automat die Dezimalerweiterungen (die anfängliche Nullen zulassen) der Zahlen der Form mit ; da , erkennt der Automat die Dezimalerweiterungen der Zahlen gleich modulo erlaubt anfängliche Nullen, d. h(i,u) x¯¯¯ i≡|x¯¯¯|modk u≡xmod10k−1 10k≡1mod10k−1 u+y10k u≡bmoda′ b a ' 0 ∗ M ' M ' = ( 0 ∗ M ' ) ∩ ( ( ℵ ∖ { 0 } ) ℵ ∗ )10k≡1moda′ b a′ 0∗M′ . Diese Sprache ist somit regelmäßig bewiesen. Schließlich ist eine reguläre Sprache.M′=(0∗M′)∩((ℵ∖{0})ℵ∗)
Um auf andere Basen als zu verallgemeinern , ersetzen Sie und oben durch alle Primfaktoren der Basis.2 510 2 5
Formeller Beweis
Links als Übung für den Leser, in Ihrem Lieblingssatzbeweiser.
quelle