Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automatas PDF
Automatas PDF
PRIMERA PARTE
AUTOMATAS
COMPUTABILIDAD
ESPECIFICACIN FORMAL
DE PROCESOS
AUTMATAS Y COMPUTABILIDAD
Teora de Autmatas
Computabilidad y Decidibilidad
Teora de la Complejidad Computacional
TEORA DE AUTMATAS
AUTOMATAS
Un autmata es:
TIPOS DE AUTOMATAS
Mquinas de Turing
Aceptacin o reconocimiento
Generacin
Determinista
No-Determinista
De tamao fijo
De tamao creciente
De tamao infinito
Discreta
Continua
Autmatas deterministas:
Autmatas no-deterministas:
DESARROLLO
DE LA
TEORA DE AUTMATAS
Turing (1936)
McCulloch, Pitts (1943)
Kleene (1956)
Shannon (1956)
Moore (1956)
Minsky (1956)
Wang (1957)
Sepherdson (1959)
Rabin, D. Scott (1959)
McNaughton, Yamada (1960)
Rabin (1963)
Chomsky (1963)
McCarthy (1963)
Hartmanis, Stearns (1965)
AUTMATAS FINITOS
entrada salida
Cada uno de los m estados internos distintos: q0, ..., qi, ...,
qn
El conjunto de los estados internos: Q
q0 es el estado inicial y qn es un estado final
El nmero de estados internos es finito
Estructura:
Dispositivo de lectura
Cinta de Autmata
entrada Finito
tal que:
es el alfabeto de entrada
Q es el conjunto de los estados
q0 es el estado inicial
es la funcin de transicin de estados
F es el conjunto de los estados finales [F Q]
:Q Q
q1 i1 q1
... ... ...
qm ik qm
<Estado,Entrada,NuevoEstado>
EJEMPLO 1
q0,0,q1
q0,1,q2
q1,0,q1
q1,1,q2
q1,*,qR
q2,0,q1
q2,1,q2
q2,*,qA
EJEMPLO 1 (2)
q1 qR
*
0
q0 1 0
1
q2 *
qA
EJEMPLO 2
0
0
q0 q1 q2 qA
1
1
*
*
*
qR
EJEMPLO 3
q0 1 q1 1 q2 1 q 1 qA
1
1 1
qR
AFD RECONOCEDORES
CON MAS DE UNA CINTA DE ENTRADA
q1
*1
q0 1* q2
**
q=
11
AFDs
TRANSDUCTORES O GENERADORES
Dispositivo de lectura
Cinta de entrada
Cinta de salida
Dispositivo de escritura
i1 q1 o1
... ... ...
in qn on
EJEMPLO 1
Init
1/0 0/1
q0
*/*
qStop
Init
0
q0/0 q1/1
00/0 01/0
11/0
q1 q2
01/1 10/0
00/1
10/1 11/1
: Q (Q)
= *Q Q[0,1]
j = pj(i,qk)
para todo k j
donde:
0 pj(i,qk) 1
i=1,n p(i,q) = 1
Autmatas Intermedios
Mquinas de Turing
I/O
I d i m b
Autmata Finito
de Control
q110q2d
q211q2d
q201q3i
q311q3i
q300q4d
q410q5d
11d
00d **i
q2 q4
11d 1*i
1*d **d 11i
q1 q7 q6
0*d 00i
00d 0*i
q3 q5
11d **i
00d
Escribir se
Hacer el movimiento m
Pasar al estado qj
n Leer sl
n+1 Si sl tiene el valor v, ir a la lnea nmero m
n+2
.
.
.
m Escribir se
m+1 Hacer el movimiento m
m+2 Ir a la lnea nmero j (j ser = n si no hay cambio de
estado)
De esta forma:
(Ejemplos ms adelante)
Supondremos que:
1. LEER(s)
2. SI s = * IR A 9
3. SI s = 0 IR A 6
3. ESCRIBIR 0
4. MOVERD
5. IR A 1
6. ESCRIBIR 1
7. MOVERD
8. IR A 1
9. PARAR
De 1 a 5
De 1 a 8
1. LEER(s)
2. ESCRIBIR(*)
3. SI s = * IR A 36 (La cinta se ha quedado vaca. Es palndrome)
4. SI s = 1 IR A 11 (Se ha ledo un 1 en el extremo de la izquierda)
5. MOVERD (Se ha ledo un 0 en el extremo de la izquierda.
Empieza a moverse hasta llegar al extremo de la derecha)
6. SI s = * IR A 8
7. IR A 5
8. MOVERI
9. LEER(s)
10. IR A 19
11. MOVERD (Se ha ledo un 1 en el extremo de la izquierda. Empieza a
moverse hasta llegar al extremo de la derecha)
12. SI s = * IR A 14
13. IR A 11
14. MOVERI
15. LEER(s)
16. SI s = 0 IR A 27 (En el extremo de la derecha hay un 0. No es palndrome)
17. ESCRIBIR(*) (En el extremo de la derecha hay tambin un 1. Se borra)
18. IR A 21 (Hay que volver al extremo de la izquierda)
19. SI s = 1 IR A 27 (En el extremo de la derecha hay un 1. No es palndrome)
20. ESCRIBIR(*) (En el extremo de la derecha hay tambin un 0. Se borra)
21. MOVERI (Empieza a volver hacia la izquierda)
22. LEER(s)
23. SI s = * IR A 25
24. IR a 21
25. MOVERD (Ha llegado de nuevo al extremo de la izquierda)
26. IR A 1
27. ESCRIBIR(*) (No era palndrome. Hay que borrar todo y escribir un 0)
28. MOVERI
29. LEER(s)
30. SI s = * IR A 33
31. ESCRIBIR(*)
32. IR A 28
33. ESCRIBIR(0)
34. IR A 36
35. ESCRIBIR(1) (Era un palndrome)
36. PARAR
SUBRUTINAS
SI s = * IR A n
SI s = 0 IR A n
SI s = 1 IR A n
De la lnea 5 a la 9
De la lnea 11 a la 15
IR-EXTREMO-DERECHA
1. MOVERD
2. SI s = * IR A 14
3. IR A 11
4. MOVERI
5. LEER(s)
MAQUINAS DE REGISTROS
Programas
ESPECIFICACIN DE ALGORITMOS
LENGUAJE DE
ESPECIFICACIN DE ALGORITMOS
entero(X)
es_una_lista(Y)
(5*3)+(3+2)
(X+Y)/25
raiz2(X)
sea A = 0
si (expresin) entonces (instruccin)
escribir Z
ejecutar prog1
Comentarios
LENGUAJE DE
ESPECIFICACIN DE ALGORITMOS (2)
Secuenciacin directa
Instrucciones condicionales:
Iteracin limitada:
Iteracin condicional:
INSTRUCCIONES CONDICIONALES
si Condicin
entonces Instruccin o secuencia de instrucciones
finsi
si Condicin
entonces Instruccin o secuencia de instrucciones
enotrocaso Instruccin o secuencia de instrucciones
finsi
si Condicin
entonces si Condicin
finsi
finsi
seleccionar (Expresin)
caso Valor1:
Instruccin o secuencia de instrucciones
caso Valorn:
Instruccin o secuencia de instrucciones
enotrocaso:
Instruccin o secuencia de instrucciones
finseleccionar
ITERACIN LIMITADA
ITERACION INFINITA
hacer
Instruccin1
...
Instruccinn
finhacer
mientras Condicin
[hacer]]
Instruccin1
...
Instruccinn
finmientras
hacer
Instruccin1
...
Instruccinn
mientras Condicin
finhacer
hacer
Instruccin1
...
Instruccinn
hasta que Condicin
finhacer
SALTO INCONDICIONAL
Salto incondicional:
ira Etiqueta
MANEJO DE
SUBRUTINAS
ejecutar Proc[[(Parmetros,Valor)]]
regresar[[(Valor)]]
RECURSION
Instrucciones de entrada/salida:
leer Item
escribir Item
TIPOS DE DATOS
entero: 1, 0, 543,
decimal: 1.25, 0.000004, 47.36,
numero: un entero o decimal
cadena: Secuencia de caracteres alfanumricos que puede
contener blancos. Suele escribirse entre comillas
dobles.
constante alfanumrica: Secuencia de caracteres
alfanumricos. Por convencin, si empieza por
mayscula o contiene blancos, se escribe entre comillas
simples.
sea X = 34
sea Y = Expresin
CODIFICACION DE
INFORMACIN ALFANUMERICA
A 0001100
4 0100011
( 1000010
f 0110110
< 1100011
...
EXPRESIONES
Aritmticas:
Lgicas:
ESTRUCTURAS DE DATOS
Vectores o listas
Matrices o tablas
Colas
Pilas
Arboles
El nombre de la estructura
Uno o ms ndices que indican la posicin del elemento
en la estructura
VECTORES Y LISTAS
procedimiento Incrementar:
dimension vect(10)
hacer I desde 1 hasta 10
sea vect(I) = vect(I) + 1
finhacer
fin Incrementar
I+1
vect(I+1)
vect(I)+1
LISTAS
procedimiento Pertenece
Pertenece(E,[[E|_]]).
Pertenece(E,[[_|L1]]) si Pertenece(E,L1).
fin Pertenece
procedimiento Incrementa(ListaEntrada,ListaSalida)
Incrementa([[],[[]).
Incrementa([[Elemento|Lista]],[[Elemento1|Lista1]]) si
sea Elemento1 = Elemento+1,
Incrementa(Lista,Lista1).
fin Incrementa
MATRICES O TABLAS
dimension datos(50,5)
COLAS Y PILAS
ARBOLES
El nodo raz
Un nodo terminal
Un nodo no-terminal
EJEMPLO
procedimiento CreaArbol:
fin CreaArbol
COMPUTABILIDAD
DECIDIBILIDAD
Decidibilidad
El Problema de la Parada
COMPLEJIDAD COMPUTACIONAL
Complejidad
Tipos de complejidad:
O(f(n))
Algoritmos de Bsqueda:
Bsqueda Secuencial:
Dado un conjunto de n elementos, compara todos
ellos con el buscado
En el peor caso (como mximo), n operaciones
Complejidad: O(n)
Bsqueda Binaria:
Requiere que el conjunto de elementos est
previamente ordenado
Peor caso: el primer valor entero k tal que 2kn,
es decir k = log2 n
Complejidad: O(log2 n)
Algoritmos de Ordenacin: