Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automatas PDF
Automatas PDF
PRIMERA PARTE
AUTOMATAS
COMPUTABILIDAD
ESPECIFICACIÓN FORMAL
DE PROCESOS
AUTÓMATAS Y COMPUTABILIDAD
• Teoría de Autómatas
• Computabilidad y Decidibilidad
• Teoría de la Complejidad Computacional
TEORÍA DE AUTÓMATAS
AUTOMATAS
• Un autómata es:
TIPOS DE AUTOMATAS
• Máquinas de Turing
• Aceptación o reconocimiento
• Generación
• Determinista
• No-Determinista
• De tamaño fijo
• De tamaño creciente
• De tamaño infinito
• Discreta
• Continua
• Autómatas deterministas:
• Autómatas no-deterministas:
DESARROLLO
DE LA
TEORÍA DE AUTÓMATAS
• 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)
AUTÓMATAS 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 número de estados internos es finito
• Estructura:
Dispositivo de lectura
Cinta de Autómata
entrada Finito
tal que:
• Σ es el alfabeto de entrada
• Q es el conjunto de los estados
• q0 es el estado inicial
• τ es la función de transición 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
Autómatas Intermedios
Máquinas de Turing
I/O
I d i m b
Autómata 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 línea número m
n+2
.
.
.
m Escribir se
m+1 Hacer el movimiento m
m+2 Ir a la línea número j (j será = n si no hay cambio de
estado)
• De esta forma:
• 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 vacía. Es palíndrome)
4. SI s = 1 IR A 11 (Se ha leído un 1 en el extremo de la izquierda)
5. MOVERD (Se ha leído 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 leído 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 palíndrome)
17. ESCRIBIR(*) (En el extremo de la derecha hay también 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 palíndrome)
20. ESCRIBIR(*) (En el extremo de la derecha hay también 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 palíndrome. 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 palíndrome)
36. PARAR
SUBRUTINAS
SI s = * IR A n
SI s = 0 IR A n
SI s = 1 IR A n
• De la línea 5 a la 9
• De la línea 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
ESPECIFICACIÓN DE ALGORITMOS
LENGUAJE DE
ESPECIFICACIÓN DE ALGORITMOS
• entero(X)
• es_una_lista(Y)
• (5*3)+(3+2)
• (X+Y)/25
• raiz2(X)
• sea A = 0
• si (expresión) entonces (instrucción)
• escribir Z
• ejecutar prog1
• Comentarios
LENGUAJE DE
ESPECIFICACIÓN DE ALGORITMOS (2)
• Secuenciación directa
• Instrucciones condicionales:
• Iteración limitada:
• Iteración condicional:
INSTRUCCIONES CONDICIONALES
si Condición
entonces Instrucción o secuencia de instrucciones
finsi
si Condición
entonces Instrucción o secuencia de instrucciones
enotrocaso Instrucción o secuencia de instrucciones
finsi
si Condición
entonces si Condición
…
finsi
finsi
seleccionar (Expresión)
caso Valor1:
Instrucción o secuencia de instrucciones
…
caso Valorn:
Instrucción o secuencia de instrucciones
enotrocaso:
Instrucción o secuencia de instrucciones
finseleccionar
ITERACIÓN LIMITADA
ITERACION INFINITA
hacer
Instrucción1
...
Instrucciónn
finhacer
mientras Condición
[hacer]]
Instrucción1
...
Instrucciónn
finmientras
hacer
Instrucción1
...
Instrucciónn
mientras Condición
finhacer
hacer
Instrucción1
...
Instrucciónn
hasta que Condición
finhacer
SALTO INCONDICIONAL
• Salto incondicional:
ira Etiqueta
MANEJO DE
SUBRUTINAS
ejecutar Proc[[(Parámetros,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 alfanuméricos que puede
contener blancos. Suele escribirse entre comillas
dobles.
constante alfanumérica: Secuencia de caracteres
alfanuméricos. Por convención, si empieza por
mayúscula o contiene blancos, se escribe entre comillas
simples.
sea X = 34
sea Y = Expresión
CODIFICACION DE
INFORMACIÓN ALFANUMERICA
A 0001100
4 0100011
( 1000010
f 0110110
< 1100011
...
EXPRESIONES
• Aritméticas:
• Lógicas:
ESTRUCTURAS DE DATOS
• Vectores o listas
• Matrices o tablas
• Colas
• Pilas
• Arboles
• El nombre de la estructura
• Uno o más índices que indican la posición 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 raíz
• 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 Búsqueda:
• Búsqueda Secuencial:
• Dado un conjunto de n elementos, compara todos
ellos con el buscado
• En el peor caso (como máximo), n operaciones
• Complejidad: O(n)
• Búsqueda Binaria:
• Requiere que el conjunto de elementos esté
previamente ordenado
• Peor caso: el primer valor entero k tal que 2k≥n,
es decir k = log2 n
• Complejidad: O(log2 n)
• Algoritmos de Ordenación: