Depende del contexto





A veces te vas por las ramas para no tener que ir directo a la raíz. Sobre todo si la raíz es dolorosa y puede derribar el árbol— Albert Espinosa



Ivan Meza

Jerarquía de Chomsky

Lenguaje Gramática Máquina
Independiente de contexto Tipo 2
($V\rightarrow \alpha$)
Autómata de pila
Regular Tipo 3
($V \rightarrow aA|\epsilon$)
Autómata finito

Autómata de pila

Es una tupla $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$

Un AFND-$\epsilon$ + una pila

Autómata de pila determinístico (APD)

Es una tupla $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$

  • Para cada $\delta(q,a,x)$ solo hay una transición, no más de una transición
  • Si $\delta(q,\epsilon,x)\ne \emptyset$, entonces $\delta(q,a,x)=\emptyset$, si existe trancisión $\epsilon$, no existe ningún otra más

Lenguaje donde $x=x^r$

Lenguaje donde $x=x^r$

  • Más de una transición posible
  • Cuando $\epsilon$ aparece para otro símbolo

No determinístico

Lenguaje donde $xx^r$

Lenguaje donde $xx^r$

  • Cuando $\epsilon$ aparece para otro símbolo

No determinístico

Lenguaje donde $xmx^r$

Lenguaje donde $xmx^r$

Determinístico: APD

Resumen

  • $x=x^r$, no determinístico
  • $xx^r$ no determinístico
  • $xmx^r$ determinístico

Las gramáticas

  • $P\rightarrow aPa | bPb | a | b | \epsilon$
  • $P\rightarrow aPa | bPb | aa | bb$
  • $P\rightarrow aPa | bPb | m$

Ambigüedad y no determinismo

$AP(x=x^r)$ es no determinístico, pero $G(x=x^r)$ no es ambiguo

No determinismo tiene que ver con el proceso, ambigüedad con la estructura

Usando un AP para simular un G

Dado $G=(V,\Sigma,P,S)$, crear $(Q,\Sigma,\Gamma,q_0,Z_0,A,\delta)$ donde

  • $Q=\{q_0,q_1,q_2\}$
  • $\Gamma=V\cup\Sigma\cup\{Z_0\}$ y $Z_0\not\in V\cup\Sigma$
  • $A=\{q_2\}$

Producciones

Iniciar la pila y cancelar la pila

  • $\delta(q_0,\epsilon,Z_0)=\{(q_1,SZ_0\})\}$
  • $\delta(q_1,\epsilon,Z_0)=\{(q_2,Z_0\})\}$

Producciones

Para manejar las producciones

  • Para todo $A\in V$, $\delta(q_1,\epsilon,A)=\{(q_1,\alpha\}) | A\rightarrow \alpha\}$
  • $\delta(q_1,a,a)=\{(q_1,\epsilon\})\}$

$P\rightarrow aPa | bPb | a | b | \epsilon$

$P\rightarrow aPa | bPb | a | b | \epsilon$

Para todo $G(L)$ podemos crear un $AP(L)$

¿Cual es su gramática?

Transiciones $a,A/\alpha$ se transforma $A \rightarrow a\alpha$

  • Pushes:
    • $Z_0\rightarrow aAZ_0$
    • $A \rightarrow aAA$
  • Transiciones:
    • $Z_0\rightarrow mZ_0$
    • $A \rightarrow mA$
  • Pop:
    • $A \rightarrow a$
  • Terminó:
    • $Z_0 \rightarrow \epsilon$

$Z_0\rightarrow aAZ_0$
$Z_0\rightarrow bBZ_0$
$A\rightarrow aAA$
$B\rightarrow aAB$
$A\rightarrow bBA$
$B\rightarrow bBB$
$Z_0\rightarrow mZ_0$
$A\rightarrow mA$
$B\rightarrow mB$
$A\rightarrow a$
$B\rightarrow b$
$Z_0\rightarrow \epsilon$

Derivación $abmba$

$Z_0\Rightarrow aAZ_0$
$\Rightarrow abBAZ_0$
$\Rightarrow abmBAZ_0$
$\Rightarrow abmbAZ_0$
$\Rightarrow abmbaZ_0$
$\Rightarrow abmba$

Dado un AP podemos crear su G equivalente

$AP(L)=G(L)$

¡Ahora si esta parte está completa!

Lenguaje Gramática Máquina
Independiente de contexto Tipo 2
($V\rightarrow \alpha$)
Autómata de pila
Regular Tipo 3
($V \rightarrow aA|\epsilon$)
Autómata finito

¿Hay algo afuera de LLC?

Lemma de bombeo para LLC

  • Proponer lenguaje
  • Escoger $n$
  • Proponer una cadena que dependa de $n$
  • Particionar cadena en $uvwxy$, tal que $uwx \lt n$,$|vx|\ge 0$
  • Checar que se cumplan restricciones
  • Checar si $uv^iwx^iy \in L$ para todo $i$ está en el lenguaje
  • Proponer lenguaje , que tal $a^kb^kc^k$
  • Escoger $n$, que tal $n$
  • Proponer una cadena que dependa de $n$ $a^nb^nc^n$
  • Particionar cadena en $uvwxy$, tal que $uwx \lt n$,$|vx|\ge 0$
    • Caso uno $vwx$ en aes, $a^ia^ib^nc^n$
    • Caso dos $vwx$ en aes y bes, $a^ib^ic^n$
    • Caso tres $vwx$ en bes y ces, $a^nb^ic^i$
    • Caso tres $vwx$ en ces, $a^nb^nc^ic^i$
  • En todos los casos existe una palabra que $\not \in L$

Lenguajes dependientes del contexto

Sin contexto

Con contexto

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}$$

Derivación para $aaabbbccc$

$S\Rightarrow a S B c$
$\Rightarrow a a S B c B c$
$\Rightarrow a a a b c B c B c$
$\Rightarrow a a a b W B c B c$
$\Rightarrow a a a b W X c B c$
$\Rightarrow a a a b B X c B c$
$\Rightarrow a a a b b c c B c$

    $\Rightarrow a a a b b c c B c$
    $\Rightarrow a a a b b c W B c$
    $\Rightarrow a a a b b c W X c$
    $\Rightarrow a a a b b c B X c$
    $\Rightarrow a a a b b c B c c$
    $\Rightarrow a a a b b W B c c$
    $\Rightarrow a a a b b W X c c$
    $\Rightarrow a a a b b B X c c$
    $\Rightarrow a a a b b B c c c$
    $\Rightarrow a a a b b b c c c$

Licencia de Creative Commons
Depende del contexto by Ivan V. Meza Ruiz is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Creado a partir de la obra en http://turing.iimas.unam.mx/~ivanvladimir/slides/lfya/ldc.html.