Vous êtes sur la page 1sur 5

Capítulo 12

AUTÓMATAS,
GRAMÁTICAS
Y LENGUAJES
12.1 Circuitos secuenciales y De hecho, siempre he tenido un vocabulario bastante extenso,
máquinas de estado finito
sin mencionar una comprensión fenomenal de la gramática y un
12.2 Autómata de estado finito
12.3 Lenguajes y gramáticas dominio superlativo de la sintaxis. Simplemente elijo no
12.4 Autómata de estado finito utilizarlos.
no determinístico
12.5 Relaciones entre lenguajes y
autómatas DE THE LITTLE RASCALS
Notas
Repaso del capítulo
Autoevaluación del capítulo En el capítulo 11 se analizaron los circuitos combinatorios en los que la salida depende só-
Ejercicios para computadora lo de la entrada. Estos circuitos carecen de memoria. En el presente capítulo se comenzará
por estudiar los circuitos en los que la salida depende no sólo de la entrada, sino también
del estado del sistema en el momento en que se introduce la entrada. El estado del sistema
está determinado por el proceso anterior. En este sentido, estos circuitos tienen memoria;
se conocen como circuitos secuenciales y su importancia es evidente en el diseño de
computadoras.
Las máquinas de estado finito son modelos abstractos de máquinas con una memo-
ria interna primitiva. Un autómata es un tipo especial de máquina de estado finito que tie-
ne una relación estrecha con un tipo específico de lenguaje. En la última parte de este
capítulo, se analizarán con cierto detalle las máquinas de estado finito, los autómatas de es-
tado finito y los lenguajes.

12.1 ➜ Circuitos secuenciales y máquinas de estado finito

Las operaciones dentro de una computadora digital se llevan a cabo en intervalos discretos.
La salida depende del estado del sistema al igual que de la entrada. Se supondrá que el es-
WWW tado del sistema cambia sólo en el tiempo t = 0, 1, . . . . Una manera sencilla de introducir
la secuenciación en los circuitos es introducir un retraso unitario de tiempo.

Definición 12.1.1

Un retraso unitario de tiempo acepta como entrada un bit xt en el tiempo t y produce xt−1,
el bit recibido como entrada en el tiempo t – 1. El retraso unitario de tiempo se dibuja co-
mo se muestra en la figura 12.1.1.

xt Retraso xt  1

Figura 12.1.1 Retraso unitario de tiempo.


Como ejemplo del uso del retraso unitario de tiempo, se analizará el sumador en serie.
506
12.1 ◆ Circuitos secuenciales y máquinas de estado finito 507

Definición 12.1.2


Un sumador en serie acepta como entrada dos números binarios

x = 0x N x N −1 · · · x0 y y = 0y N y N −1 · · · y0

y produce la suma zN+1zN · · · z0 de x y y. Los números x y y se introducen de manera se-


cuencial por pares, x0, y0; . . . ; xN, yN; 0, 0. Se produce la suma z0, z1, . . . , zN+1.

Ejemplo 12.1.3


Circuito sumador en serie
En la figura 12.1.1 se ilustra un circuito que usa un retraso unitario de tiempo para imple-
st mentar un sumador en serie.
xt zt Se mostrará la manera en que el sumador en serie calcula la suma de
yt Sumador
c t 1 completo
ct x = 010 y y = 011.
i
Primero se establece x0 = 0 y y0 = 1. (Se supone que en este instante i = 0. Esto se puede
Retraso preparar haciendo x = y = 0). El estado del sistema se observa en la figura 12.1.3a). Des-
pués, se hace x1 = y1 = 1. El retraso unitario de tiempo envía i = 0 como el tercer bit al su-
Figura 12.1.2 Circuito mador completo. El estado del sistema se ve en la figura 12.1.3b). Por último, se hace x2 =
sumador en serie. y2 = 0. Esta vez el retraso unitario de tiempo envía i = 1 como el tercer bit al sumador com-
pleto. El estado del sistema se observa en la figura 12.1.3c). Se obtiene la suma z = 101.

x0 = 0 z0 = 1 x1 = 1 z1 = 0 x2 = 0 z2 = 1
y0 = 1 Sumador y1 = 1 Sumador y2 = 0 Sumador
completo completo completo
i=0 0 i=0 1 i=1 0

Retraso Retraso Retraso

a) b) c)


Figura 12.1.3 Cálculo de 010 + 011 con el circuito sumador en serie.

Una máquina de estado finito es un modelo abstracto de una máquina con una me-
moria interna primitiva.

Definición 12.1.4

Una máquina de estado finito M consiste en


a) Un conjunto finito I de símbolos de entrada.
b) Un conjunto finito O de símbolos de salida.
c) Un conjunto finito S de estados.
d) Una función f del siguiente estado de S × I en S.
e) Una función g de salida de S × I en S.
f) Un estado inicial σ ∈ S.

Se escribe M = (I, O, S, f, g, σ).


Ejemplo 12.1.5 Sean I = {a, b}, O = {0, 1}, y S = {σ0 , σ1 } . Defina un par de funciones f : S ×I → S y

S × I → O por las reglas dadas en la tabla 12.1.1.


TABLA 12.1.1 ■
f g
I a b a b
S
σ0 σ0 σ1 0 1
σ1 σ1 σ1 1 0
508 Capítulo 12 ◆ Autómatas, gramáticas y lenguajes

Entonces M = (I, O, S, f, g, σ0 ) es una máquina de estado finito.


La tabla 12.1.1 se interpreta como sigue:

f (σ0 , a) = σ0 g(σ0 , a) = 0,
f (σ0 , b) = σ1 g(σ0 , b) = 1,
f (σ1 , a) = σ1 g(σ1 , a) = 1,
f (σ1 , b) = σ1 g(σ1 , b) = 0.


Las funciones del siguiente estado y de salida también se pueden definir mediante un
diagrama de transición. Antes de dar una definición formal de diagrama de transición, se
ilustrará cómo se construye uno.

Ejemplo 12.1.6

Dibuje un diagrama de transición para la máquina de estado finito del ejemplo 12.1.5.
El diagrama de transición es una digráfica. Los vértices son los estados (figura
12.1.4). El estado inicial se indica con una flecha. Si estamos en el estado σ e introducir i
a/0 a/1 produce una salida o y nos mueve al estado σ , se dibuja una arista dirigida del vértice σ al
vértice σ  y se etiqueta i/o. Por ejemplo, si estamos en el estado σ0 e introducimos a, la ta-
b/1 bla 12.1.1 dice que producimos 0 y permanecemos en el estado σ0. Entonces dibujamos un
0 1
lazo dirigido en el vértice σ0 y se etiqueta a/0 (figura 12.1.4). Por otro lado, si estamos en
b/0 el estado σ0 y se introduce b, producimos 1 y nos movemos al estado σ1. Entonces, dibu-
jamos una arista dirigida de σ0 a σ1 y se etiqueta b/1. Al considerar todas estas posibilida-


Figura 12.1.4 Diagrama de transición. des, obtenemos el diagrama de transición de la figura 12.1.4.

Definición 12.1.7 Sea M = (I, O, S, f, g, σ) una máquina de estado finito. El diagrama de transición de M

es una digráfica G cuyos vértices son los miembros de S. Una flecha designa el estado ini-
cial σ. Se tiene una arista dirigida (σ1, σ2) en G si existe una entrada i con f(σ1, i) = σ2. En
este caso, si g (σ1, i) = o, la arista (σ1, σ2) tiene etiqueta i/o.


Se puede ver la máquina de estado finito M = (I, O, S, f, g, σ) como una computa-
dora sencilla. Iniciamos en el estado σ, introducimos una cadena sobre I y producimos una
cadena de salida.

Definición 12.1.8 Sea M = (I, O, S, f, g, σ) una máquina de estado finito. Una cadena de entrada para M es

una cadena sobre I. La cadena


y1 · · · yn
es la cadena de salida para M correspondiente a la cadena de entrada
α = x1 · · · xn
Si existen estados σ0, . . . , σn ∈ S con
σ0 = σ
σi = f (σi−1 , xi ) for i = 1, . . . , n;
yi = g(σi−1 , xi ) for i = 1, . . . , n.

Ejemplo 12.1.9

Encuentre la cadena de salida correspondiente a la cadena de entrada


aababba (12.1.1)
para la máquina de estado finito del ejemplo 12.1.5.
Al inicio estamos en el estado σ0. El primer símbolo de entrada es a. Localizamos la aris-
ta que sale de σ0 en el diagrama de transición de M (figura 12.1.4) etiquetado a/x, que dice que
si entra a, sale x. En este caso, 0 es la salida. La arista señala el siguiente estado, σ0. Después,
a es de nuevo la entrada. Como antes, se produce 0 y nos quedamos en el estado σ0. Luego, la
entrada es b.
12.1 ◆ Circuitos secuenciales y máquinas de estado finito 509

En este caso, producimos 1 y cambiamos al estado σ1. Continuando de esta manera, se en-
cuentra que la cadena de salida es
0011001. (12.1.2)


Ejemplo 12.1.10


Máquina de estado finito sumador en serie
Diseñe una máquina de estado finito que realice la suma en serie.
Se representará la máquina de estado finito por su diagrama de transición.
Como el sumador en serie acepta pares de bits, el conjunto de entrada será
{00, 01, 10, 11}.
El conjunto de salida es
{0, 1}.
Dada una entrada xy, se toma una de dos acciones: se suman x y y, o se suman x, y y 1, de-
pendiendo de si el bit de acarreo es 0 o 1. Entonces existen dos estados que se llamarán C
(acarreo) y NC (ningún acarreo). El estado inicial es NC. En este punto se pueden dibujar
los vértices y designar el estado inicial en el diagrama de transición (vea la figura 12.1.5).
Después se consideran las entradas posibles en cada vértice. Por ejemplo, si 00 es en-
trada a NC, debe producirse 0 y seguir en el estado NC. Entonces NC tiene un ciclo con eti-
queta 00/0. Como otro ejemplo, si entra 11 a C, se calcula 1 + 1 + 1 = 11. En este caso,
la salida es 1 y se continúa en el estado C. Así, C tiene un ciclo con etiqueta 11/1. Como
un último ejemplo, si estamos en el estado NC y la entrada es 11, debe producirse 0 y nos
movemos al estado C. Al considerar todas las posibilidades, se llega al diagrama de transi-
ción de la figura 12.1.6.

00/0 01/1 01/0


11/0
NC C 10/0
00/1
NC C
10/1 11/1

Figura 12.1.5 Dos estados pa- Figura 12.1.6 Máquina de es-


ra la máquina de estado finito tado finito que realiza la suma


sumador en serie. en serie.

Ejemplo 12.1.11

El flip-flop SR
Un flip-flop es un componente básico de los circuitos digitales puesto que sirve como cel-
da de memoria de un bit. El flip-flop SR (o flip-flop set-reset) se define mediante la tabla

S R Q
1 1 No
Notpermitido
allowed
1 0 1
0 1 0

1 siifelSúltimo
was lastvalor
equaldetoS1es 1
0 0
0 siifelRúltimo valor
was last detoR1es 1
equal

El flip-flop SR “recuerda” si el último valor de S o R era 1. (Si Q = 1, el último valor de S


era 1; si Q = 0, el último valor de R era 1). Se puede modelar el flip-flop SR como una má-
quina de estado finito definiendo dos estados: “el último valor de S era 1” o “el último va-
lor de R era 1” (vea la figura 12.1.7). Se define la entrada como los nuevos valores de S y
R; la notación sr significa que S = s y R = r. Se define Q como la salida. Se ha designado
de manera arbitraria el estado inicial como “S era igual a 1”. Una implementación del cir-
cuito secuencial del flip-flop SR se muestra en la figura 12.1.8.
510 Capítulo 12 ◆ Autómatas, gramáticas y lenguajes

00/1 10/1 00/0 01/0 S


01/0
último valor de S era 1 último valor de R era 1
10/1
Q
R

Figura 12.1.7 El flip-flop SR como máquina de estado finito. Figura 12.1.8 Implementación de un circuito


secuencial del flip-flop SR.

Sección de ejercicios de repaso


1. ¿Qué es un retraso unitario de tiempo? 4. ¿Qué es un diagrama de transición?
2. ¿Qué es un sumador en serie? 5. ¿Qué es un flip-flop SR?
3. Defina máquina de estado finito.

Ejercicios
En los ejercicios 1 al 5, dibuje el diagrama de transición de la máqui-
na de estado finito (I, O, S, f, g, σ0). f g
1. I = {a, b}, O = {0, 1}, S = {σ0 , σ1 } I a b c a b c
S

σ0 σ0 σ1 σ2 0 1 0
f g σ1 σ1 σ1 σ0 1 1 1
σ2 σ2 σ1 σ0 1 0 0
I a b a b
S
5. I = {a, b, c}, O = {0, 1, 2}, S = {σ0 , σ1 , σ2 , σ3 }
σ0 σ1 σ1 1 1
σ1 σ0 σ1 0 1
f g

I a b c a b c
2. I = {a, b}, O = {0, 1}, S = {σ0 , σ1 } S

σ0 σ1 σ0 σ2 1 1 2
σ1 σ0 σ2 σ2 2 0 0
f g
σ2 σ3 σ3 σ0 1 0 1
I a b a b σ3 σ1 σ1 σ0 2 0 2
S

σ0 σ1 σ0 0 0 En los ejercicios 6 al 10, encuentre los conjuntos I, O y S, el estado


σ1 σ0 σ0 1 1 inicial y la tabla que define el siguiente estado y las funciones de sali-
da para cada máquina de estado finito.
6.
3. I = {a, b}, O = {0, 1}, S = {σ0 , σ1 , σ2 } b/1 a/1

0 1
f g a/0 b/1
7.
I a b a b a/0
S
b/1
σ0 σ1 σ1 0 1
σ1 σ2 σ1 1 1 A B
σ2 σ0 σ0 0 0 a/0

b/0 b/1
4. I = {a, b, c}, O = {0, 1}, S = {σ0 , σ1 , σ2 }
C a/1

Vous aimerez peut-être aussi