Revisando la jerarquía de Chomsky
Hierarchies are celestial. In hell all are equal— Nicolás Gómez Dávila
Ivan Meza
Gramáticas dependientes de contexto (sensitivas)
Son una tupla $G=(V,\Sigma,P,S)$, donde:
- $V$ es otro alfabeto que denominamos símbolos no terminales (generalmente en mayúsculas)
- $\Sigma$ es un alfabeto que denominamos símbolos terminales
- $P$ es conjunto de reglas con la forma $\alpha A \beta \rightarrow \alpha \gamma \beta$ donde $\alpha,\beta \in (\Sigma\cup V)^*$ $\gamma \in (\Sigma\cup V)^+$ y $A\in V$
- $S\in V$ que denominamos símbolo inicial
$$ \begin{array}{rcl}
& S & & \rightarrow & & a b c &\\
& S & & \rightarrow & & a S B c &\\
& c & B & \rightarrow & & W & B\\
W & B & &\rightarrow & W & X & \\
& W & X &\rightarrow & & B & X \\
B & X & &\rightarrow & B & c &\\
b & B & &\rightarrow & b &b &\\
\end{array}$$
¿Alguien ve el error?
$$ \begin{array}{rcl}
& S & & \rightarrow & & a b C & \\
& S & & \rightarrow & & a S B C & \\
& C & B & \rightarrow & & W & B \\
W & B & & \rightarrow & W & X & \\
& W & X & \rightarrow & & B & X \\
B & X & & \rightarrow & B & C & \\
b & B & & \rightarrow & b & b & \\
b & C & & \rightarrow & b & c & \\
c & c & & \rightarrow & c & c & \\
\end{array}$$
Jerarquía de Chomsky
Lenguaje |
Gramática |
Máquina |
Ejemplo |
Dependiente del contexto |
Tipo 1 ($\alpha V \beta \rightarrow \alpha \gamma \beta$) |
?? |
$ww, a^nb^nc^n$ |
Independiente del contexto |
Tipo 2 ($V\rightarrow \alpha$) |
Autómata de pila |
$ww^r, a^nb^n$ |
Regular |
Tipo 3 ($V \rightarrow aA|\epsilon$) |
Autómata finito |
$w, a^*$ |
El lenguaje aceptado por una GDC
$L(G)=\{ w \in \Sigma^* | S \Rightarrow^+ w \}$
Gramáticas monotónicas
Son una tupla $G=(V,\Sigma,P,S)$, donde:
- $V$ es otro alfabeto que denominamos símbolos no terminales (generalmente en mayúsculas)
- $\Sigma$ es un alfabeto que denominamos símbolos terminales
- $P$ es conjunto de reglas con la forma $\alpha \rightarrow \beta$ donde $|\alpha| \leq |\beta|, \alpha$ y $\beta \in (\Sigma\cup V)^*$ y $S \rightarrow \epsilon$
- $S\in V$ que denominamos símbolo inicial
$$ \begin{array}{rcl}
S & \rightarrow & aSBc \\
S & \rightarrow & abc \\
cB & \rightarrow & Bc \\
bB & \rightarrow & bc \\
\end{array}$$
Las gramáticas dependientes del contexto (GDC) son equivalente as las gramáticas monotónicas (GM)
Formas normales
Forma normal de Chomsky para GLC
$A \rightarrow BC$
$A \rightarrow a$
$A \rightarrow \epsilon$
Propiedades
Forma normal de Chomsky
- Todas las producciones tienen $2n-1$ para $|w|=n$
- Se puede buscar por fuerza bruta
- Toda gramática libre de contexto se reduce a FNC
Reducción: paso cero
Agregar inicial
- Agregar $S_0 \rightarrow S$
Reducción: paso uno
Quitar transiciones $\epsilon$
Reducción: paso dos
Quitar transiciones unitarias
- Identificar las reglas de la forma $A\rightarrow B$ (unitarias)
- Por cada producción $B\rightarrow \alpha$ agregar $A \rightarrow \alpha$
- Borrar transiciones unitarias
Reducción: paso tres
Reducir transiciones largas
- Identificar las reglas de la forma $A\rightarrow X_1 ... X_n$
- Agregar las versiones $A\rightarrow X_1 A_1$, $A_2 \rightarrow X_2A_2$ ... $A_{n-1}\rightarrow X_{n-1}X_n$
- Quitar versión original
Reducción: paso cuatro
Remover terminales
- Identificar las reglas de la forma $A\rightarrow X_1 ...a... X_n$
- Agregar la regla $A\rightarrow X_1 ...N_a... X_n$
- Y agregar la regla $N_a\rightarrow a$
- Quitar versión original
Reducir
- $S\rightarrow ASA | aB$
- $A\rightarrow B | S$
- $B\rightarrow b | \epsilon$
Forma normal de Greibach (GLC)
Forma normal de Kuruda (GDC)
$AB \rightarrow CD$
$A \rightarrow BC$
$A \rightarrow B$
$A \rightarrow a$
En resumen
- GLC tienen FNC y FNG
- GM tienen FNK
- Toda GLC se puede transformar a FNC y FNG; son debilmente equivalentes
- Toda GM se puede transformar a FNK; son debilmente equivalentes
Jerarquía de Chomsky
Lenguaje |
Gramática |
Máquina |
Ejemplo |
Dependiente del contexto |
Tipo 1 ($\alpha V \beta \rightarrow \alpha \gamma \beta$) |
?? |
$ww, a^nb^nc^n$ |
Independiente del contexto |
Tipo 2 ($V\rightarrow \alpha$) |
Autómata de pila |
$ww^r, a^nb^n$ |
Regular |
Tipo 3 ($V \rightarrow aA|\epsilon$) |
Autómata finito |
$w, a^*$ |
¿Dónde uso todo este conocimiento?
Con AF
Con GLC
Con GDC
Lenguajes regulares
- Una estructura rígida, hoja de excel
- Tener algo bajo control, protocolo
- Buscar un patrón
Lenguajes independientes del contexto
- Una estructura de árbol, html
- Deseño de relaciones, lenguajes
- Dar significado
Lenguajes independientes del contexto
- Una estructura interconectada, lenguaje natural
- Relaciones entre árboles
- Casi todos los problemas, pero soluciones raras
Autómata lineal con frontera
Es una tupla $(Q,\Sigma,\Gamma,q_0,B,A,\delta)$
- $Q$ conjunto finito de estados
- $\Sigma$ alfabeto de cadenas reconocidas
- $\Gamma $ alfabeto de cinta, $\Sigma \subset \Gamma$
- $q_0$ estado inicial
- $B$ Símbolo de espacio en blanco $B \in \Gamma$ pero $B \not\in \Sigma$
- $A$ estados finales
- $\delta$ función de transición $Q \times \Gamma\cup \{\lt,\gt\} \rightarrow Q\times\Gamma\cup \{\lt,\gt\}\times\{der,izq\}$
Restricción, no se puede ir más allá de los símbolos $\lt,\gt$
Autómata de doble pila*
Es una tupla $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$
- $Q$ conjunto finito de estados
- $\Sigma$ alfabeto de cadenas reconocidas
- $\Gamma$ alfabeto de pila
- $q_0$ estado inicial
- $Z_0$ símbolo inicial de la pila
- $A$ estados finales
- $\delta$ función de transición $Q \times (\Sigma \cup \{\epsilon\}) \times \Gamma \times \Gamma \rightarrow Q\times\Gamma^*\times\Gamma^*$
Un AFND-$\epsilon$ + dos pilas
Jerarquía de Chomsky
Lenguaje |
Gramática |
Máquina |
Ejemplo |
?? |
?? |
Autómata de Pila Doble |
?? |
Dependiente del contexto |
Tipo 1 ($\alpha V \beta \rightarrow \alpha \gamma \beta$) |
Autómata lineal con frontera |
$ww, a^nb^nc^n$ |
Independiente del contexto |
Tipo 2 ($V\rightarrow \alpha$) |
Autómata de pila |
$ww^r, a^nb^n$ |
Regular |
Tipo 3 ($V \rightarrow aA|\epsilon$) |
Autómata finito |
$w, a^*$ |