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βcBWBccB→c…

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. S→ABSc
  2. S→Abc
  3. BA→XA
  4. XA→XY
  5. XY→AY
  6. AY→AB
  7. A→a
  8. Bb→bb

aaabbbccc

⇒1ABSc⇒1ABABScc⇒2ABABAbccc⇒3AXABAbccc⇒4AXYBAbccc⇒5AAYBAbccc⇒6AABBAbccc…⇒3−6AABABbccc⇒3−6AAABBbccc⇒7...aaaBBbccc⇒8aaaBbbccc⇒8aaabbbccc


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.

B→b

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.