Professional Documents
Culture Documents
Oscar BRUNO
Autmata Finito
ER ab
a b
0- 1 2+
ER ab + aab
a b
0- 1 2+
b
3 4+
ER a +ab + aab
a b
0- 1+ 2+
a
b
3 4+
ER a*
a
0+
-
1
Dr. Oscar BRUNO
ER a*b
a
b
0- 1+
Autmata Finito
Herramienta abstracta que se utiliza para reconocer un determinado LR.
RECONOCER un LR significa aceptar cada cadena que es una palabra del LR y rechazar cada cadena
que no pertenece al lenguaje.
Cada AF reconoce un NICO LR. Para un LR pueden existir muchos AFs que lo reconozcan
Estado inicial, estados intermedios, estados de aceptacin estados de rechazo.
LR Finitos ab+aab; a+ab+aab; 01+10
LR Infinitos a*; a*b; a*bb*a; a3 b+; (0+1)*; a(a+b)*c; (a+b+c+d)*; (ab)*;
AFD
Formalmente, un AFD es una 5-upla (Q, , T, q0, F), donde:
Q es un conjunto finito de estados,
es el alfabeto de caracteres reconocidos por el autmata,
q0 Q es el estado inicial (nico, no es un conjunto),
F es el conjunto de estados finales, y
T: Q x Q
Ejemplo (aa+aba*)
AFD incompleto / completo
Todas las palabras de aes y/o bes que tienen por lo menos dos letras.
Todas las palabras sobre el alfabeto {a,b,c} que tienen por lo menos tres letras.
2
Dr. Oscar BRUNO
a b
0- 1 2+
a b
0- 1 2+
b
3 4+
Ejemplo 3
Sea la ER a + ab + aab.
a b
0- 1+ 2+
a
b
3 4+
Ejemplo 4
Se construye el siguiente AF sobre el alfabeto {0, 1} que reconoce un LR que tiene dos palabras.
0 1
-
A B C+
1 0
3
Dr. Oscar BRUNO
Ejemplo 5
La ER a*, que representa al lenguaje {an / n 0}, es reconocida por el siguiente AF:
a
0+
-
Ejemplo 6
Supongamos el LR representado por la ER a*b;
:
a
b
0- 1+
Ejemplo 7
Sea la ER a3b+, forma abreviada de la expresin aaabb*. :
a a a b b
0- 1 2 3 4+
Ejemplo 8
Sea la Expresin Regular Universal (0 + 1)*. El AF ms simple que reconoce a esta expresin es:
0,1
A -
Ejemplo 9
Sea la ER a(a+b)*c
a,b
a c
-
0 1 2+
Ejemplo 10
Sea la ER (ab)*.
a b
0 1 2+
4
Dr. Oscar BRUNO
a
0 1
Ejemplo 12
Sea la ER 1(10)*0. Un AF que la reconoce tiene el siguiente DT:
D+
1 1
- B C
A
Un Autmata Finito reconoce a un Lenguaje Regular cuando acepta cada palabra del
lenguaje y rechaza toda cadena que no es una palabra del lenguaje.
EJERCICIOS
(1) Sea el Autmata Finito del Ejemplo 1. Describa la actividad del autmata cuando lee la
cadena abb.
(2) Sea el Autmata Finito del Ejemplo 2. Describa sus actividades cuando lee las cadenas: (i)
aab; (ii) aaa.
(3) Sea el Autmata Finito del Ejemplo 3. Describa su actividad cuando lee la cadena a.
(4) Sea el Autmata Finito del Ejemplo 4. Escriba la Expresin Regular del lenguaje
reconocido.
(5) Sea el Autmata Finito del Ejemplo 6. Describa su actividad cuando lee la cadena aaba.
(6) Dibuje el Diagrama de Transiciones de un Autmata Finito que reconoce al lenguaje a*bb.
(7) Sea el Autmata Finito del Ejemplo 7. Describa sus actividades cuando lee las cadenas:
aaab; aaabbb.
(8) Sea el Autmata Finito del Ejemplo 7. Describa sus actividades cuando lee las cadenas:
aaaba; aab; .
(9) Dibuje el Diagrama de Transiciones de un Autmata Finito que reconoce al lenguaje bba*.
(10)Dibuje el Diagrama de Transiciones de un Autmata Finito que reconoce al lenguaje a (a +
b)*.
(11)Sea el Autmata Finito del Ejemplo 10. Describa su actividad cuando lee la cadena abb.
(12)Dibuje el Diagrama de Transiciones de un Autmata Finito que reconoce al lenguaje
a(ab)*.
(13)Sea el Autmata Finito del Ejemplo 11. Describa sus actividades cuando lee las cadenas:
abab; aba; .
(14)Sea el Autmata Finito del Ejemplo 12. Describa su actividad cuando lee la cadena 1101.
5
Dr. Oscar BRUNO
6
Dr. Oscar BRUNO
AFDs Y AFNs
Autmatas Finitos Determinsticos (AFDs), cuya caracterstica funcional es que para cualquier
estado en que se encuentre el autmata en un momento dado, la lectura de un carcter determina,
sin ambigedades, cual ser el estado de llegada en la prxima transicin.
Ejemplo 1
a a
0- 1 2+
a
3+
7
Dr. Oscar BRUNO
Ejemplo 3
Todas las palabras de aes y/o bes que tienen por lo menos dos letras. El diagrama de transiciones
de un AFD que reconoce este lenguaje es:
La definicin formal de un AFD que reconoce a este lenguaje es M = (Q, , T, q0, F), donde:
Q = {0, 1, 2}; = {a, b}; q0 = 0; F = {2}; T representada por la siguiente tabla de transiciones:
T a b
0- 1 1
1 2 2
2+ 2 2
AFD COMPLETO
Un AFD es completo si cada estado tiene exactamente una transicin por cada carcter
del alfabeto.
Otra definicin es:
Un AFD es completo cuando su tabla de transiciones no tiene huecos; si los tiene, el
AFD es incompleto.
Completar un AFD es eliminar los huecos de su TT. Para ello: (1) Se agrega un estado, llamado
estado de rechazo o estado de no aceptacin; (2) Se reemplaza cada hueco por una transicin a este
nuevo estado; y (3) Se incorpora una nueva entrada en la tabla para el estado de rechazo en la que se
representarn ciclos para todos los caracteres del alfabeto, con lo que se informa que, una vez que el
autmata se sita en el estado de rechazo, de l no puede salir.
Ejemplo 4
Se desea completar el AFD del Ejemplo 2:
M = (Q, , T, q0, F), donde: Q = {0, 1, 2, 3}; = {a, b}; q0 = 0; F = {2, 3}; y T representada por
la TT:
T a b
0- 1 -
1 2 3
2+ - -
3+ 3 -
Para completar el AFD, agregamos un estado de rechazo. Entonces, el nuevo AFD es:
M2 = (Q, , T, q0, F), con Q = {0, 1, 2, 3, 4}; = {a, b}; q0 = 0; F = {2, 3}; y T representada por
la tabla:
T a b
0- 1 4
1 2 3
2+ 4 4
3+ 3 4
4 4 4
8
Dr. Oscar BRUNO
Ejemplo 5
a,b
a b
-
0 1 2+
A- B+
T 1
A- {A} {B}
B+ - -
a b
1 2 3+
0-
b a
4 5 6+
9
Dr. Oscar BRUNO
EJERCICIOS
(1) Escriba la Expresin Regular del lenguaje reconocido por el Autmata Finito del Ejemplo 1.
(2) Sea el lenguaje Todos los nmeros binarios que contienen el grupo 00 por lo menos una vez.
Dibuje el DT de
(1) un AFN que lo reconozca.
(2) Escriba la descripcin formal del AFN diseado en el ejercicio anterior.
(3) Sea el lenguaje Todas las palabras sobre el alfabeto {a, b, c} que terminan con b. Dibuje el
DT de un AFN
(4) que lo reconozca.
(5) Escriba la descripcin formal del AFN diseado en el ejercicio anterior.
(6) Describa formalmente los AFDs diseados en los ejemplos del captulo 4.
(7) Dibuje el diagrama de transiciones de un AFN que acepte el lenguaje 101* + 1*00.
(8) Escriba la descripcin formal del AFN diseado en el ejercicio anterior.
(9) Describa formalmente a los AFDs de un solo estado sobre el alfabeto {a, b}, completos y no
completos.
(10)Describa formalmente a los AFDs de un solo estado sobre el alfabeto {a, b, c}, completos y no
completos.
(11)Describa formalmente a los AFDs de dos estados sobre el alfabeto {a, b}, completos y no
completos.
(12)Elija tres AFNs de dos estados de cada uno, sobre el alfabeto {a, b}, y descrbalos formalmente.
(13)Encuentre un Lenguaje Regular que no contenga la palabra vaca, que no pueda ser aceptado
por un AFD con
(14)un solo estado final. Escriba la Expresin Regular del lenguaje hallado.
10
Dr. Oscar BRUNO
Una forma simple de diseo es determinar manera explcita, que condicion recuerda cada
estado.
Disear un AFD que acepte las palabras en el alfabeto {a, b} en que la cantidad de as es impar.
Las condiciones relevantes para este problema -que deben ser recordadas por los estados
correspondientes- son:
El numero de as recibidas hasta el momento es par (estado P);
El numero de as recibidas hasta el momento es impar (estado I);
Disear un AFD que acepte exactamente el lenguaje en el alfabeto {0, 1} en que las palabras no
comienzan con 00.
Estado Condicin
q0 No se han recibido caracteres
q1 Se ha recibido un cero al inicio
q2 Se han recibido dos ceros iniciales
q3 Se recibi algo que no son dos ceros iniciales
11
Dr. Oscar BRUNO
Equivalencia de automatas finitos. Dos automatas que aceptan el mismo lenguaje son quivalentes.
12
Dr. Oscar BRUNO
1. Estados
a. Compatibles
i. si ambos son finales o ninguno lo es y tienen igual comportamiento
b. Distinguibles
i. Si son incompatibles
ii. Si siendo compatibles no tienen el mismo comportamiento.
c. Equivalentes o redundantes (se pueden eliminar)
i. Si son indistinguibles
Una vez que se sabe que dos estados son equivalentes, se puede pensar en eliminar uno de ellos,
para evitar redundancias y hacer mas eficiente al AFD.
1. Las flechas que salen del estado eliminado son eliminadas;
2. Las flechas que llegan al estado eliminado son redirigidas hacia su estado equivalente.
13
Dr. Oscar BRUNO
Algo de C
CADENAS
14
Dr. Oscar BRUNO
Macros
NULL
Ver Definiciones Comunes.
EOF
Expresin constante entera con tipo int y valor negativo que es retornada por
varias funciones para indicar fin de archivo; es decir, no hay mas datos entrantes
que puedan ser ledos desde un flujo, esta situacin puede ser porque se lleg al fin
del archivo o porque ocurri algn error. Contrastar con feof y ferror.
SEEK_CUR
SEEK_END
SEEK_SET
Argumentos para la funcin fseek.
stderr
stdin
stdout
Expresiones del tipo FILE* que apuntan a objetos asociados con los flujos estndar
de error, entrada y salida respectivamente.
Acceso
FILE* fopen (
const char* nombrearchivo,
const char* modo
);
Abre el archivo cuyo nombre es la cadena apuntada por nombrearchivo asociando
un flujo con este segn el modo de apertura. Retorna (ok ? puntero al objeto que
controla el flujo : NULL).
15
Dr. Oscar BRUNO
16
Dr. Oscar BRUNO
Lee hasta n bloques contiguos de t bytes cada uno desde el flujo f y los almacena
en el objeto apuntado por p. Retorna (ok ? n : < n).
Posicionamiento
int fseek (
FILE* flujo,
long desplazamiento,
int desde
);
Ubica el indicador de posicin de archivo del flujo binario apuntado por flujo,
desplazamiento caracteres a partir de desde. desde puede ser SEEK_SET,
SEEK_CUR SEEK_END, comienzo, posicin actual y final del archivo
respectivamente. Para flujos de texto, desplazamiento deber ser cero o un valor
retornado por ftell y desde debe ser SEEK_SET. En caso de xito los efectos de
ungetc son deshechos, el indicador de fin de archivo es desactivado y la prxima
operacin puede ser de lectura o escritura. Retorna (ok ? 0 : 0).
17
Dr. Oscar BRUNO
Sintaxis de C
Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno
18
Dr. Oscar BRUNO
1.1.3. Identificadores
<identificador> -> <no dgito> | <identificador> <no dgito> |
<identificador> <dgito>
<no dgito> -> uno de _ a b c d e f g h i j k l m n o p q r s t u v
w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
<dgito> -> uno de 0 1 2 3 4 5 6 7 8 9
19
Dr. Oscar BRUNO
1.1.4. Constantes
<constante> ->
<constante entera> |
<constante real> |
<constante carcter> |
<constante enumeracin>
En general, en computacin las constantes enteras no son un
subconjunto de las constantes reales.
Constante Entera
<constante entera> ->
<constante decimal> <sufijo entero>? |
<constante octal> <sufijo entero>? |
<constante hexadecimal> <sufijo entero>?
<constante decimal> ->
<dgito no cero> |
<constante decimal> <dgito>
<dgito no cero> -> uno de
1 2 3 4 5 6 7 8 9
<dgito> -> uno de
0 1 2 3 4 5 6 7 8 9
<constante octal> ->
0 |
<constante octal> <dgito octal>
<dgito octal> -> uno de
0 1 2 3 4 5 6 7
<constante hexadecimal> ->
0x <dgito hexadecimal> |
0X <dgito hexadecimal> |
<constante hexadecimal> <dgito hexadecimal>
<dgito hexadecimal> -> uno de
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
<sufijo entero> ->
<sufijo "unsigned"> <sufijo "long">? |
<sufijo "long"> <sufijo "unsigned">?
<sufijo "unsigned"> -> uno de
u U
<sufijo "long"> -> uno de
l L
20
Dr. Oscar BRUNO
<sufijo U> = u | U
<sufijo L> = l | L
<sufijo entero> =
<sufijo U> |
<sufijo L> |
<sufijo U> <sufijo L> |
<sufijo L> <sufijo U>
<dgito decimal> = [0-9]
<dgito decimal no nulo> = [1-9]
<dgito hexadecimal> = [0-9a-fA-F]
<dgito octal> = [0-7]
<prefijo hexadecimal> = 0x | 0X
<constante decimal> = <dgito decimal no nulo> <dgito
decimal>
<constante hexadecimal> = <prefijo hexadecimal> <dgito
hexadecimal>+
<constante octal> = 0 <dgito octal>
<constante incompleta> =
<constante decimal> |
<constante hexadecimal> |
<constante octal>
<constante entera> = <constante incompleta> <sufijo
entero>?
Constante Real
<constante real> ->
<constante fraccin> <parte exponente>? <sufijo real>?
|
<secuencia dgitos> <parte exponente> <sufijo real>?
<constante fraccin> ->
<secuencia dgitos>? . <secuencia dgitos> |
<secuencia dgitos> .
<parte exponente> ->
e <signo>? <secuencia dgitos> |
E <signo>? <secuencia dgitos>
<signo> -> uno de + -
<secuencia dgitos> ->
<dgito> |
<secuencia dgitos> <dgito>
<dgito> -> uno de 0 1 2 3 4 5 6 7 8 9
<sufijo real> -> uno de f F l L
Si no tiene sufijo, la constante real es double.
Constante Carcter
<constante carcter> ->
21
Dr. Oscar BRUNO
'<carcter-c>' |
'<secuencia de escape>'
<carcter-c> -> cualquiera excepto
' \
<secuencia de escape> ->
<secuencia de escape simple> |
<secuencia de escape octal> |
<secuencia de escape hexadecimal>
<secuencia de escape simple> -> uno de
\' \" \? \\ \a \b \f \n \r \t \v
<secuencia de escape octal> ->
\<dgito octal> |
\<dgito octal> <dgito octal> |
\<dgito octal> <dgito octal> <dgito octal>
<dgito octal> -> uno de
0 1 2 3 4 5 6 7
<secuencia de escape hexadecimal> ->
\x<dgito hexadecimal> |
\x <dgito hexadecimal> <dgito hexadecimal>
\x admite nicamente la x minscula.
<dgito hexadecimal> -> uno de
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
Constante Enumeracin
<constante enumeracin> ->
<identificador>
22
Dr. Oscar BRUNO
23
Dr. Oscar BRUNO
24
Dr. Oscar BRUNO
Expresiones Constantes
<expresin constante> -> <expresin condicional>
Las expresiones constantes pueden ser evaluadas durante la traduccin en lugar
de durante la ejecucin.
1.2.2. Declaraciones
Una declaracin especifica la interpretacin y los atributos de un
conjunto de identificadores.
<declaracin> ->
<especificadores de declaracin> <lista de declaradores>?
<especificadores de declaracin> ->
<especificador de clase de almacenamiento> <especificadores de
declaracin>? |
<especificador de tipo> <especificadores de declaracin>? |
25
Dr. Oscar BRUNO
26
Dr. Oscar BRUNO
27
Dr. Oscar BRUNO
1.2.3. Sentencias
<sentencia> ->
<sentencia expresin> |
<sentencia compuesta> |
<sentencia de seleccin> |
<sentencia de iteracin> |
<sentencia etiquetada> |
<sentencia de salto>
<sentencia expresin> ->
<expresin>? ;
<sentencia compuesta> ->
{<lista de declaraciones>? <lista de sentencias>?}
<lista de declaraciones> ->
<declaracin> |
<lista de declaraciones> <declaracin>
<lista de sentencias> ->
<sentencia> |
<lista de sentencias> <sentencia>
La sentencia compuesta tambin se denomina bloque.
28
Dr. Oscar BRUNO
<definicin de funcin> |
<declaracin>
La unidad de texto de programa luego del preprocesamiento es
una unidad de traduccin, la cual consiste en una secuencia de
declaraciones externas.
29
Dr. Oscar BRUNO
defined ( <identificador> )
defined <identificador>
#
##
30