Você está na página 1de 19

Clase 08: Autmatas finitos

Solicitado: Ejercicios 06: Autmatas finitos


1
M. en C. Edgardo Adrin Franco Martnez
http://computacion.cs.cinvestav.mx/~efranco
@efranco_escom
edfrancom@ipn.mx
Contenido
Autmata finito
Definicin formal de autmata finito
Configuracin de un autmata finito
Lenguae reconocido por un autmata finito
!emplos
!emplo 1
!emplo "
!emplo de programacin en C
!ercicios #$: Autmatas finitos
"
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
Autmata finito
-n autmata finito es un modelo matemtico de
una mquina .ue acepta cadenas de un lenguae
definido so/re un alfaeto A.
Consiste en un conjunto finito de estados y un
conjunto de transiciones entre esos estados0 .ue
dependen de los s&m/olos de la cadena de entrada.
!l autmata finito ace!ta una cadena " si la
secuencia de transiciones correspondientes a los
s&m/olos de x conduce desde el estado inicial a un
estado final.
1
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
Los autmatas finitos reconocen los lenguajes
regulares0 o de tipo 3 2 se pueden representar
intuitivamente por una cinta 2 una ca/e,a de lectura.
La cinta de entrada, slo contiene
smbolos de un determinado
alfabeto, y se mueve en una slo
direccin.
!l control de estados, determina el
funcionamiento del autmata.
-na sentencia de un lenguae
determinado0 colocada en la cinta0 2
le&da por el autmata finito0 es
reconocida por 3ste0 si el control de
estados llega a un estado final.
4
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
Definicin formal de autmata finito
-n autmata finito es una quntu!la A # $ E% &% f% q
0
% F '
donde:
E # (conjunto de entradas o )ocaulario de entrada*
! es un conunto finito0 2 sus elementos se llaman entradas o s&m/olos
de entrada.
& # (conjunto de estados*
5 es el conunto finito de estados
f: E
+
" &,& es la funcin de transicin o funcin del estado siguiente
(ara un par del conunto E Q devuelve un estado perteneciente al conjunto Q,
y es el producto cartesiano de E por Q.
q
0
- &% es el estado inicial
F Q, es el conjunto de estados finales
6
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
Configuracin de un autmata finito
7e entiende por configuracin de un autmata
finito0 a un par de la forma (q, W donde q0 es el
estado actual0 2 W la cadena .ue .ueda por leer en
ese instante.
La configuracin inicial de un autmata finito es el
par (q
!
, t siendo t la sentencia o cadena de entrada
a reconocer.
La configuracin final se representa por el par (q
i
, "
donde q
i
# $0 2 " indica .ue no .ueda nada por entrar de la
cinta.
$
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
-n mo)imiento de un autmata finito0 puede
definirse como el transito entre dos configuraciones0
2 se representa por (q , a! " (q#, ! 2 se de/e de
cumplir .ue f(q, a!$q#%
.n autmata finito es una maquina de estados
ca!az de reconocer un lenguaje regular. 7i el
autmata es capa, de alcan,ar en su configuracin
final.
8
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
Lenguae reconocido por un autmata finito
Cuando un autmata transita a una configuracin final
partiendo de la configuracin inicial0 en varios movimientos0
se dice .ue se ha producido ace!tacin o reconocimiento de
la cadena de entrada. Es decir que dic%a cadena, pertenece al
lenguaje reconocido por el autmata.
(or el contrario0 cuando el autmata finito no es ca&a' de
llegar a un estado final0 se dice .ue el autmata no reconoce
dicha cadena 2 .ue por tanto no !ertenece al lenguaje.
'
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
(ara toda gramtica regular &tipo 3&% existe un autmata
finito 9A*90 tal .ue el lenguae reconocido por el autmata
finito es igual al lenguae generado por la gram)tica.
La forma ha/itual de representar los autmatas finitos es
mediante un grafo o diagrama de estados0 donde los nodos
son los estados 2 las ramas est)n marcadas con los s&m/olos
del alfa/eto de entrada. Las ramas se constru/en seg0n la
funcin de transicin0 as& de/e de cumplir .
:
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
'os nodos que representan los estados finales, suelen marcarse con
un doble crculo, y el estado inicial tambi(n se marca con una
flec%a, encima de la cual se coloca la palabra )*)+),.
1#
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
a(c)
!emplo #1
11
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo #1: 7olucin
1olucin: 7e constru2e el diagrama de estados0 colocando en
primer lugar todos los estados dentro de c&rculos0 marcando
con do/le c&rculo el estado final. !l estado inicial se indica con
una flecha .ue lo se;ala con la pala/ra <=<C<> encima. (ara
construir las ramas0 nos situamos en el primer estado de la
ta/la de transiciones 2 se o/serva .ue f?.10a@A."0 entonces se
tra,a una flecha entre .1 2 ."0 apuntando a ."0 2 se coloca
encima de la flecha el s&m/olo del voca/ulario de entrada a.
De igual forma se recorre la ta/la de transiciones para cada
estado 2 entrada complet)ndose el diagrama de +oore.
1"
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo #1: Lenguae reconocido por un autmata finito
11 11
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo #"
14
Los identificadores de C son cadenas de letras0 d&gitos 2 guiones
/aos.
letra_ [A-Za- z_]
dgito [0-9]
id letra_ ( letra_ | dgito)*
14
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo #": 7olucin
1olucin : !ste eemplo es inverso al anterior0 pues se da un
lenguae 2 se pide el autmata .ue lo reconoce. !n primer
lugar se constru2e un diagrama de +oore0 de tal forma .ue a
partir del estado inicial0 despu3s de leer una letra0 acepte
letras o d&gitos de forma varia/le0 2 cuando encuentre un
car)cter diferente de letra o d&gito alcance el estado final. !l
diagrama de +oore es el .ue se muestra en la figura.
16
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo #": 7olucin
B representa a el fin de la cadena
!l autmata finito se deduce del diagrama de estaos 2 es el
siguiente:
donde f se define por :
1$
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!emplo de programacin en C
2rograma que modela el AF#$E%&%f%q0%F' donde:
!ACa0/D0 5AC.#0 .10 ."0 .1D0 *AC.10 ."D
f:!x5EF5
f?.#0a@A.1
f?.#0/@A.1
f?.10a@A.1
f?.10/@A."
f?."0a@A.1
f?."0/@A."
f?.10a@A.1
f?.10/@A.1
18
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
A* .ue descri/e el lenguae dado por la
expresin regular a
G
/
H
. 34$AF'#4$a
5

+
'3
//LIBRERIAS Y DEFINICIONES DE CONSTANTES
#include <stdio.h>
#define FIN_CADENA '\n'
//Modelado de los estados
enum{q0,q1,q2,q3};
//PROGRAMA PRINCIPAL
int main (void)
{
int estado=q0; //Estado = Estado inicial q0
char entrada; //Caracter de entrada
entrada=getchar(); //Leer la primer entrada
//Ciclo que modela transicin del automata conforme avanza el cabezal de lectura
while(entrada!=FIN_CADENA) //Mientras la entrada no sea el final de la cadena
{
switch(estado)
{
case q0: //Modelado de las transiciones del estado q0
if(entrada=='a') estado=q1;
else if(entrada=='b')estado=q3;
break;
case q1: //Modelado de las transiciones del estado q1
if(entrada=='a') estado=q1;
else if(entrada=='b')estado=q2;
break;
case q2: //Modelado de las transiciones del estado q2
if(entrada=='a') estado=q3;
else if(entrada=='b')estado=q2;
break;
case q3: //Modelado de las transiciones del estado q3
if(entrada=='a') estado=q3;
else if(entrada=='b')estado=q3;
break;
default:
break;
}
entrada=getchar(); //Leer de la segunda a ms entradas
}
//Comprobar si al alcanzar la configuracin final el automata alcanzo un estado final
if(estado==q1||estado==q2) printf("\nCadena VALIDA en el lenguaje L(a+b*)");
else printf("\nCadena NO VALIDA en el lenguaje L(a+b*)");
return 0; //Fin de programa
}
1'
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,
!ercicios #$: Autmatas finitos
1. Dise;e autmatas finitos capaces de reconocer los siguientes
lenguaes definidos por la expresiones regulares:
i. a
G
/
H
ii. a/?cd@
G
e
iii. ?a
G
/
G
@cd
iv. a/,I/
G
v. ?cg@
H
gato
G
Jcd
". (rograme los autmatas finitos dise;ados anteriormente 2
verifi.ue su funcionamiento.
-.e entre/ar0n antes del da *iernes +, de Se&tiem(re de +0-.
(13234234 %ora limite
-.u/erencia utili5ar 6flap para el dibujo y simulacin de los autmatas
-)ncluir la redaccin de cada ejercicio
-7ortada y encabe5ados de pa/ina
-)ncluir pantalla5os del funcionamiento y pruebas
1:
%
e
o
r
&
a

c
o
m
p
u
t
a
c
i
o
n
a
l
C
l
a
s
e

#
'
:

A
u
t

m
a
t
a
s

f
i
n
i
t
o
s
(
r
o
f
.

!
d
g
a
r
d
o

A
d
r
i
)
n

*
r
a
n
c
o

+
a
r
t
&
n
e
,

Você também pode gostar