Abro paréntesis, abro paréntesis, cierro paréntesis, ...
No lata, no: la totalidad arada dilato talón a talón— Juan Filloy
Ivan Meza
Para los lenguajes regulares
Jerarquía de Chomsky
Jerarquía de Chomsky
Hace dos semanas
Hoy después de la revisión uno
Protocolos de comunicación
Extraido de aquí
Verificación de URLS
_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS
Extraido de aquí, más discusión aquí
Morfología
Chatbots
Extraido de aquí
Juegos
Extraido de aquí
Jerarquía de Chomsky
Tipos de lenguajes
- Finitos: siempre son regulares
- Infinitos no siempre son regulares
AF en un lenguaje infinito
Para un $\Sigma$ y para $w \in L_R$
El trabajo del AF es circular $w$ por un conjunto finito de estados ($n$)
- ¿Qué podemos decir si $|w|$ es menor de $n$?
- ¿Qué podemos decir si $|w|$ es mayor o igual $n$?
El caso interesante
Para $w \in L_R$ y $|w| \ge n$
- Por lo menos un estado se repite
- La cadena se puede particionar en: $xyz$
- En donde $|xy|\le k$
- $x$ es un prefijo
- $y$ es un ciclo con $|y|\gt 1$
- $z$ es un sufijo
El ciclo
Para $w \in L_R$, $|w| \ge n$ y $w=xyz$
Ejemplo
- Proponer lenguaje, qué tal $\Sigma=\{a,b\}$ número par de bes
- Escoger $n$, qué tal $n$
- Proponer una cadena que dependa de $n$, qué tal $a^nbb$
- Particionar $w$, qué tal $x=a^{(n-1)}$, $y=a$, $z=bb$
- Checar que se cumplan restricciones, $|xy| \le n$, $y \not = \epsilon$
- Checar si $xy^kz \in L$ , sí pertenece $a^{(n-1)}a^kbb\in L$
No tan rápido, faltan más formas de cadenas en el lenguaje
Ejemplo (cont.)
Por ejemplo $n$ $(bb)^n$
- Particionar $w$, qué tal $x=b^{(n-2)}$, $y=bb$, $z=b^n$
- Checar que se cumplan restricciones, qué tal $|xy| \le n$, $y \not = \epsilon$
- Checar si $xy^kz \in L$, sí pertenece $b^{(n-2)}(bb)^kbb^n\in L$, ya que total de bes es $2k+2n-2$, que es par
No tan rápido todavía, faltan más formas de cadenas en el lenguaje
Probar que un lenguaje es regular por este procedimiento es demasiado trabajo, muchas veces con encontrar una expresión regular o un autómata finito, es suficiente
¡Es más fácil probar que no lo es!
A este procedimiento se le conoce como lema de bombeo
Un nuevo lenguaje con el mismo alfabeto
El lenguaje de as seguidas del mismo número de bes
$a^ib^i$
Ejemplos $\epsilon$, $ab$, $aabb$, $aaabbb$
$a^ib^i$
- ¿De qué tamaño es el lenguaje?
- Proponer lenguaje, qué tal$\Sigma=\{a,b\}$ con $a^ib^i$
- Escoger $n$, qué tal $n=i$
- Proponer una cadena que dependa de $n$, qué tal $a^nb^n$
- Particionar $w$, qué tal $x=a^{(n-1)}$, $y=a$, $z=b^n$
- Checar que se cumplan restricciones, $|xy| \le n$, $y \not = \epsilon$
- Checar si $xy^kz \in L$, no pertenece para cualquier $k$ $a^{(n-1)}a^kb^n\not\in L$, ya que sólo se cumple para $k=1$
Otra forma de verlo
¿Qué necesita recordar mi autómata?
Si tiene número par o impar de bes
¿Qué necesito recordar para $a^ib^i$?
Hay lenguajes que no son regulares
Vamos a presentar otra dimensión
Gramáticas
No confundir
Gramáticas libres de contexto
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 $A\rightarrow \alpha$ donde $\alpha \in (\Sigma\cup V)^*$ y $A\in V$
- $S\in V$ que denominamos símbolo inicial
Producciones/Reglas
Para $a^ib^i$, $G=(\{S\},\{a,b\},P,S )$ donde $P$
- $S\rightarrow aSb$
- $S\rightarrow \epsilon$
Como proceso de reescritura
- $\underline{S}$
El subrayado sólo marca que elemento se está re-escribiendo
- $\Rightarrow a\underline{S}b$
- $\Rightarrow a\ a \underline{S}b\ b$
- $\Rightarrow a\ a\ a\underline{S}b\ b\ b$
- $\Rightarrow a\ a\ a\ \epsilon\ b\ b\ b$
- $\Rightarrow aaabbb$
Uno más bonito
$G=(\{R,B\},\{a,b,\epsilon,\emptyset\},P,R,+,*,(,) )$ donde $P$
- $R\rightarrow B$
- $R\rightarrow R+R$
- $R\rightarrow R^*$
- $R\rightarrow RR$
- $R\rightarrow (R)$
- $B\rightarrow a$
- $B\rightarrow b$
- $B\rightarrow \epsilon$
- $B\rightarrow \emptyset$
- $\underline{R}$
- $\Rightarrow \underline{R}^* $
- $\Rightarrow (\underline{R})^* $
- $\Rightarrow (\underline{R} R)^*$
- $\Rightarrow (\underline{R} R R)^*$
- $\Rightarrow (\underline{R} R R R)^*$
- $\Rightarrow (\underline{R} R R R R)^*$
- $\Rightarrow (R^* R \underline{R} R R)^*$
- $\Rightarrow (R^* R \underline{R} R R)^*$
- $\Rightarrow (R^* R R^* R \underline{R})^*$
- $\Rightarrow (\underline{R}^* R R^* R R^*)^*$
- $\Rightarrow (B^* \underline{R} R^* R R^*)^*$
- $\Rightarrow (B^* B \underline{R}^* R R^*)^*$
- $\Rightarrow (B^* B B^* \underline{R} R^*)^*$
- $\Rightarrow (B^* B B^* B \underline{R}^*)^*$
- $\Rightarrow (\underline{B}^* B B^* B B^*)^*$
- $\Rightarrow (\underline{B}^* B B^* B B^*)^*$
- $\Rightarrow (a^* \underline{B} B^* B B^*)^*$
- $\Rightarrow (a^* b \underline{B}^* B B^*)^*$
- $\Rightarrow (a^* b a^* \underline{B} B^*)^*$
- $\Rightarrow (a^* b a^* b \underline{B}^*)^*$
- $\Rightarrow (a^* b a^* b a^*)^*$
Un ejemplo más pequeño
- $\underline{R}$
$\Rightarrow \underline{R} + R$
$\Rightarrow \underline{B} + R$
$\Rightarrow a + \underline{R}$
$\Rightarrow a + \underline{B}$
$\Rightarrow a + b$
- $\underline{R}$
$\Rightarrow R + \underline{R}$
$\Rightarrow R + \underline{B}$
$\Rightarrow \underline{R} + b$
$\Rightarrow \underline{B} + b$
$\Rightarrow a + b$
Derivaciones por la izquierda y por la derecha
Un ejemplo más largo
$\underline{R}$
$\Rightarrow \underline{R}R$
$\Rightarrow \underline{R}RR$
$\Rightarrow \underline{R}RRR$
$\Rightarrow \underline{R}RRRR$
$\Rightarrow \underline{B}RRRR$
$\Rightarrow a\underline{R}RRR$
$\Rightarrow a\underline{B}RRR$
$\Rightarrow aa\underline{R}RR$
$\Rightarrow aa\underline{B}RR$
$\Rightarrow aaa\underline{R}R$
$\Rightarrow aaa\underline{B}B$
$\Rightarrow aaaa\underline{R}$
$\Rightarrow aaaa\underline{B}$
$\Rightarrow aaaaa$
$R$
$\Rightarrow^* RRRRR$
$\Rightarrow^* aaRRR$
$\Rightarrow^* aaaaa$
En lenguaje aceptado por una gramática L(G)
Con $G=(V,\Sigma,P,S)$
$L(G)=\{w\in \Sigma^* | S \Rightarrow^* w\}$
Árboles
Otra forma de representar las derivaciones
$aaabbb$
$(a^*ba^*ba^*)^*$
$aaaaa$
- Lema de bombeo: Lenguajes que no son regulares
- Gramáticas Libres de Contexto
- Derivación
- Árboles