You are on page 1of 25

Autónamas en estado finito no determinísticos

MATEMÁTICA DISCRETA

14

1
PROPÓSITO
• Resuelve ejercicios de autómatas estado
finito no determinísticos
AUTOMATA FINITO NO DETERMINISTA
• Hay que reconocer que las cadenas que deben analizarse en una aplicación están construidas a partir de
un conjunto de símbolos. No obstante, en cualquier situación encontramos que el conjunto de símbolos
es finito. A este conjunto lo llamaremos alfabeto.

• Este dispositivo consta de un conjunto finito de estados internos (P) entre los cuales hay un estado inicial
específico So y un conjunto designado F de estados finales.
 
• Un autómata finito no determinista consta de una quintupla (P, V , M, So , F )
donde: P es un conjunto de estados, finito y no vació.
V es el alfabeto de entrada
M es la f unción de transición de estados
So es el estado inicial o de partida ( So ε P )
F es el conjunto de estados finales ( F С P )

• Una forma habitual de representar los autómatas finitos es mediante un grafo o diagrama de estados
donde los nodos son los estados y las aristas están orientados con los símbolos de alfabeto que hacen que
el autómata transite a un nuevo estado.
AUTOMATA FINITO NO DETERMINISTA
Ejemplo: El siguiente grafo de transiciones corresponde a un AFND que reconoce el lenguaje: (a | b)* abb

a b b
0 1 2 3

b
M esta representada por:
Donde: estados entrada
P={ 0,1,2,3} a b
V={a,b} 0 { 0 , 1} {0}
So = { 0 } 1 - {2}
F ={3} 2 - {3}
AUTOMATA FINITO DETERMINISTA
• Un autómata finito determinista, es un caso especial de AFND
en el cual:
 
Autoatas Finitos

a. Ningún estado tiene una transición vacía


b. Para cada estado S y cada símbolo de entrada a hay a lo
sumo una arista etiquetada a que sale de S.
 
• Un autómata finito determinista tiene a lo sumo una transición
desde cada estado con cualquier entrada.
AUTOMATA FINITO DETERMINISTA
Ejemplo:
 
El siguiente grafo de transiciones corresponde a un AFD que reconoce el lenguaje: (a | b)* abb

a a

a b b
0 1 2 3

Donde: M esta representada por:


P={ 0,1,2,3} estados entrada
V={a,b}
So = { 0 } a b
F ={3} 0 {1} {0}
Reconocer Secuencia de estados 1 {1} {2}
 
ababb 0, 1, 2, 1 , 2 , 3 2 {1} {3}
ababaabb 0, 1, 2, 1, 2, 1, 1, 2, 3
EJEMPLO
AFD, todas las cadenas con un número par de 0s y un número par de 1s

La tabla de transición del autómata


es:
Ejercicio
Diseñar un AFD, para reconocer palabras sobre {a, b, c} en las
cuales toda b es inmediatamente seguida de al menos una c.

a,c
b

q0 q1
c
a,b

q2

a,b,c
8
Gramática regulares
• Se denominan gramáticas regulares a una colección de terminales y no
terminales, junto con un símbolo de inicio y un conjunto finito de reglas
de reescritura.

• Aquí usaremos una notación menos engorrosa. Salvo que se especifique


lo contrario, representaremos a los no terminales con letras mayúsculas
y a los terminales con letras minúsculas.

• Una gramática regular se adhiere a las siguientes restricciones:


 
  S  aB | a | λ
Definición Expresiones regulares
• Notación equivalente a la de un lenguaje regular o a un autómata

• Los lenguajes regulares son reconocidos por autómatas finitos y son generados por
gramáticas regulares.

• Una tira de entrada t es reconocida o aceptada por un autómata finito si puede


escribirse una secuencia de movimientos entre las configuraciones inicial y final.
 
  ( q0 , t ) * ( qi ,  ) donde qi pertenece a F
  
• Por consiguiente, el conjunto de todas las tiras que son reconocidas por un autómata
finito, esto es, el lenguaje deducido por un dispositivo de este tipo puede definirse
como: 
L(AF) = { t / t  T* , ( q0 , t ) * ( qi ,  ) , qi  F }
La expresión regular para un alfabeto T, permite definir un conjunto de
tiras de caracteres, llamado conjunto regular, de la siguiente forma:

1.   Ø denota al conjunto vacío Ø


2. Ɛ denota el conjunto regular { γ }
3. Con a se indica a pertenece a T
4.   Si P y Q son dos expresiones regulares entonces:

a. P + Q denota P U Q

b. (P Q) denota P Q

c.   (P*) denota P*


Identificador de un lenguaje de programación

En notación BNF

<identificador>  <letra> ( <letra> | <digito>)


<letra>  a | b | c …… | z
<digito>  0 | 1 | 2 ….. | 9

En notación de expresión regular

Identificador = letra (letra + digito)*


letra = a + b + c + ……. + z
digito = 0 + 1 + 2 + … + 9
También lo son:
 
• Como ejemplo, si el alfabeto V fuera {X, Y, Z} entonces (X U (ZY))
seria una expresión regular ya que (ZY) también es una
expresión regular y en consecuencia X U (ZY) también lo seria:

• Cada expresión regular r de un alfabeto V representa un


lenguaje denotado por L(r), que se construye a partir de bloques
de construcción.
• Para ser más precisos:
  a.         L( ) es el lenguaje 
b.         L(x) es el lenguaje {x}, para cada x  V
c.         L((pUq)) = L(p) U L(q)
d.         L((pq)) = L(p) L(q)
e.         L(p*) = L(p)*

• Por ejemplo, la expresión (X U (ZY)) representa el lenguaje {X,ZY}, es decir,


representa el lenguaje generado al unir {X} con la concatenación de {Z} y {Y}

• De forma similar la expresión ((XY)* U Z*) representa el lenguaje que


consiste en cadenas de cero o más copias del patrón XY además de las
cadenas de cero o mas Z.
PROPIEDADES ALGEBRAICAS DE LAS
EXPRESIONES REGULARES
Axioma Descripción
Expesiones Regulares

r|ss|r | es conmutativa

r|(s|t)(r|s)|t | es asociativo

(rs)t  r(s t) La concatenación es asociativa

r (s|t) r s |rt La concatenación distribuye sobre |


(s | t ) r  sr | tr
r  r  es el elemento identidad
r  r
 
r*  ( r + )* La relación entre * y 
r**  r * es idempotente
EJEMPLO 1

Sean § = {0, 1} y L, M dos lenguajes sobre § dados por L ={1, 10} y M =


{1, 01}

Entonces:

LM = {11, 101, 1001}.

Mientras que ML = {11, 110, 001, 0110}.


EJEMPLO 2

Dado V = {0; 1} y la Expresión Regular α = 0*10*,


tenemos que:

L(0*10*) = L(0*) L(1) L(0*)


= (L(0))* L(1) (L(0))*
= {0}*.{1}.{0}*
= {0n10m | n, m  0}
EJEMPLO 3
Si ∑ = {a, b, c}
entonces
∑2 = {aa, ab, ac, ba, bb, bc, ca, cb, cc}

EJEMPLO 4

Sea § = {0, 1} y L = {01, 1},


entonces
L3 = {010101, 01011, 01101, 0111, 10101, 1011, 1101, 111}
COMPONENTES BASICOS DE UNA EXPRESION
REGULAR
a
a+b = a|b
b

a b
ab

a*
COMPONENTES BASICOS DE UNA EXPRESION
REGULAR
Ejemplo:
r t
s

r*st*

Ejemplo:
r t
s
(r*st*)(u(r*st*))*
u
UNION DE LENGUAJES REGULARES
Ejemplo: Sean

x y
y x

Cero o mas x seguidas de una y Cero o mas y seguidas de una x

Para unirlos: se crea un nuevo estado inicial a partir del cual podamos entrar a uno de los diagramas originales sin
poder regresar.
x y
Anterior estado inicial
x
y
x

Nuevo estado inicial y


y x
CONCATENACION DE LENGUAJES REGULARES

Ejemplo: Sean
x x
y y
y x
1 2 3 4

T1 T2

Se procede de la siguiente forma:


 
·  A partir de cada extremo de aceptación de T1, dibuje un arco hacia cada estado de T2.
·  Rotule cada uno de estos arcos con las etiquetas del arco correspondiente T2.
·  Deje que los estados de aceptación de T1 sigan siendo estados de aceptación si solo si el estado inicial
T2 es también un estado de aceptación.
Expresiones Regulares CONCATENACION DE LENGUAJES REGULARES

Solución:
x

y y x
1 2 3 4

x x y y
Reglas de precedencia de las Expresiones Regulares
• El operador * tiene la precedencia más alta .

• El siguiente en precedencia es el operador de concatenación.

• Finalmente, se aplican los operadores de unión con sus operandos.

Ejemplo: la expresión  01* + 1


se aplica así  (0(1*))+1
Ejercicio Propuesto 1
Construir un autómata finito determinista que reconozca el lenguaje sobre
{0, 1} que consiste de las palabras que terminan con 1, es decir, (0 + 1)*1.

0 1

A 0
B
25

You might also like