You are on page 1of 69

Lgica y Computacin

Autmatas y Computabilidad

PRIMERA PARTE

AUTOMATAS Y COMPUTABILIDAD

Departamento de Lgica - Facultad de Psicologa - UCM

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)

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

Lgica y Computacin

Autmatas y Computabilidad

TEORA DE AUTMATAS

Departamento de Lgica - Facultad de Psicologa - UCM

Lgica y Computacin

Autmatas y Computabilidad

AUTOMATAS

Un autmata es: Una mquina (mecanismo) de naturaleza formal


(Slo existe como un mecanismo matemtico)

que acepta una informacin de entrada (input), la procesa,


(La somete a transformaciones simblicas que pueden adoptar la forma de un clculo o computacin) y genera un resultado o salida (output). Definir un autmata equivaldr a definir el proceso de transformacin del input en un output, lo que equivale a definir una funcin cuyos argumentos son el input y cuyo valor es el output

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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)

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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]

funcin de transicin de estados :

: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)

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Normalmente, utilizaremos el lenguaje de grafos.

Departamento de Lgica - Facultad de Psicologa - UCM

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.

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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=

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

25

Lgica y Computacin

Autmatas y Computabilidad

Mquinas de Turing I/O I d i m b

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

Departamento de Lgica - Facultad de Psicologa - UCM

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>

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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.

Departamento de Lgica - Facultad de Psicologa - UCM

31

Lgica y Computacin

Autmatas y Computabilidad

ESPECIFICACION DE MAQUINAS DE TURING MEDIANTE PROGRAMAS


El lenguaje de quintuplas nos da, para cada MT: Una especificacin de la funcin de transicin de estados Una especificacin de la funcin de salida Podemos hacer ms explcita esa especificacin transformando el lenguaje de quntuplas en un programa, es decir, en una secuencia de instrucciones de actuacin sobre la cinta. Construiremos el programa como una secuencia de instrucciones formulada en trminos de un lenguaje de programacin L0 Las instrucciones de nuestro lenguaje programacin L0 tienen que ser suficientes para reproducir las instrucciones formuladas en el lenguaje de quntuplas. En general, cada instruccin de este lenguaje (qi,sl,se,qj,m) equivale a afirmar que: Si se est en qi, y se lee sl, entonces se realiza la siguiente secuencia de instrucciones: Escribir se Hacer el movimiento m Pasar al estado qj

Departamento de Lgica - Facultad de Psicologa - UCM

32

Lgica y Computacin

Autmatas y Computabilidad

MAQUINAS DE TURING COMO PROGRAMAS


Eliminaremos toda mencin del estado interno del autmata finito de la siguiente forma: Asignaremos a cada instruccin del programa un nmero de lnea Reformularemos la anterior expresin condicional de la siguiente forma: n n+1 n+2 . . . m m+1 m+2 Leer sl Si sl tiene el valor v, ir a la lnea nmero m

Escribir se Hacer el movimiento m Ir a la lnea nmero j (j ser = n si no hay cambio de estado)

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)

Departamento de Lgica - Facultad de Psicologa - UCM

33

Lgica y Computacin

Autmatas y Computabilidad

MAQUINAS DE TURING COMO PROGRAMAS


Supondremos que: La primera instruccin que se ejecuta es la primera instruccin del programa Si no se cumple la condicin, se ejecuta la siguiente instruccin n+1 Todas las instrucciones se ejecutan en la secuencia en que aparecen en el programa, excepto si hay saltos (por una instruccin condicional o por una instruccin de salto explcito (como la de la lnea m+2) El programa contiene una lnea de terminacin. La sintaxis de nuestro lenguaje de programacin ser la siguiente: LEER(s): Leer el smbolo s: s toma el valor del smbolo escrito en la casilla que se lee ESCRIBIR(s): Escribir el smbolo s: escribe el smbolo s en la casilla en la que la MT est colocada MOVERD: Moverse a la siguiente casilla a la derecha MOVERI: Moverse a la siguiente casilla a la izquierda SI s=v IR A n: Si el smbolo s tiene el valor v, ir a la instruccin nmero n. En otro caso, pasar a la instruccin siguiente IR A n: Saltar a la lnea n PARAR: Lnea de terminacin del programa

Equivalencia de las dos especificaciones alternativas de Mquinas


de Turing: Cada instruccin bsica de L0 es definible en trminos de una secuencia de quntuplas Si P es un programa que especifica una MT, entonces existe una MT especificada en trminos de quntuplas que ejecuta P

Departamento de Lgica - Facultad de Psicologa - UCM

34

Lgica y Computacin

Autmatas y Computabilidad

EJEMPLOS DE ESPECIFICACION DE MTs MEDIANTE PROGRAMAS


Suponemos, como siempre, que al principio del proceso, la MT est posicionada sobre la casilla ms a la izquierda de la parte no vaca de la cinta Ejemplo1: Sea S = {1,0,*}. Dada una secuencia cualquiera (no vaca) de smbolos {0,1}, delimitada por el smbolo * , especificar una MT generadora que cambie cada 0 por 1, y a la inversa: 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 Llamamos bucle una subsecuencia de instrucciones que se ejecutan reiteradamente En el programa del Ejemplo 1 tenemos dos bucles: De 1 a 5 De 1 a 8 Decimos que estos dos bucles estn anidados: el primero se encuentra dentro del segundo Ejemplo 2: Sea S = {1,0,*}. Dada una secuencia cualquiera (no vaca) de smbolos {0,1}, delimitada por el smbolo * , especificar una MT reconocedora que averige si la secuencia es un palndrome o no. Supondremos que la secuencia tiene un nmero par de smbolos. Si lo es, al final del proceso, la cinta contendr un 1, y si no lo es, contendr un 0:

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

37

Lgica y Computacin

Autmatas y Computabilidad

MAQUINA 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 Para construir una Mquina de Turing Universal necesitamos: Una codificacin o representacin del programa que define la Mquina de Turing concreta Una codificacin o representacin de los datos de entrada de la Mquina de Turing concreta Un algoritmo, especificado como un programa, que, para cada instruccin del programa de la MT concreta, la ejecute sobre los datos correspondientes Una codificacin del nmero de instruccin que hay que ejecutar, y un contador que vaya actualizando este nmero. De esta forma representaremos el cambio de estados de la MT concreta La Mquina de Turing Universal: Lee en el contador el nmero de la siguiente instruccin. Mientras no es la ltima: 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

Departamento de Lgica - Facultad de Psicologa - UCM

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.

Departamento de Lgica - Facultad de Psicologa - UCM

39

Lgica y Computacin

Autmatas y Computabilidad

DE LOS AUTOMATAS A LOS ORDENADORES


Un ordenador o computadora digital es la realizacin fsica de una Mquina de Registros -en ltimo trmino, de una Mquina de Turing- Universal. Cuando un ordenador ejecuta un programa, la mquina universal (que puede ejecutar cualquier programa o proceso computable) se convierte en una mquina virtual concreta. Cada instruccin de los lenguajes de programacin de alto nivel que se utilizan para programar ordenadores, es, en realidad, una macroinstruccin , es decir, una expresin que resume todo un conjunto ms o menos complejo de operaciones elementales

Departamento de Lgica - Facultad de Psicologa - UCM

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.

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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.

Departamento de Lgica - Facultad de Psicologa - UCM

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,

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Con cadenas de 8 smbolos (ASCII extendido) permite representar 256 caracteres

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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)

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

61

Lgica y Computacin

Autmatas y Computabilidad

COMPUTABILIDAD Y DECIDIBILIDAD

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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)

Departamento de Lgica - Facultad de Psicologa - UCM

64

Lgica y Computacin

Autmatas y Computabilidad

COMPLEJIDAD COMPUTACIONAL

Departamento de Lgica - Facultad de Psicologa - UCM

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)

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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

Departamento de Lgica - Facultad de Psicologa - UCM

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)

...

Departamento de Lgica - Facultad de Psicologa - UCM

69

You might also like