Fehler im Wikipedia CSG Beispiel?


8

Ich bin verwirrt über das Beispiel in einem Wikipedia-Artikel über kontextsensitive Grammatik:

https://en.wikipedia.org/wiki/Context-sensitive_grammar

Disclamer : Ich habe den besprochenen Abschnitt im Wikipedia-Artikel bereits geändert, sodass der aktuelle Status des Artikels von dem abweicht , was ich in dieser Frage diskutiere. Die Originalversion finden Sie hier: https://en.wikipedia.org/w/index.php?title=Context-sensitive_grammar&oldid=747616366

Die folgende Grammatik mit dem Startsymbol S erzeugt die kanonische nicht kontextfreie Sprache {anbncn: n ≥ 1}:

  1. S → abc
  2. S → a SB c
  3. c B → WB
  4. WB → WX
  5. WX → BX
  6. BX → B c
  7. b B → bb

Sie behaupten , nicht direkt , dass diese Grammatik ist kontextsensitive , aber im nächsten Satz impliziert, dass sie es als betrachten kontextsensitive :

Die Regeln 3 bis 6 ermöglichen den sukzessiven Austausch jedes cB gegen Bc (dafür sind vier Regeln erforderlich, da eine Regel cB → Bc nicht in das Schema αAβ → αγβ passen würde.)

Sie appellieren also an die kanonische Form kontextsensitiver Grammatikregeln: αAβ → αγβ, was impliziert, dass die gesamte Grammatik kontextsensitiv ist.

cαBAβcBWBccBc

Habe ich etwas verpasst oder wurde diese Grammatik wirklich fälschlicherweise hier platziert (da sie nicht wirklich kontextsensitiv ist)?


1
Ich glaube, Du hast recht.
Emil Jeřábek

@ EmilJeřábek Sieht so aus, als hätten wir gleichzeitig Änderungen in diesem Abschnitt des Wiki-Artikels vorgenommen: Ich habe dort die richtige Version der Grammatik eingeführt
Andrey Lebedev

Leider ist Ihre Grammatik falsch. Siehe en.wikipedia.org/wiki/… .
Emil Jeřábek

@ EmilJeřábek Es tut mir leid, was ist los mit meiner Grammatik (9 Regeln Grammatik), die ich in eine neue Artikelversion eingefügt habe? Könnten Sie darauf hinweisen, welche Regel falsch ist?
Andrey Lebedev

@ EmilJeřábek Ah, meinst du damit, dass diese Grammatik auch "aaa bb cccc" erzeugen kann?
Andrey Lebedev

Antworten:


9

Wenn ich mich nicht irre, ist eine einfachere CS-Grammatik möglich. Hier ist es:

  1. SABSc
  2. SAbc
  3. BAXA
  4. XAXY
  5. XYAY
  6. AYAB
  7. Aa
  8. Bbbb

aaabbbccc

1ABSc1ABABScc2ABABAbccc3AXABAbccc4AXYBAbccc5AAYBAbccc6AABBAbccc36AABABbccc36AAABBbccc7...aaaBBbccc8aaaBbbccc8aaabbbccc


3

Da sich mehrere Zuschauer einig waren, war die ursprüngliche Grammatik tatsächlich falsch. Wie @ EmilJeřábek bemerkte, wurde dieses Problem hier bereits diskutiert: https://en.wikipedia.org/wiki/Talk:Context-sensitive_grammar#Wrong_grammar_for_language

Es scheint also, dass weder die 7-Regel-Grammatik (die ich oben in meiner Frage abgefragt habe) noch die 9-Regel-Grammatik, die zuvor hier war und in Artikeln in anderen Sprachen vorhanden ist, beide falsch sind. Diese 9-Regel-Grammatik:

  1. S → a BC
  2. S → ein SBC
  3. CB → WB
  4. WB → WC
  5. WC → BC
  6. a B → ab
  7. b B → bb
  8. b C → bc
  9. c C → cc

aaa bb ccccanbncn

Daher schlage ich vor, diese Grammatik zu verbessern, indem die Regeln 3-5 durch vier Regeln ersetzt werden:

  1. S → a BC
  2. S → ein SBC
  3. CB → CZ
  4. CZ → WZ
  5. WZ → WC
  6. WC → BC
  7. a B → ab
  8. b B → bb
  9. b C → bc
  10. c C → cc

Die Regeln 3-6 helfen dabei, Probleme beim Ersetzen von CB zu WB und dann von WC zu BC zu vermeiden.

Bb

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.