Autómata finito y Expresiones regulares -...
Transcript of Autómata finito y Expresiones regulares -...
Autómata finito y Expresiones regulares
A* | C. B
Conceptos
Alfabeto (∑): es el conjunto finito no
vacío de símbolos.
Ejemplo: ∑ = {0,1}, el alfabeto binario
Cadenas: secuencia finita de símbolos
pertenecientes a un alfabeto
Por ejemplo: 01101 es una cadena del ∑
anterior.
∑ = {ASCII}
Cadena vacía(ε): cadena que contiene
0 símbolos.
Longitud de una cadena |cad |:numero
de símbolos.
Ejemplo: |011|=3 y |ε| = 0
Potencia de alfabeto
Potencias de un alfabeto ∑k :conjunto
de cadenas de longitud k, tal que
todos los símbolos que las forman
pertenecen al ∑
∑0 = {ε} sea cual sea el ∑
Si ∑={0,1}, entonces
∑1={0,1}
∑2 = {00,01,10,11}
los que se pueden generar a partir de
los lenguajes básicos({},{ε},{a}), con la
aplicación de las operaciones de
unión, concatenación y * de Kleene un
número finito de veces
5
Lenguaje Regular
Lenguaje: Conjunto de cadenas, todas elegidas
de algún ∑*.
L(r) Lenguaje generado por la e.r r con
∑ ={a,b}
L(r) = {ε , a, bb, aa, abb, … }
Operadores
Sean L y M lenguajes regulares entonces
(L U M) es un lenguaje regular
Unión de L y M (L U M): conjunto de
cadenas que pertenecen a L, a M, o a
ambos.
Por ejemplo:
Si L={001,10,111} y M={ε, 001}, entonces
L U M = {ε,10,001,111}
7
Concatenación de L y M(L.M)
(L.M) es un lenguaje regular
Conjunto de cadenas que pueden
formarse tomando cualquier cadena
de L y concatenándola con cualquier
cadena de M
Por ejemplo
Si L={001,10,111} y M={ε, 001}, entonces
L . M =
{001,10,111,001001,10001,111001}
Clausura de Kleen de (L*)
L* es un lenguaje regular
Cualquier conjunto de cadenas que se
pueden formar (quizá con
repeticiones)
L(r*) = L(r)* cero o mas concatenaciones
∞
L*= U Li
i=0
Ejemplo: Si L = {0,11} L*={ε,011,11110}
Expresiones Regulares(e.r.)
Representa una descripción algebraica de
los lenguajes regulares.
Son un conjunto de secuencias de
símbolos válidas que se construyen en
base al alfabeto del lenguaje.
Ejemplo:
dir *.* donde el patrón * coincide
con cualquier cadena de caracteres.
Expresión Regular(e.r)
Forma compacta para definir un
lenguaje regular.
Ejemplo:
Sea el ∑ = {a,b} La e.r r = (a|bb)* se define en base al
alfabeto del lenguaje L(r)
11
Expresiones regulares básicas
λ o ε , L(ε) = {ε}
a ε Σ , L(a) = { a }
Si E y F son e.r.
1. E + F es una e.r. que representa la
unión de L(E) y L(F). Es decir L(E+F)=
L(E)UL(F)
12
2. EF es una e.r. que representa la
concatenación de L(E) y L(F). Es decir
L(E.F)= L(E).L(F).
3. E* es una e.r. que representa la clausura de
L(E). Es decir, L(E*) = (L(E))*.
4. E es una e.r. entonces (E) es una e.r. que
denota el mismo lenguaje que E. Es decir,
L((E)) = L(E).
L(r+) = L(r)+ una o mas concatenaciones
∞
L+ = U Li
i=1
14
Cerradura positiva
Prioridad
1. ()
2. *
3. . o nada
4. | = U=+
Formas abreviadas
Digito = {0|1|2|3….|9} = [0-9]=D o d
Letra = {a|b…|z,A|B…|Z}=[a-zA-Z]=L o l
Signo = {+|-| ε} =S o s
ConstanteEntera = signo digito+=CE o ce
(r)? = ε U L(r) 0 ó 1 vez
G= { _ }
16
Ejemplos
1. r = a*.(b | c)+ y Σ= {a,b,c}
L(r)= {b,c,bb,cc,bc,cb,ab,ac,cbc,bcc,
abb,acc, aac,ccc,ccb, . . .}
2. r = [0-9]*.[0-9]+ y Σ= {1..9,.}
L(r)= {.2,1.2,12.3,023.236425,
3567.45627, .758478, . . .}
17
Ejemplo
3. Identificadores en ADA inician con
letra seguido de letra o dígito o guión
bajo (éste no puede ser el último)
r=L(L |D)*(G*(L |D)+)* y Σ= {L,D,G}
L(r)={a,s,a_f,k_ _d,suma, sum12s,s2a_a}
18
Leyes algebraicas de e.r.
LEY DESCRIPCIÓN
r | s = s | r | es conmutativo
r | (s | t) = (r | s) | t | es asociativo
r.(s.t) = (r.s).t . es asociativa
r.(s | t) = r.s | r.t . se distribuye sobre |
ε .r = r. ε = r ε es la identidad para la concatenación
r* = (r | ε)* ε se garantiza en una cerradura
Leyes algebraicas
1) r | Φ ≡ Φ | r ≡ r
2) r | r ≡ r
3) Φ * ≡ ε
4) r . Φ ≡ Φ. r ≡ Φ
5) r . r* ≡ r* . r
6) r . r* | ε ≡ r*
7) (r* . s*)* ≡ (r | s)*
8) (r*)* ≡ r*
Algunas e.r
[abc] = {a,b,c}
^a es cualquier símbolo que no sea la a
Ejemplo ^[a-Az-Z] cualquier símbolo menos una letra
a? es {ε,a}
\ c el carácter c literalmente
Ejemplo
\$ftp= { $ftp }
Práctica 2
Dadas las e.r´s y el Σ= {a,b,c,d} definir
los L(r) definidos por dichas e.r.
1. r=ab 5. r=(ab|c)*d
2. r=a|b 6. r=(ab)*
3. r=a* 7. r=a | a*b
4. r=ab* 8. r=(a|ab)*
22
Práctica 2
9. r=(a|b)*
10. r=(a|b)*aa(a|b)*
11. r=(a|ε) (a|ab)*
12. r=(a*|b)*abb
13. r=(c | d)+ (a+|db)*
14. r=(d.c)* | (b|ad+)*
15. r=(c*|ε) | (a|ab)*23
Práctica 3
Define los alfabetos y modela mediante una e.r los siguientes lenguajes:
1. cadenas con a lo mas una pareja de 0's consecutivos y a lo mas una pareja de 1's consecutivos.
2. cadenas de uno o mas dígitos pero que no contienen dos dígitos pares consecutivos.
3. Cadenas de comentarios que empiezan por un asterisco y un uno y terminan con el fin de esa línea o bien empiezan por un asterisco y un dos y terminan con el fin de la línea siguiente.
4. Lenguaje formado por todas las cadenas de caracteres
que cumplen simultáneamente las tres condiciones siguientes:
a) Sus tres primeros caracteres son, por este orden, una letra i, una n y otra i.
b) Sus tres últimos caracteres son, por este orden, una letra f, una i y una n.
c) Entre las tres letras iniciales y las tres letras finales de la cadena aparece una secuencia de uno o mas caracteres, pero ninguno de los cuales es ni una letra ni un salto de línea.
Observa que cada una de las seis letras de la cadena debe poder ser, indistintamente, mayúscula o minúscula, ya que no se ha impuesto ninguna restricción al respecto.
5. L1 el lenguaje de todas las cadenas que pueden formarse utilizando únicamente cero o mas dígitos binarios y asteriscos con la restricción de que no se permiten mas de dos asteriscos consecutivos. Así, por ejemplo, las siguientes cadenas pertenecerán a L1:
101, **, *1*1*1, *00*1*, .
Pero no estas otras: +001, 1****1, 000***, 911...
6. L2 el lenguaje de todas las cadenas que pueden formarse utilizando únicamente dígitos decimales y asteriscos con la
restricción de que en cada cadena debe haber un único grupo de varios asteriscos consecutivos. Así, por ejemplo, las siguientes cadenas pertenecerán a L2:
2**, *10*1**, 19***99.
Pero no estas otras: **1**, x****x, 012345, 1*1, ...
7. L3 el lenguaje de todas las cadenas
formadas por una o mas letras
minúsculas y que no tienen tres b’s
seguidas. Así, por ejemplo, las
siguientes cadenas pertenecerán a L3:
xyz, bb, bebebe, baobab, .
Pero no estas otras: Gato, abbbba,
xxxbbb, salu2...
8. Conjunto de cadenas numéricas de
tres dígitos formados por todos los
posibles excepto 007. Así, por ejemplo,
o33,921 y 777 pertenecen a este
lenguaje, pero no efe, 33, etc.
9. El lenguaje de todas las cadenas que
se pueden formar con los dígitos 0,1 y 2
respetando las 2 condiciones siguientes:
la cadena no será vacía ni habrá ninguna
subcadena 01 en ella. Por ejemplo.
02210 pertenece al lenguaje pero no
2012.
Autómatas Finitos
Modelo matemático de un sistema que
recibe una cadena y determina si esta
pertenece al lenguaje que el autómata
reconoce
Clasificación
Deterministas (AFD):no puede estar
en mas de un estado simultáneamente
No deterministas (AFND):puede estar
en varios estados al mismo tiempo
AFD consta de A = (Q, Σ, δ , q0 ,F)
Q conjunto finito de estados.
Σ conjunto finito de símbolos de entrada.
δ función de transición que recibe como
argumentos un estado y una entrada y
devuelve un estado.
q0 estado inicial (uno de los estados de Q).
Conjunto F de estados finales o de
aceptación.
Ejemplo 1
AFD que acepta únicamente todas las
cadenas de 0’s y 1’s que contienen la
secuencia 01 en algún lugar de la
cadena.
δ( q0,1)= q0 δ(q2,1)= q1
δ(q0,0)= q2 δ(q2,0)= q2
δ(*q1,0)=δ(q1,1)= q1
Representación de autómatas
Formal: Quintupla
Diagarama de Transición
Tabla de Transición
Formal:
A=({q0, q1, q2},{0,1},δ,q0,{q1})
Diagrama de Transición
q0q2 q1
Inicio
0 1
1 0
0,1
Tabla de transición
0 1
q0 q2 q0
*q1 q1 q1
q2 q2 q1
Inicial
Final
Ejemplo 2
AFD que acepta únicamente todas las
cadenas con un número par de 0’s y/o
1’s.
δ( *q0,0)= q2 δ(q2,0)= q0
δ(q0,1)= q1 δ(q2,1)= q3
δ(q1,0)= q3 δ(q3,0)= q1
δ(q1,1)= q0 δ(q3,1)= q2
Representación Formal
A=({q0, q1, q2, q3 },{0,1},δ,q0,{q0})
Diagrama de Transición
q0q1
Inicio
q3q2
1
0
1
001
0
1
0
Tabla de transición
0 1
q0 q2 q1
q1 q3 q0
q2 q0 q3
q3 q1 q2
*
AFND consta de A = (Q, Σ, δ , q0 ,F)
Q conjunto finito de estados.
Σ conjunto finito de símbolos de entrada.
δ función de transición que recibe como argumentos un estado y una entrada y devuelve un conjunto con 0,1 o mas estados.
q0 estado inicial (uno de los estados de Q).
Conjunto F de estados finales o de aceptación.
Ejemplo 1
AFND que acepta únicamente las
cadenas de 0’s y 1’s que terminan en
01.
δ( q0,0) = {q0, q1} δ(q1,0) = Φ
δ(q0,1) = {q0} δ(q1,1) = {q2}
δ(*q2,0) = Φ δ(q2,1) = Φ
Representación de autómatas
Formal: Quintupla
Diagarama de Transición
Tabla de Transición
Formal:
A=({q0, q1, q2},{0,1},δ,q0,{q2})
Diagrama de Transición
q0q1 q2
Inicio0 1
0,1
Tabla de transición
0 1
q0 {q0 , q1} {q0}
q1 Φ {q2}
*q2 Φ Φ
Equivalencia entre AFND y
AFD
Construcción de subconjuntos
Parte de un AFND = (QN, Σ, δN , q0 ,FN)
Resultado: la descripción de
AFD = (QD, Σ, δD , {q0} ,FD)
Construcción
1. QD es el conjunto de subconjuntos de
QN, es decir es el conjunto potencia
de QN.
2. FD es el conjunto de subconjuntos S
de QN tal que S ∩ FN ≠ Φ, es decir,
FD contiene todos los conjuntos de
estados de N que incluyen al
menos un estado de aceptación de
N.
Función de transición
3. Para cada conjunto S QN y para
cada símbolo de entrada a en Σ,
δD ( S,a) = δN ( p,a)
Senp
Ejemplo
0 1
Φ Φ Φ
{q0} {q0,q1} {q0}
{q1} Φ {q2}
*{q2} Φ Φ
{q0,q1} {q0,q1} {q0,q2}
*{q0,q2} {q0,q1} {q0}
*{q1,q2} Φ {q2}
*{q0,q1,q2} {q0,q1} {q0,q2}
q0q1 q2
Inicio0 1
0,1
AFD
{q0}{q0,q1}Inicio
0 1
10
{q0,q2}
01
Nota: no todos los estados son accesibles
Práctica 4
1. Construye el AFD o AFND que acepte
el siguiente lenguaje.
Todas las cadenas compuestas de
cualquier letra pero que inician con a y
tiene la restricción que nunca pueden
llevar 3 b’s seguidas.
Práctica 4. Construye AFD
2. Que acepte el conjunto de todas las cadenas terminadas en 00.
3. Que acepte el conjunto de todas las cadenas con tres ceros consecutivos.(no necesariamente al final).
4. Que acepte el conjunto de cadenas con 011 como subcadena.
1. Convertir el siguiente AFND a AFD(
manera formal y DT
a) b) c)
0 1
p {p,q} {p}
q {r} {r}
r {s} Φ
*s {s} {s}
0 1
p {q,s} {q}
*q {r} {q,r}
r {s} {p}
*s Φ {p}
0 1
p {p,q} {p}
q {r,s} {t}
r {p,r} {t}
*s Φ Φ
*t Φ Φ
2. Construir AFND para los lenguajes
a) conjunto de cadenas de dígitos cuyo
último dígito haya aparecido antes
en la misma entrada.
b) conjunto de cadenas de dígitos cuyo
último dígito no haya aparecido
antes en la misma entrada.
3. Para el ejercicio 2 convertir el AFND a
AFD( manera formal y DT)
Tarea 3
Investigar algún método para encontrar el
AFND equivalente de un AFD y 2 ejemplos
aplicando el método.
Investigar algún método para encontrar la
e.r. equivalente a AFND y 2 ejemplos
aplicando el método.
Investigar algún método para encontrar la
e.r. equivalente a AFD y 2 ejemplos
aplicando el método.