Error en el ejemplo de Wikipedia CSG?

8

Estoy confundido sobre el ejemplo dado en el artículo de Wikipedia sobre gramática sensible al contexto:

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

Descargo de responsabilidad : ya he cambiado la sección discutida en el artículo de Wikipedia, por lo que el estado actual del artículo diferirá de lo que estoy discutiendo en esta pregunta. La versión original está aquí: https://en.wikipedia.org/w/index.php?title=Context-sensitive_grammar&oldid=747616366

La siguiente gramática, con el símbolo de inicio S, genera el lenguaje canónico sin contexto {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

No afirman directamente que esta gramática es sensible al contexto , pero la siguiente oración implica que la consideran sensible al contexto :

las reglas 3 a 6 permiten intercambiar sucesivamente cada cB por Bc (se necesitan cuatro reglas para eso ya que una regla cB → Bc no encajaría en el esquema αAβ → αγβ)

Entonces apelan a la forma canónica de las reglas gramaticales sensibles al contexto: αAβ → αγβ, lo que implica que toda la gramática es sensible al contexto.

Lo que me confunde es la regla # 3 , que parece no ajustarse al esquema αAβ → αγβ. Considero la terminal aquí como parte de , la variable como en el esquema, está vacía. Esto implica que no puede producir , ya que debe guardarse en el mismo lugar ( ).α B A β c B W B c c B c cαBAβcBWBccBc

¿Me perdí algo o esta gramática realmente se colocó aquí por error (ya que no es realmente sensible al contexto)?

Andrey Lebedev
fuente
1
Creo que tienes razón.
Emil Jeřábek
@ EmilJeřábek Parece que hicimos cambios en esa sección del artículo wiki al mismo tiempo: he introducido la versión correcta de la gramática
Andrey Lebedev
Desafortunadamente, tu gramática está mal. Ver en.wikipedia.org/wiki/… .
Emil Jeřábek
@ EmilJeřábek Lo siento, ¿qué tiene de malo mi gramática (gramática de 9 reglas) que he colocado en la nueva versión del artículo? ¿Podría señalar qué regla está mal?
Andrey Lebedev
@ EmilJeřábek Ah, ¿quiere decir que esta gramática también puede producir "aaa bb cccc"?
Andrey Lebedev el

Respuestas:

9

Si no me equivoco, es posible una gramática CS más simple. Aquí está:

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

Una derivación para la cadena esaaabbbccc

1ABSc1ABABScc2ABABAbccc3AXABAbccc4AXYBAbccc5AAYBAbccc6AABBAbccc36AABABbccc36AAABBbccc7...aaaBBbccc8aaaBbbccc8aaabbbccc

Jeffrey Shallit
fuente
3

En realidad, como varios espectadores acordaron, la gramática original era incorrecta. Como notó @ EmilJeřábek, ya se discutió este problema aquí: https://en.wikipedia.org/wiki/Talk:Context-sensitive_grammar#Wrong_grammar_for_language

Entonces parece que ni la gramática de 7 reglas (que estaba investigando anteriormente en mi pregunta), ni la gramática de 9 reglas que estaba aquí antes y presente en artículos en otros idiomas, ambas son incorrectas. Esta gramática de 9 reglas:

  1. S → a BC
  2. S → a 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

es un ejemplo incorrecto ya que puede producir palabras de la forma " aaa bb cccc" `que no se ajusta a la fórmula .anbncn

Por lo tanto, sugiero seguir la mejora de esta gramática reemplazando las reglas 3-5 por cuatro reglas:

  1. S → a BC
  2. S → a 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

Las Reglas 3-6 ayudarán a evitar problemas al reemplazar CB a WB y luego WC a BC.

EDITAR : Como @ EmilJeřábek sugirió nuevamente, las reglas # 7 y # 8 pueden simplificarse a una reglaBb.

Andrey Lebedev
fuente