Está en la página 1de 69

Lgica y Computacin Autmatas y Computabilidad

PRIMERA PARTE

AUTOMATAS

COMPUTABILIDAD

Departamento de Lgica - Facultad de Psicologa - UCM 1


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 2


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 3


Lgica y Computacin Autmatas y Computabilidad

TEORA DE AUTMATAS

Departamento de Lgica - Facultad de Psicologa - UCM 4


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 5


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 6


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 7


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 8


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 9


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 Autmata
entrada 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 Entradas en t Estados en t+1

q1 i1 q1
... ... ...
qm ik 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 qR

*
0

q0 1 0

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
q0 q1 q2 qA

1
1
*
*
*

qR

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 q 1 qA

1
1 1

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:

q1
*1

q0 1* q2

**
q=
11

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 Estado Salida

i1 q1 o1
... ... ...
in qn 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 0/1
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 q1/1

T. Por cada autmata de Mealy, existe otro de Moore que


ejecuta la misma tarea, y viceversa.

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 01/0

11/0

q1 q2
01/1 10/0
00/1

10/1 11/1

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 Turing-
computable
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 Turing-
computables

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 **i
q2 q4
11d 1*i
1*d **d 11i
q1 q7 q6
0*d 00i
00d 0*i
q3 q5
11d **i

00d

Qu habra que hacer para tener en cuenta, adems,


el caso de las secuencias impares?

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 Leer sl
n+1 Si sl tiene el valor v, ir a la lnea nmero m
n+2
.
.
.
m Escribir se
m+1 Hacer el movimiento m
m+2 Ir a la lnea nmero j (j ser = n si no hay cambio de
estado)

De esta forma:

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 0001100
4 0100011
( 1000010
f 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

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

También podría gustarte