2012-07-12 19 views

Respuesta

13

como una sugerencia - desde todas las producciones en Chomsky Forma Normal o bien tiene la forma

S → AB, para no terminales A y B, o la forma

S → x, para el terminal x,

Entonces derivar una cadena funcionaría de la siguiente manera:

  • crear una cadena de exactamente n no terminales, a continuación,
  • expandir cada no terminal a un solo terminal.

Aplicación de las producciones de la primera forma aumentarán el número de no terminales desde k hasta k + 1, ya que se reemplaza uno no terminal (-1) con dos no terminales (+2) para una ganancia neta de +1 no terminal. Desde su inicio con un no terminal, esto significa que debe hacer n - 1 producciones de la primera forma. A continuación, deberá n más de la segunda forma para convertir los no terminales a los terminales, dando un total de n + (n - 1) = 2n - 1 producciones.

Para demostrar que necesita exactamente esta cantidad, le sugiero que haga una prueba por contradicción y demuestre que no puede hacerlo con más o menos. Como sugerencia, trate de contar el número de producciones de cada tipo que se hacen y que muestra que si no es 2n - 1, o bien la cadena es demasiado corto, o todavía tendrá no terminales restantes.

Espero que esto ayude!

+0

: Podría decir por qué tenemos que hacer n-1 producciones de la primera forma. – justin

+1

¡Claro! Cada terminal en la cadena resultante finalmente se forma mediante la adopción de un no terminal y la ampliación a un terminal a través de parte de la producción de la forma A -> a. Esto significa que tiene que haber, en algún punto, un total de n no terminales producidos. Uno de ellos viene gratis desde el símbolo de inicio. Cada vez que realizas una producción de la forma A -> BC, obtienes una más no terminal. Por lo tanto, necesita hacer n-1 producciones de la forma A -> BC para que pueda crear los n-1 adicionalmente necesarios no terminales. – templatetypedef

+0

: ¿Quiere decir que el '-1' de la expresión 'n-1' proviene de que uno de ellos viene gratis desde el símbolo de inicio? – justin

Cuestiones relacionadas