Articulo de referencia

Producción (informática)

En informática , una producción o regla de producción es una regla de reescritura que reemplaza algunos símbolos con otros símbolos. [ 1 ] Un conjunto finito de producciones PAG...

En informática , una producción o regla de producción es una regla de reescritura que reemplaza algunos símbolos con otros símbolos. [ 1 ] Un conjunto finito de produccionesPAG{\displaystyle P}es el componente principal en la especificación de una gramática formal (específicamente una gramática generativa ).

En dichas gramáticas, un conjunto de producciones es un caso especial de relación en el conjunto de cadenas.V{\displaystyle V^{*}}(dónde{\displaystyle {}^{*}}es el operador estrella de Kleene ) sobre un conjunto finito de símbolosV{\displaystyle V}llamado vocabulario que define qué cadenas no vacías pueden sustituirse por otras. El conjunto de producciones es, por lo tanto, un subconjunto de tipo especial.

PAGV×V{\displaystyle P\subconjunto V^{*}\times V^{*}}

y las producciones se escriben luego en la formav{\displaystyle u\to v}para significar que(,v)PAG{\displaystyle (u,v)\in P}(no confundir con{\displaystyle \to }se utiliza como notación de función, ya que puede haber múltiples reglas para la misma.{\displaystyle u}). Dados dos subconjuntosA,BV{\displaystyle A,B\subset V^{*}}Las producciones pueden estar restringidas para satisfacerPAGA×B{\displaystyle P\subset A\times B}, en cuyo caso se dice que las producciones "son de la formaAB{\displaystyle A\to B}. Diferentes opciones y construcciones deA,B{\displaystyle A,B}conducen a diferentes tipos de gramáticas. En general, cualquier producción de la forma

ϵ,{\displaystyle u\to \epsilon ,}

dóndeϵ{\displaystyle \epsilon }es la cadena vacía (a veces también se denotaλ{\displaystyle \lambda }), se denomina regla de borrado , mientras que las producciones que generarían cadenas de la nada, es decir, de la forma

ϵv,{\displaystyle \epsilon \to v,}

Nunca están permitidos.

Para permitir que las reglas de producción creen oraciones significativas, el vocabulario se divide en conjuntos ( disjuntos ).Σ{\displaystyle \Sigma }ynorte{\displaystyle N}desempeñando dos funciones diferentes:

  • Σ{\displaystyle \Sigma }denota los símbolos terminales conocidos como un alfabeto que contiene los símbolos permitidos en una oración;
  • norte{\displaystyle N}denota símbolos no terminales , que contienen un símbolo de inicio distinguidoSnorte{\displaystyle S\in N}, que son necesarias junto con las reglas de producción para definir cómo construir las oraciones.

En el caso más general de una gramática no restringida , una producciónv{\displaystyle u\to v}, se permite mapear cadenas arbitrarias{\displaystyle u}yv{\displaystyle v}enV{\displaystyle V}(terminales y no terminales), siempre que{\displaystyle u}no está vacío. Por lo tanto, las gramáticas no restringidas tienen producciones de la forma

V{ϵ}V{\displaystyle V^{*}\setminus \{\epsilon \}\to V^{*}}

o si queremos impedir que se modifiquen las oraciones terminadas

VnorteV=(VΣ)V{\displaystyle V^{*}NV^{*}=(V^{*}\setminus \Sigma ^{*})\to V^{*}},

dóndeVnorteV{\displaystyle V^{*}NV^{*}}indica concatenación y obliga a que un símbolo no terminal esté siempre presente en el lado izquierdo de las producciones, y{\displaystyle \setminus }denota conjunto menos o conjunto diferencia . Si no permitimos que aparezca el símbolo de inicio env{\displaystyle v}(la palabra del lado derecho), tenemos que reemplazarV{\displaystyle V^{*}}con(V{S}){\displaystyle (V\setminus \{S\})^{*}}en el lado derecho. [ 2 ]

Los otros tipos de gramática formal en la jerarquía de Chomsky imponen restricciones adicionales sobre lo que constituye una producción. En particular, en una gramática libre de contexto , el lado izquierdo de una producción debe ser un único símbolo no terminal. Por lo tanto, las producciones tienen la forma:

norteV{\displaystyle N\to V^{*}}

Generación de gramática

Para generar una cadena en este lenguaje, se parte de una cadena que consta de un único símbolo inicial y, a continuación, se aplican sucesivamente las reglas (cualquier número de veces y en cualquier orden) para reescribirla. Este proceso finaliza cuando se obtiene una cadena que contiene solo terminales. El lenguaje consta de todas las cadenas que se pueden generar de esta manera. Cualquier secuencia de elecciones válidas durante este proceso de reescritura produce una cadena específica en el lenguaje. Si existen varias formas diferentes de generar esta única cadena, se dice que la gramática es ambigua .

Por ejemplo, supongamos que el alfabeto consta dea{\displaystyle a}yb{\displaystyle b}, con el símbolo de inicioS{\displaystyle S}y tenemos las siguientes reglas:

1.SaSb{\displaystyle S\rightarrow aSb}
2.Sba{\displaystyle S\rightarrow ba}

entonces comenzamos conS{\displaystyle S}y puede elegir una regla para aplicarle. Si elegimos la regla 1, reemplazamosS{\displaystyle S}conaSb{\displaystyle aSb}y obtener la cadenaaSb{\displaystyle aSb}. Si volvemos a elegir la regla 1, reemplazamosS{\displaystyle S}conaSb{\displaystyle aSb}y obtener la cadenaaaSbb{\displaystyle aaSbb}. Este proceso se repite hasta que solo tengamos símbolos del alfabeto (es decir,a{\displaystyle a}yb{\displaystyle b}). Si ahora elegimos la regla 2, reemplazamosS{\displaystyle S}conba{\displaystyle ba}y obtener la cadenaaababb{\displaystyle aababb}y ya están hechas. Podemos escribir esta serie de elecciones de forma más breve, usando símbolos:SaSbaaSbbaababb{\displaystyle S\Rightarrow aSb\Rightarrow aaSbb\Rightarrow aababb}El lenguaje de la gramática es el conjunto de todas las cadenas que se pueden generar utilizando este proceso:{ba,abab,aababb,aaababbb,}{\displaystyle \{ba,abab,aababb,aaababbb,\dotsc \}}.

Véase también

Referencias

  1. "Gramáticas formales" (PDF) . Standford.edu .
  2. Véase Klaus Reinhardt: Prioritatszahlerautomaten und die Synchronization von Halbspursprachen Archivado el 17 de enero de 2018 en Wayback Machine ; Fakultät Informatik der Universität Stuttgart; 1994 (alemán)