Professional Documents
Culture Documents
Autmatas y Computabilidad
PRIMERA PARTE
AUTOMATAS Y COMPUTABILIDAD
Lgica y Computacin
Autmatas y Computabilidad
ESPECIFICACIN FORMAL DE PROCESOS La matemtica nos proporciona lenguajes para especificar (= definir, hablar de) procesos El concepto clave para la definicin matemtica de procesos es el de algoritmo Definicin intuitiva de algoritmo: Secuencia de operaciones que, aplicada correctamente a un problema de una clase determinada, genera la solucin a ese problema en un tiempo finito Existen varias formas de definicin matemtica de algoritmo: Funciones recursivas (Gdel) Funciones -definibles (Church, Kleene) Algoritmos de Markov Teora de Autmatas (Mquinas de Turing)
Lgica y Computacin
Autmatas y Computabilidad
AUTMATAS Y COMPUTABILIDAD Para la especificacin matemtica de procesos estudiamos tres teoras distintas: Teora de Autmatas Computabilidad y Decidibilidad Teora de la Complejidad Computacional La Teora de Autmatas nos proporciona el lenguaje para la especificacin de procesos algortmicos La Teora de la Computabilidad y la Decidibilidad nos proporciona informacin acerca de los lmites de la resolucin algortmica de problemas La Teora de la Complejidad Computacional nos proporciona estrategias de medida de la complejidad de cada tipo de proceso algortmico
Lgica y Computacin
Autmatas y Computabilidad
TEORA DE AUTMATAS
Lgica y Computacin
Autmatas y Computabilidad
AUTOMATAS
Lgica y Computacin
Autmatas y Computabilidad
TIPOS DE AUTOMATAS Hay muchos tipos de autmatas Cada tipo de autmata se asocia a una potencia computacional determinada, es decir, a una capacidad dada de resolucin de problemas De hecho, podemos clasificar los problemas algortmicamente solubles asocindolos al tipo de autmata que los resuelve Estos tipos se ordenan en una jerarqua de menor a mayor potencia computacional Jerarqua de automtas: Autmatas finitos (Redes Lgicas) Autmatas intermedios: Autmatas de memoria de pila Autmatas de memoria linealmente limitada Mquinas de Turing
Lgica y Computacin
Autmatas y Computabilidad
TIPOS DE AUTOMATAS (2) Adems, podemos clasificar los autmatas: Por el tipo de proceso que ejecutan: Aceptacin o reconocimiento Generacin Por su tipo de causalidad: Determinista No-Determinista Por el tipo de su almacenamiento de informacin: De tamao fijo De tamao creciente De tamao infinito Por el tipo de la informacin que manejan Discreta Continua
Lgica y Computacin
Autmatas y Computabilidad
TIPOS DE AUTOMATAS (3) Autmatas aceptadores o reconocedores: Resuelven problemas con respuesta si/no, que se modeliza normalmente como la identificacin de dos estados finales, uno de aceptacin y otro de rechazo Autmatas generadores o transductores: Construyen una respuesta especfica (una salida) para el problema planteado Autmatas deterministas: La solucin del problema viene unvocamente determinada por las entradas y los estados internos del autmata Autmatas no-deterministas: La respuesta no est unvocamente determinada
Lgica y Computacin
Autmatas y Computabilidad
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)
Lgica y Computacin
Autmatas y Computabilidad
AUTMATAS FINITOS Un autmata finito es un mecanismo cuya memoria es siempre finita. Suponemos que la memoria del autmata est compuesta por un conjunto de unidades de retardacin: entrada salida
En cualquier instante ti del proceso, posterior a t0: salida(t) = entrada(ti-1), o, lo que es lo mismo: entrada(t) = salida(ti+1). ( t : un instante de tiempo discreto) Cada unidad de retardacin almacena una unidad de informacin durante una unidad de tiempo. El nmero de estos dispositivos es finito Definicin: El estado interno en t de un autmata finito que ejecuta un proceso es el conjunto de los contenidos de la memoria del autmata finito en el instante t de ese proceso 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
10
Lgica y Computacin
Autmatas y Computabilidad
AUTMATAS FINITOS (2) A lo largo del proceso los contenidos de memoria del autmata van cambiando Describiremos cmo se produce el cambio de estado a lo largo del tiempo definiendo una funcin de transicin de estados, que nos dice cul ser el estado del autmata en el instante de tiempo siguiente La funcin de transicin de estados puede ser determinista (AFD) o no determinista (AFND) En algunos casos desearemos describir la respuesta del autmata como una funcin de sus estados internos, y eventualmente, tambin de los estmulos que recibe: funcin de salida Adems, tenemos que especificar: Su repertorio de smbolos, , es decir, el conjunto de smbolos que podrn formar parte de sus entradas (y, eventualmente, de sus salidas) El conjunto Q de sus estados internos posibles Su estado inicial q0 El conjunto F de sus estados finales, que es un subconjunto del conjunto de estados internos Cada entrada (y salida) posible del autmata es una secuencia o cadena finita de smbolos de * : el conjunto de cadenas finitas de smbolos de * es un conjunto potencialmente infinito
11
Lgica y Computacin
Autmatas y Computabilidad
AUTOMATAS FINITOS DETERMINISTICOS RECONOCEDORES O ACEPTADORES Estructura: Dispositivo de lectura Cinta de entrada Autmata Finito
La cinta se mueve de izquierda a derecha La cinta tiene escrito un smbolo en cada casilla El conjunto de los smbolos de la cinta forma una secuencia de smbolos El ltimo smbolo de la cinta es un smbolo delimitador (*) En cada instante t, el autmata lee un smbolo. Cuando el autmata encuentre el smbolo *, se detendr, terminando el proceso. Conoceremos el resultado del proceso ejecutado inspeccionando el estado interno en que queda el autmata al final del proceso
12
Lgica y Computacin
Autmatas y Computabilidad
AUTOMATAS FINITOS DETERMINISTICOS RECONOCEDORES O ACEPTADORES (2) Definicin. Un autmata finito (determinstico) reconocedor es una estructura: AF = < , Q, q0,, F > 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
Esta funcin nos dice cul ser el estado del autmata en el instante de tiempo siguiente, en trminos de su estado actual y su entrada actual: qt+1 = (qt, it)
13
Lgica y Computacin
Autmatas y Computabilidad
AUTOMATAS FINITOS DETERMINISTICOS RECONOCEDORES O ACEPTADORES (3) Puesto que tanto Q como I son finitos, podemos definir la funcin de transicin de estados mediante una tabla de transicin de estados: Estados en t q1 ... qm Entradas en t i1 ... ik Estados en t+1 q1 ... qm
Para definir (el comportamiento de) un autmata concreto, especificaremos precisamente su funcin de transicin de estados Tendremos as un conjunto de instrucciones de la forma: <Estado,Entrada,NuevoEstado> Estado: el estado en el que se est Entrada: smbolo que se lee NuevoEstado: el nuevo estado generado por la funcin de transicin Para cada estado interno, determinaremos, para cada smbolo de entrada posible, a qu otro estado interno pasa. Si este nuevo estado es un estado final, el proceso se detiene. El proceso comienza por el estado inicial
14
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO 1 Especificacin de un AFD que reconoce secuencias finitas no vacas de smbolos del alfabeto = {0,1,*} que acaban en 1. El smbolo * se utiliza exclusivamente como smbolo de final de secuencia.Es decir, como estados finales tendremos: un estado de aceptacin ( qA), en el que ha de quedar el autmata si el ltimo smbolo ledo es un 1 un estado de rechazo (qR). Por tanto, en este caso, F = {qA,qR} La secuencia de instrucciones que define este autmata consiste en una definicin de la correspondiente tabla de transicin de estados: q0,0,q1 q0,1,q2 q1,0,q1 q1,1,q2 q1,*,qR q2,0,q1 q2,1,q2 q2,*,qA q1: el ltimo smbolo ledo es un 0 q2: el ltimo smbolo ledo es un 1
15
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO 1 (2) El proceso puede representarse asimismo mediante un grafo cuyos nodos representan estados y cuyos arcos representan transiciones entre estados. Cada arco se etiqueta con el smbolo ledo que provoca la transicin. El inicio del proceso se marca mediante un arco de entrada al estado inicial. De los estados finales no parte ningn arco.
q1 * 0
qR
q0 1
q2
* qA
16
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO 2 Autmata finito reconocedor que acepta secuencias finitas no vacas de smbolos del alfabeto = {0,1,*} tales que contienen al menos una subsecuencia de la forma 010 (* = delimitador) El grafo correspondiente es:
0 0 0 q1 1 * * qR * q2 qA
q0 1
El estado q2 significa que los dos ltimos smbolos ledos son 01 No es necesario esperar al final de la secuencia para entrar en el estado de aceptacin q1 significa que el ltimo smbolo ledo es un 0. Por tanto, si se lee un 0, nos quedamos en el mismo estado.
17
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO 3 AFD que reconoce si el nmero de 1s en la secuencia de entrada (finita y no vaca) es divisible por 3:
q0 1
q1 1
q2 1
qA
qR
18
Lgica y Computacin
Autmatas y Computabilidad
AFD RECONOCEDORES CON MAS DE UNA CINTA DE ENTRADA Los autmatas finitos reconocedores pueden manejar problemas en los que haya ms de una secuencia de entrada. Adems, los estados finales de los autmatas reconocedores no necesariamente est limitado a dos Ejemplo: especificar un AFD reconocedor, que, dadas dos secuencias de entrada, nos diga si ambas tienen la misma longitud, si la primera es ms larga que segunda, o si la segunda es ms larga que la primera. Supondremos que nuestro autmata, en cada instante del proceso, puede leer un smbolo de cada secuencia. Sea = {1,*} (* delimitador)
Alineamos las dos secuencias sobre la entrada del autmata, de forma que en el instante inicial del proceso t, el autmata recibe el primer smbolo de cada secuencia. Sea F = {q1,q2, q=}. Entonces: *1 q0 1* ** 11 q1 q2 q=
19
Lgica y Computacin
Autmatas y Computabilidad
AFDs TRANSDUCTORES O GENERADORES En los autmatas transductores tenemos una salida explcita: Dispositivo de lectura Cinta de entrada Cinta de salida Dispositivo de escritura Conocemos el resultado examinando la salida Funcin de salida: caracteriza la salida de un autmata finito de una de dos formas: En trminos de sus estados internos y sus entradas: autmata de Mealy En trminos simplemente de sus estados internos: autmata de Moore Normalmente, describiremos los AFDs transductores como autmatas de Mealy. Tabla de salida de un autmata de Mealy: Entrada i1 ... in Estado q1 ... qn Salida o1 ... on
20
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO 1 Especificacin de un AFD que, dada una secuencia finita no vaca de smbolos de {0, 1,*}, la convierte en otra en la que sustituye cada 1 por 0, y viceversa (* delimitador): Etiquetamos cada arco con el par <entrada/salida>: Init 1/0 q0 */* qStop Existe un autmata de Moore correspondiente: cada nodo se etiqueta con el par <estado/salida>, y la etiqueta del arco (entrada) es la que causa la transicin Init 0 q0/0 1 T. Por cada autmata de Mealy, existe otro de Moore que ejecuta la misma tarea, y viceversa. q1/1 0/1
21
Lgica y Computacin
Autmatas y Computabilidad
Ejemplos de Autmatas Finitos (6) 4. Especificar un autmata que sume dos nmeros en base 2. Ayuda: Se trata de aplicar la tabla de la suma binaria: 0+0 = 0 0+1 = 1+0 = 1 1+1 = 10 Suponemos que los dos nmeros tienen igual nmero de dgitos (el ms corto se iguala con el ms largo aadindole 0s por la izquierda) Suponemos que en cada instante t el autmata lee el siguiente dgito ms a la izquierda de cada nmero En cada paso: Los dos dgitos se suman de acuerdo con la tabla Si hay arrastre previo, se suma tambin Se toma nota del arrastre si lo hay Cada salida depende de la entrada actual y del resultado anterior En cada paso puede haber arrastre o no (dos estados) Hay dos salidas posibles y cuatro entradas posibles 00/0 11/0 01/1 q1 00/1 10/1 11/1 q2 10/0 01/0
22
Lgica y Computacin
Autmatas y Computabilidad
Autmatas Finitos no-determinsticos (AFND) Son idnticos a los determinsticos, excepto en la forma de su funcin de transicin de estados: : Q (Q) A cada combinacin estado/entrada no le corresponde unvocamente un estado sino uno de los posibles conjuntos de estados T. Para todo AFND, podemos construir un AFD que ejecuta la misma tarea Autmatas estocsticos o probabilistas Funcin de transicin probabilista:
= *Q Q[0,1]
Es una funcin que, para cada par <secuencia de entradas/estado>, nos dice qu probabilidad hay de pasar a otro estado. Para cada estado qj, hay una funcin:
j = pj(i,qk)
para todo k j donde: 0 pj(i,qk) 1 i=1,n p(i,q) = 1
23
Lgica y Computacin
Autmatas y Computabilidad
Autmata estocstico de estructura variable Podemos aadir a la especificacin del autmata probabilstico un algoritmo de actualizacin o refuerzo que: Toma como entrada: La ltima probabilidad de transicin aplicada La ltima entrada La ltima salida Genera como salida una nueva probabilidad de transicin El cambio de las probabilidades de transicin a lo largo del tiempo modeliza la adaptacin o aprendizaje adaptativo del sistema: capacidad para mejorar la probabilidad de emitir una respuesta correcta como resultado de su interaccin con el entorno
24
Lgica y Computacin
Autmatas y Computabilidad
Autmatas Intermedios Son autmatas cuya potencia computacional es mayor que la de los autmatas finitos, pero menor que la de las Mquinas de Turing Autmatas linealmente limitados Autmatas finitos que pueden utilizar como espacio de memoria intermedia un espacio como mximo igual al ocupado por la(s) cadena(s) de entrada (De hecho, es el mismo espacio) Autmatas de memoria de pila Pila (Stack): Estructura de almacenamiento de datos que funciona segn el principio LIFO (Last Input, First Output) Los autmatas de memoria de pila son autmatas finitos con una memoria de pila potencialmente infinita, que utiliza para almacenar resultados intermedios
25
Lgica y Computacin
Autmatas y Computabilidad
Autmata Finito de Control Cinta potencialmente infinita, que se utiliza para almacenar: Los datos de entrada Los datos de salida Los resultados intermedios Cada casilla de la cinta contiene cada uno de los smbolos del alfabeto del problema (Supondremos que = {1, 0}) Al comienzo del proceso, la Mquina de Turing se encuentra situada sobre la primera casilla a la izquierda de la parte no-vaca de la cinta El autmata finito de control tiene una entrada (I) y cuatro salidas (d, i, m, b) La entrada I recibe en cada instante t el smbolo contenido en la casilla que se est examinando en ese instante
26
Lgica y Computacin
Autmatas y Computabilidad
Mquinas de Turing (2) En respuesta a esa informacin de entrada, el autmata finito de control genera una instruccin de actuacin sobre la cinta: Cuando activa la salida d, la Mquina de Turing se mueve a la derecha una casilla Cuando activa i, se mueve una casilla a la izquierda Cuando activa m (marcar), escribe un smbolo 1 en la casilla actual Cuando activa b (borrar), escribe un 0 en la casilla actual La definicin puede variar en sus trminos: Alfabeto variado Movimiento de la cinta, y no de la mquina ... (Def. )La Mquina de Turing se detiene en un instante t si, a partir t, la Mquina de Turing sigue examinando la misma casilla, sin producir ningn cambio en ella, y sin cambios de estado en el autmata finito de control En cada instante t, la Mquina de Turing est en un estado dado (el de su autmata finito de control) Cada operacin de cambio de estado y de salida de la Mquina de Turing est determinada por una combinacin <estado, smbolo ledo>
27
Lgica y Computacin
Autmatas y Computabilidad
Mquina de Turing (3) Resolver un problema equivale a computar una funcin cuyo valor es la solucin del problema (Def.) Una Mquina de Turing T computa una funcin f(a1, an) = v sii, representados en su cinta, en un instante t0, los argumentos a1, ..., an, se detiene en un instante ti t0, con v representado sobre su cinta T es una Mquina de Turing concreta: slo resuelve el problema para el que est diseada Si T computa una funcin f, decimos que f es Turingcomputable Si un problema es Turing-computable, entonces es algortmicamente soluble A es un algoritmo sii el problema que A resuelve es resoluble mediante una Mquina de Turing Tesis de Turing: La clase de las funciones efectivamente computables (funciones algortmicas o algoritmos) puede identificarse con la clase de las funciones Turingcomputables
28
Lgica y Computacin
Autmatas y Computabilidad
Especificacin de Mquinas de Turing Las Mquinas de Turing se definen en trminos de quntuplas: <estado, entrada, salida, nuevo estado, movimiento> Ejemplo: Especificacin de una Mquina de Turing sumadora tal que: cada nmero se representa mediante n+1 1s los 0s actan como delimitadores los dos sumandos estn separados por un espacio en blanco (un 0) al final del proceso slo debe quedar el resultado escrito sobre la cinta, con la cabeza de I/O posicionada sobre la casilla ms a la izquierda de la parte no vaca de la cinta Especificacin en trminos de quntuplas: q110q2d q211q2d q201q3i q311q3i q300q4d q410q5d
29
Lgica y Computacin
Autmatas y Computabilidad
Especificacin de Mquinas de Turing (2) Especificacin de una Mquina de Turing que averigua si una secuencia cualquiera de 0s y 1s representada en su cinta es capica. Se trata de un autmata reconocedor Se supone que existe un tercer smbolo delimitador (*) Deber tener en cuenta si la secuencia tiene, o no, un nmero par de elementos Si la secuencia es capica, al final del proceso la cinta estar vaca Supongamos que la secuencia es par Especificaremos el autmata mediante un grafo: 11d 00d q2 11d 1*d q1 0*d 00d q3 11d 00d Qu habra que hacer para tener en cuenta, adems, el caso de las secuencias impares? **i q5 0*i q7 **d q6 00i **i q4 1*i 11i
30
Lgica y Computacin
Autmatas y Computabilidad
Mquina de Turing Universal Una Mquina de Turing Universal (U) es una Mquina de Turing tal que: Si, en t=0, representamos en su cinta: una Mquina de Turing concreta los datos de entrada a esa MT concreta Entonces, en algn t > 0, se detendr con la solucin de la MT concreta representada en la cinta La Mquina de Turing Universal imita o reproduce el comportamiento de cualquier Mquina de Turing concreta Existen mtodos de codificacin (Por ej., la numeracin de Gdel) que permiten representar una Mquina de Turing mediante: Una codificacin de las quntuplas que definen su funcionamiento Una codificacin del estado en que se encuentra la Mquina de Turing La Mquina de Turing Universal: Lee el estado en que se encuentra la MTuring concreta. Mientras no es el estado final: Lee el smbolo siguiente de la cadena de entrada Identifica cul es la instruccin aplicable de la MTuring concreta Aplica la instruccin: Cambiando el estado de la MTuring concreta Generando la salida correspondiente Si lee el estado final, termina.
31
Lgica y Computacin
Autmatas y Computabilidad
32
Lgica y Computacin
Autmatas y Computabilidad
De esta forma: Estar en un estado qi significa ahora Se va a ejecutar la instruccin nmero n Pasar al estado qj significa ahora Ir a la instruccin nmero m y ejecutarla Puesto que la nocin de estado interno desaparece, habr que tener en cuenta que, ahora, tendremos que formular todos los autmatas aceptadores como transductores o generadores (es decir, la respuesta tendr que reconocerse dejando escrito algo sobre la cinta). (Ejemplos ms adelante)
33
Lgica y Computacin
Autmatas y Computabilidad
34
Lgica y Computacin
Autmatas y Computabilidad
35
Lgica y Computacin
Autmatas y Computabilidad
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
36
Lgica y Computacin
Autmatas y Computabilidad
SUBRUTINAS
La instruccin IR A n (salto incondicional a la lnea n) es, en realidad, una abreviatura de la siguiente secuencia de instrucciones: SI s = * IR A n SI s = 0 IR A n SI s = 1 IR A n Para simplificar la programacin, los fragmentos de programa que se repiten, realizando funciones idnticas, se pueden formular como un programa independiente, al que se llama subprograma o subrutina del programa principal. Las subrutinas se llaman o invocan por su nombre cada vez que es necesario. Ejemplo: en el programa anterior, las lneas siguientes se repiten, con idntica estructura y funcin (Ir hasta el extremo derecho): De la lnea 5 a la 9 De la lnea 11 a la 15 Escribiremos un nuevo programa: IR-EXTREMO-DERECHA 1. MOVERD 2. SI s = * IR A 14 3. IR A 11 4. MOVERI 5. LEER(s) Cuando en el programa principal lleguemos al punto en que se requiere realizar estas acciones, simplemente crearemos una nueva lnea en la que introduciremos el nombre de la subrutina. La ejecucin de esta lnea equivale a la ejecucin de toda la subrutina Al final de la ejecucin, se retorna a la lnea siguiente del programa que ha invocado a la subrutina. Podemos suponer que el anidamiento de programas y subrutinas es ilimitado
37
Lgica y Computacin
Autmatas y Computabilidad
38
Lgica y Computacin
Autmatas y Computabilidad
MAQUINAS DE REGISTROS Una computadora digital (ordenador) es la realizacin fsica de una Mquina de Turing (universal) Un modelo ms realista se obtiene si sustituimos la cinta potencialmente infinita de la MT por un nmero finito pero potencialmente ilimitado de registros Cada registro es un espacio de memoria que supondremos que puede almacenar: Un nmero de cualquier longitud y tipo, o Una cadena alfanumrica cualquiera, codificada numricamente Cada registro lleva asociado unvocamente un nmero, la direccin de ese registro Un conjunto de registros, que comienza en una direccin dada, almacenar representaciones numricas de las instrucciones del programa Otro conjunto de registros almacena los datos sobre los que debe operar el programa En general, las instrucciones se reformularn para que todas ellas se ajusten al formato: NmeroInstruccin Operando [Operador1, ..., Operadorn] Los operandos identifican la instruccin que se va a ejecutar Los operadores son direcciones de registros en los que se guardan datos sobre los que se va a ejecutar la operacin. En los lenguajes de programacin se representan mediante variables.
39
Lgica y Computacin
Autmatas y Computabilidad
40
Lgica y Computacin
Autmatas y Computabilidad
Programas Una macroinstruccin es una unidad lingstica que hace referencia, en ltimo trmino, a una operacin definible en trminos de Mquina de Turing Un lenguaje de programacin es un conjunto de macroinstrucciones que puede ser utilizado para definir operaciones o procesos complejos Hay lenguajes de programacin de distintos niveles, de forma que los lenguajes de un nivel utilizan explcita o implcitamente macroinstrucciones del nivel inferior Un programa es una secuencia finita de instrucciones tal que cada una de ellas es: Una macroinstruccin de algn lenguaje de programacin Un subprograma (rutina o subrutina) formulada en ese mismo lenguaje Una computadora digital (ordenador) es la realizacin fsica de una Mquina de Turing (universal) que ejecuta procesos definidos usualmente mediante programas escritos en lenguajes de programacin de diferentes niveles Cuando un ordenador ejecuta un programa, la mquina universal (que puede ejecutar cualquier programa o proceso computable) se convierte en una mquina virtual concreta. Los ordenadores son relevantes en la Ciencia Cognitiva como herramienta de modelizacin (formulacin de hiptesis) y contrastacin.
41
Lgica y Computacin
Autmatas y Computabilidad
ESPECIFICACIN DE ALGORITMOS Para especificar la solucin de un problema algortmico: 1. Especificar el rango, posiblemente infinito, de todas las entradas admisibles 2. Especificar la salida deseada como una funcin de las entradas Para especificar la salida como una funcin de las entradas, construir una secuencia finita de instrucciones tal que: Cada instruccin prescribe que ha de realizarse una accin determinada Cada instruccin ha de estar descrita mediante un lenguaje no ambigo La secuencia ha de tener un punto de terminacin
42
Lgica y Computacin
Autmatas y Computabilidad
LENGUAJE DE ESPECIFICACIN DE ALGORITMOS El lenguaje de especificacin de algoritmos utilizado en la mquina de Turing y en la mquina de registros es de bajo nivel: est muy alejado del lenguaje natural En la modelizacin computacional suelen definirse los algoritmos mediante un lenguaje o pseudocdigo de alto nivel Los lenguajes de alto nivel poseen, en general, cuatro tipos de instrucciones: Declarativas: definen variables y sus tipos, clases de objetos, funciones: entero(X) es_una_lista(Y) Expresiones: combinaciones de constantes, variables, operadores y funciones de acuerdo con reglas sintcticas precisas. (5*3)+(3+2) (X+Y)/25 raiz2(X) Ejecutables: Definen operaciones, flujos, asignaciones, llamadas a funciones o subrutinas: sea A = 0 si (expresin) entonces (instruccin) escribir Z ejecutar prog1
Comentarios
Departamento de Lgica - Facultad de Psicologa - UCM
43
Lgica y Computacin
Autmatas y Computabilidad
LENGUAJE DE ESPECIFICACIN DE ALGORITMOS (2) Para la construccin de la secuencia de instrucciones pueden utilizarse los siguientes recursos: Secuenciacin directa Instrucciones condicionales: si (Condicin), entonces (Instrucciones) Iteracin limitada: hacer (Instrucciones) n veces Iteracin condicional: mientras (Condicin) hacer (Instrucciones) hacer (Instrucciones) mientras (Condicin) hasta que (Condicin) hacer (Instrucciones) hacer (Instrucciones) hasta que (Condicin) Una Condicin es una expresin o una secuencia de expresiones unidas por operadores booleanos (Y, O, NO) Las Instrucciones a ejecutar son, o bien una sola, o bien una secuencia de instrucciones. Las iteraciones o bucles son necesarios para especificar procesos de longitud no prefijada
44
Lgica y Computacin
Autmatas y Computabilidad
INSTRUCCIONES CONDICIONALES Pueden tener una de las siguientes formas: 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 Si la Condicin no se cumple, el control pasa a la instruccin siguiente al finsi salir: Sale de una cadena de condicionales Una cadena de condicionales puede expresarse ms cmodamente como un conjunto de casos: seleccionar (Expresin) caso Valor1: Instruccin o secuencia de instrucciones caso Valorn: Instruccin o secuencia de instrucciones enotrocaso: Instruccin o secuencia de instrucciones finseleccionar
45
Lgica y Computacin
Autmatas y Computabilidad
ITERACIN LIMITADA hacer I desde J hasta K [intervalo L] ] Instruccin1 ... Instruccinn finhacer Da sucesivos valores a la variable I, empezando por el valor J El intervalo L fija la distancia entre los sucesivos valores de I (Si no se seala, por defecto es 1) La iteracin termina cuando I alcanza el valor K Adems: salir: Sale de un bucle continuar: Va a la siguiente iteracin de un bucle ITERACION INFINITA hacer Instruccin1 ... Instruccinn finhacer Alguna de las instrucciones ha de ser salir
46
Lgica y Computacin
Autmatas y Computabilidad
ITERACIN CONDICIONAL (1) La iteracin se ejecuta mientras que la expresin Condicin es verdadera: mientras Condicin [hacer] ] Instruccin1 ... Instruccinn finmientras En la siguiente forma, se ejecuta al menos la primera vez: hacer Instruccin1 ... Instruccinn mientras Condicin finhacer
47
Lgica y Computacin
Autmatas y Computabilidad
ITERACIN CONDICIONAL (2) La iteracin se ejecuta mientras que la expresin Condicin es falsa: hasta que Condicin [hacer] ] Instruccin1 ... Instruccinn finhasta En la siguiente forma, se ejecuta al menos la primera vez: hacer Instruccin1 ... Instruccinn hasta que Condicin finhacer
48
Lgica y Computacin
Autmatas y Computabilidad
SALTO INCONDICIONAL Salto incondicional: ira Etiqueta Etiqueta es una etiqueta o nmero de instruccin del programa Hay que evitar su uso siempre que sea posible: Dificulta la inteligibilidad de los algoritmos Puede introducir ambigedades
49
Lgica y Computacin
Autmatas y Computabilidad
MANEJO DE SUBRUTINAS El uso de subrutinas estructura y clarifica los algoritmos Hay que utilizar subrutinas siempre que sea posible identificar la utilizacin reiterada del mismo procedimiento Llamada a una subrutina o procedimiento: ejecutar Proc[(Parmetros,Valor)] [ ] Proc es el nombre del procedimiento o subrutina que hay que ejecutar La llamada puede llevar parmetros, mediante los cuales el procedimiento llamado recibe valores Si el procedimiento llamado es una subrutina, su ltima instruccin es: regresar[(Valor)] [ ] Si la subrutina debe devolver algn valor, llevar ese valor como argumento.
50
Lgica y Computacin
Autmatas y Computabilidad
RECURSION Recursin: Capacidad de un procedimiento para llamarse a s mismo Reduccin del problema inicial a subproblemas ms sencillos En cada nueva invocacin del procedimiento, los datos de entrada cambian Al final del procedimiento, las soluciones parciales, obtenidas en cada ciclo del bucle recursivo se unen para formar la solucin final Ejemplo:Torres de Hanoi: Proc: Mover N de X a Y, utilizando Z 1. si N = 1, entonces escribir Mover X a Y. Terminar. 2. enotrocaso: 2.1. ejecutar Mover N-1 de X a Z, utilizando Y 2.2. escribir Mover X a Y 2.3. ejecutar Mover N-1 de Z a Y, utilizando X Instrucciones de entrada/salida: leer Item escribir Item Item puede ser una variable, una constante, un elemento de una estructura de datos,
51
Lgica y Computacin
Autmatas y Computabilidad
TIPOS DE DATOS Los datos que manipulan los algoritmos son constantes de varios tipos: 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. Normalmente, los algoritmos se refieren a los datos mediante variables Cada variable denota un dato de un tipo dado Las variables pueden interpretarse como posiciones de memoria que almacenan datos El dato al que cada variable se refiere es su valor Las instrucciones de asignacin dan un valor explcito a una variable: sea X = 34 sea Y = Expresin
52
Lgica y Computacin
Autmatas y Computabilidad
CODIFICACION DE INFORMACIN ALFANUMERICA En el nivel fsico, los ordenadores slo manipulan cadenas de smbolos 0,1. La interpretacin de estas cadenas como nmeros codificados en notacin binaria resulta inmediata. Utilizando un esquema de codificacin adecuado, tambin podemos interpretar estas cadenas de smbolos como: caracteres alfabticos (letras) caracteres numricos (cifras) otros smbolos especiales Uno de los esquemas de codificacin ms utilizados es el sistema de codificacin ASCII. Permite representar 128 (27) caracteres con siete bits (secuencias de 7 smbolos {0,1}) Por ejemplo: A 4 ( f < ... 0001100 0100011 1000010 0110110 1100011
53
Lgica y Computacin
Autmatas y Computabilidad
EXPRESIONES Las constantes y variables se combinan con operadores para formar expresiones Las expresiones pueden ser: Aritmticas: Operadores aritmricos: +, -,*, /, //, mod, exp, . . Sus argumentos son constantes numricas, u otras expresiones o funciones aritmticas Pueden utilizarse para definir funciones aritmticas: funcin f(X,Y,Z) = (Y*(X exp 2))+Z o para asignar un valor a una variable: sea X = Y/ (Z mod X1) Lgicas: Operadores: = , >, < , >= , =< , < >, Sus argumentos son constantes numricas o alfanumricas, variables, o expresiones o funciones aritmticas, Toman como valor Verdadero o Falso Se utilizan para expresar Condiciones Adems, suele contarse con funciones predefinidas: De manipulacin de cadenas (concatenacin, ) De conversin de tipo
54
Lgica y Computacin
Autmatas y Computabilidad
ESTRUCTURAS DE DATOS Un conjunto de datos se almacena formando una estructura Diversas estructuras de datos: Vectores o listas Matrices o tablas Colas Pilas Arboles
En algunos casos, es preciso declarar previamente el tamao de la estructura de datos Cada elemento de una estructura se identifica mediante: El nombre de la estructura Uno o ms ndices que indican la posicin del elemento en la estructura La estructura se puede recorrer iterativamente mediante bucles definidos sobre sus ndices Cada elemento identificado se puede manejar en una expresin como si fuera una variable
55
Lgica y Computacin
Autmatas y Computabilidad
VECTORES Y LISTAS Un vector es un conjunto finito de datos, dispuestos de forma que: Hay un elemento, vect(1), que es el primero del vector vect. Cada elemento, vect(n), del vector, excepto el primero, va precedido por otro elemento, vect(n-1), del vector El ndice o puntero del vector es el nmero que aparece como argumento del vector En general, los vectores requieren una declaracin explcita de tamao (longitud) Ejemplo: Procedimiento que incrementa en 1 cada nmero del vector vect = [5,43,57,58,34,27,15,2,1,1] ] procedimiento Incrementar: dimension vect(10) hacer I desde 1 hasta 10 sea vect(I) = vect(I) + 1 finhacer fin Incrementar OJO!: Las siguientes expresiones no indican lo mismo: I+1 vect(I+1) vect(I)+1
56
Lgica y Computacin
Autmatas y Computabilidad
LISTAS Una lista es un vector que no requiere declaracin explcita de tamao Las listas se estructuran en [Cabeza|RestoLista] ] Cabeza contiene el primer elemento de la lista RestoLista es una lista El ltimo elemento de una lista es la lista vaca Los elementos de una lista se suelen manejar con procedimientos recursivos Ejemplo1: Procedimiento recursivo (Prolog) para comprobar la pertenencia de un elemento E a una lista L: procedimiento Pertenece Pertenece(E,[E|_]). [ ] Pertenece(E,[_|L1]) si Pertenece(E,L1). [ ] fin Pertenece Ejemplo2: Procedimiento recursivo que incrementa en 1 cada elemento de la lista L = [5,43,57,58,34,27,15,2,1,1] ] procedimiento Incrementa(ListaEntrada,ListaSalida) Incrementa([],[]). [ [ Incrementa([Elemento|Lista],[Elemento1|Lista1]) si [ ][ ] sea Elemento1 = Elemento+1, Incrementa(Lista,Lista1). fin Incrementa
57
Lgica y Computacin
Autmatas y Computabilidad
MATRICES O TABLAS Vectores y listas son matrices unidimensionales Los datos pueden situarse en una tabla o matriz bidimensional: pepe 25 1 logica aprobado ana 18 3 percepcion notable juan 22 4 memoria suspenso La posicin de cada dato en una fila o columna dada indica de qu tipo de dato se trata El tamao de una tabla o matriz bidimensional se declara dando el nmero de filas y el nmero de columnas: dimension datos(50,5) Para manejar los datos de una matriz nos referimos a cada elemento mediante sus ndices de posicin: Ejemplos: datos(50,1) :el nombre de pepe datos(2,5) : la calificacin de ana Podemos utilizar matrices n-dimensionales (n>2)
58
Lgica y Computacin
Autmatas y Computabilidad
COLAS Y PILAS Una cola es una lista tal que: Todo elemento aadido a ella se coloca como ltimo elemento de la lista Para extraer un elemento de ella, han de extraerse previamente los elementos que le anteceden FIFO: First Input, First Output Una pila es una lista tal que: Todo elemento aadido a ella (push) se coloca como primer elemento de la lista Para extraer un elemento de ella (pop), han de extraerse previamente los elementos que le anteceden LIFO: Last Input, First Output Se utilizan para almacenar los datos obtenidos en los sucesivos ciclos de los procedimientos recursivos
59
Lgica y Computacin
Autmatas y Computabilidad
ARBOLES Un rbol es un conjunto de datos ordenados jerrquicamente Cada dato es un nodo del rbol Cada nodo del rbol est unido al menos a otro nodo mediante una rama Cada nodo puede ser: El nodo raz Un nodo terminal Un nodo no-terminal Cada rama une el nodo raz, o un nodo no terminal, con otro nodo, su sucesor inmediato Si B es el sucesor inmediato de A, A es el antecesor inmediato de B Un camino en el rbol es una lista de nodos del rbol tal que: El primer nodo de la lista es el nodo raz El ltimo nodo de la lista es un nodo terminal Cada nodo de la lista, excepto el primero, es el sucesor inmediato del nodo que le precede en la lista Un rbol binario es un rbol en el que cada nodo tiene como mximo dos sucesores
60
Lgica y Computacin
Autmatas y Computabilidad
EJEMPLO Procedimiento que genera un rbol binario a partir de una lista de nmeros L, tal que, para cada nodo A: Todos los nodos de su subrbol izquierdo son menores que A Todos los nodos de su subrbol derecho son mayores que A procedimiento CreaArbol: sea A (el primer nmero de la lista L) el nodo raiz hacer sea B el siguiente elemento de la lista: sea C el nodo raz hacer si B es menor que C, entonces: sea D el sucesor izquierdo de C si D es vaco, entonces B es el nuevo sucesor izquierdo de C. Salir enotrocaso, sea C = D finsi enotrocaso (B es mayor que C): sea D el sucesor derecho de C si D es vaco, entonces B es el nuevo sucesor derecho de C. Salir enotrocaso, sea C = D finsi finsi finhacer hastaque B = fin de la Lista finhacer fin CreaArbol
61
Lgica y Computacin
Autmatas y Computabilidad
COMPUTABILIDAD Y DECIDIBILIDAD
62
Lgica y Computacin
Autmatas y Computabilidad
Decidibilidad Tesis de Turing: Un problema es decidible sii es computable (por una MTuring). En otro caso, es indecidible La cuestin de si, para una clase dada de problemas, existe un algoritmo o procedimiento efectivo que los resuelva, se denomina problema de decisin Decimos que un problema de decisin es indecidible si podemos demostrar que no existe ningn algoritmo que pueda responder a todas las preguntas que el problema pueda plantear Ejemplos: El problema Hay enteros tales que satisfagan la ecuacin 3x + 6y = 151? (que tiene una respuesta negativa) no es un problema de decisin. El problema Hay enteros x, y tales que se cumple la ecuacin ax + by = c?, s es un problema de decisin: Para cada asignacin de valores a los parmetros a, b, c, hay un problema distinto Respuesta: s, si el mximo comn divisor (mcd) de a y b divide a c Tenemos el algoritmo de Euclides para hallar el mcd de dos nmeros
63
Lgica y Computacin
Autmatas y Computabilidad
El Problema de la Parada Consideremos el siguiente problema de decisin: Existe algn procedimiento efectivo (algoritmo o mquina de Turing) que nos permita determinar, para cualquier MT concreta representada en la cinta de la MTuring universal, si la MTuring concreta llegar a detenerse despus de iniciar su computacin? Este problema tiene una respuesta negativa, por lo que se trata de un problema indecidible Este resultado es equivalente a los obtenidos respecto a la Lgica Clsica de Primer Orden: Gdel (1931): Cualquier sistema formal cuyo lenguaje sea lo suficientemente rico para describir las operaciones y relaciones bsicas de la aritmtica elemental es incompleto La Aritmtica de Peano, formalizada con la Lgica de Primer Orden con Identidad (y smbolos funcionales) y con axiomas especficos, es incompleta. El conjunto de los enunciados verdaderos de la aritmtica no es decidible Church (1936): La Lgica de Primer Orden es indecidible Consecuencias para las Ciencias Cognitivas: Existen problemas elementales no decidibles Pero los sujetos solucionan problemas muy complejos Luego se requieren recursos de modelizacin no algortmicos (heursticos)
64
Lgica y Computacin
Autmatas y Computabilidad
COMPLEJIDAD COMPUTACIONAL
65
Lgica y Computacin
Autmatas y Computabilidad
Complejidad No basta con el criterio de decidibilidad para establecer si una modelizacin cognitiva puede ser estrctamente algortmica Los recursos fsicos utilizados en la solucin de problemas (espacio y tiempo) son limitados Ni siquiera todos los problemas decidibles son manejables Podemos medir la complejidad de los algoritmos para estimar su manejabilidad Los parmetros de medida son: Tiempo de computacin requerido (nmero de operaciones primitivas) Espacio de memoria requerido: Tamao del input Tamao del output Espacio requerido para almacenar resultados intermedias La complejidad vendr dada por el tiempo requerido para resolver el problema, dado como una funcin del tamao del problema Tipos de complejidad: Polinmica (problemas buenos) Exponencial (problemas malos)
66
Lgica y Computacin
Autmatas y Computabilidad
Anlisis de la Complejidad de un Algoritmo Ejemplo: Complejidad de la Multiplicacin Sean dos enteros: n, que tiene i dgitos m, que tiene k dgitos Para obtener m x n tenemos que obtener i filas que se sumarn En cada fila tendremos aprox. j ( k) operaciones Luego para obtener las i filas necesitamos, aproxim. , i x j operaciones Finalmente, para sumar las filas necesitamos, aprox., i x j sumas de dos nmeros de un dgito cada uno Luego el tiempo de ejecucin de toda la operacin ser proporcional a la ejecucin de todas las operaciones El nmero de operaciones es 2(i x j) Luego la complejidad ser proporcional al factor variable de esta expresin: i x j
67
Lgica y Computacin
Autmatas y Computabilidad
La Medida de la Complejidad Algortmica Lo que resulta importante a la hora de medir la complejidad es su tasa funcional de crecimiento: Esa tasa puede ser: Lineal (buena) Cuadrtica (admisible en algunos casos) Exponencial (no manejable) ... Los factores constantes se omiten Denotacin de la complejidad: O(f(n)) (La complejidad es proporcional a fn o de orden f(n)) Clasificacin de los problemas respecto asu complejidad: Problemas P: tienen algoritmos eficientes, con crecimiento polinmico Problemas NP: Es indemostrable que sean problemas P Tienen un algoritmo eficiente (polinmico) de verificacin de la solucin Problemas NP-completos: No son problemas P ni NP Si uno de la clase se solucionara mediante un algoritmo polinmico, todos tendran un algoritmo de ese tipo Problemas intrnsecamente difciles: No son problemas P ni NP, y tienen algoritmos con tiempo exponencial
68
Lgica y Computacin
Autmatas y Computabilidad
Los Algoritmos Bsicos y su Complejidad 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: Ordenacin por Burbuja: Nmero de comparaciones: 1/2 n (n-1) Mejor caso: 0 Peor caso: 3/2 (n2-n) Caso medio: 3/4 (n2-n) Complejidad: O(n2)
...
69