Sunteți pe pagina 1din 65

Fundamentos de Algoritmos y

Computabilidad

Oscar Bedoya
oscarbed@eisc.univalle.edu.co
* Contexto histórico
* Principales actores
Introducción

1900 1928 1931


David Hilbert David Hilbert Kurt Gödel
Problemas de Hilbert Entscheidungsproblem Teorema de la incompletez
Introducción

David Hilbert
• Presentó en 1900 ante el ICM
(International Congress of
Mathematicians) un grupo de 23
problemas por resolver

(1862 - 1943)
Introducción

David Hilbert
• Una ecuación diofántica es una ecuación cuyas soluciones son
números enteros,
x+y-5=0 es diofántica y tiene como soluciones
(1,4) (2,3) (3,2) (4,1) (-1,6), …

• 10º problema. Dada una ecuación diofántica de n variables,


diseñar un procedimiento por medio del cual se determinen los
valores que resuelven la ecuación
Introducción

David Hilbert
• Considere la siguiente ecuación diofántica
p(x,y,z)=6x3yz2+3xy2-x3-10
que tiene como raíz (5,3,0). Encuentre un procedimiento para
determinar las raíces en cualquier ecuación diofántica
Introducción

Procedimiento de Euclides para calcular mcd(a,b)


r0a r1b
i1
mientras ri 0 haga
ri+1ri-1 mod ri
ii+1
mcd(a,b)=ri-1

Euclides (300 a.c)


Introducción

1900 1928 1931


David Hilbert David Hilbert Kurt Gödel
Problemas de Hilbert Entscheidungsproblem Teorema de la incompletez
Introducción

David Hilbert
En 1928 el problema de la resolubilidad de las ecuaciones diofánticas
se generalizó al problema de encontrar un método de decisión que
permitiera encontrar las operaciones para solucionar cualquier fórmula
matemática
• Se popularizó como el problema de la decisión o Entscheidungsproblem
Introducción

1900 1928 1931


David Hilbert David Hilbert Kurt Gödel
Problemas de Hilbert Entscheidungsproblem Teorema de la incompletez
Introducción

Kurt Gödel
• Mostró que existen sentencias o
proposiciones indecidibles

(1906 - 1978)
Introducción

1931 1934
Kurt Gödel Kurt Gödel
Funciones recursivas primitivas Tesis de Gödel
Introducción

Kurt Gödel
• En la demostración del teorema de la incompletez utilizó una
definición, las funciones recursivas primitivas. Éstas son funciones
matemáticas en las que se utilizan los operadores:
- S(x), sucesor de x
- Pi(x1,x2,…,xn) dada una n-tupla, proyectar el i-ésimo elemento
- Composición, composición de funciones
Introducción

Kurt Gödel
• La función suma(x,y) que se puede definir de forma recursiva así:
suma(0,x)=x
suma(n,x)=suma(n-1,x)+1
se puede convertir a la siguiente función recursiva primitiva:
suma(0,x)=P1(x)
suma(S(n),x)=S( P1(suma(n,x)) )
Introducción

Kurt Gödel
• La función suma(x,y) que se puede definir de forma recursiva así:
suma(0,x)=x suma(0,x)=x
suma(n,x)=suma(n-1,x)+1 suma(n+1,x)=suma(n,x)+1
se puede convertir a la siguiente función recursiva primitiva:
suma(0,x)=P1(x)
suma(S(n),x)=S( P1(suma(n,x)) )
Introducción

Tesis de Gödel
“Las funciones recursivas primitivas tienen una propiedad
importante, dado un conjunto de valores como argumento, el valor
de la salida puede ser calculado por un procedimiento finito”
Introducción

Tesis de Gödel
“Las funciones recursivas primitivas tienen una propiedad
importante, dado un conjunto de valores como argumento, el valor
de la salida puede ser calculado por un procedimiento finito”

¿Cualquier función recursiva se puede expresar de forma primitiva?


Introducción

Kurt Gödel
• Hay funciones recursivas que no son recursivas primitivas, por
ejemplo, la función de Ackerman:
n+1, m=0
A(m,n)= A(m-1,1), m>0 y n=0
A(m-1, A(m,n-1)), m>0 y n>0
Introducción

Kurt Gödel
• Hay funciones recursivas que no son recursivas primitivas, por
ejemplo, la función de Ackerman:
n+1, m=0
A(m,n)= A(m-1,1), m>0 y n=0
A(m-1, A(m,n-1)), m>0 y n>0

• ¿Qué se quería?
Dada una función recursiva, tener un procedimiento por medio del
cual se pudiesen calcular sus valores
Introducción

• En 1934, Gödel ofreció una conferencia en Princeton acerca de


funciones recursivas generales que finalmente serían llamadas
funciones recursivas. A la conferencia asistieron, entre otras
personas, Kleene y Church
Introducción

¿Qué faltaba?
Alguien que tuviera una idea para demostrar que las funciones
recursivas pueden ser calculadas por medio de un procedimiento
finito
Introducción

1936 1936
Alonzo Church Alan Turing
Tesis de Church Máquinas de Turing
Introducción

Alonzo Church
• Creador del cálculo Lambda en 1936
junto a Stephen Kleene
• Tesis de Church
Existe un procedimiento que permite
calcular los valores para cualquier función
recursiva
Las funciones computables son aquellas
cuyos valores son calculados por una
función recursiva

(1903 - 1995)
Introducción

• La tesis de Church fue rechazada por Gödel


• Funciones computables, aquellas funciones cuyos valores se pueden
calcular mediante un procedimiento finito
• En 1936, Princeton contaba con el grupo de investigadores más
poderoso compuesto por Gödel, Church, Kleene y Rosser, trabajando
en cuáles eran las funciones computables
Introducción

1936 1936
Alonzo Church Alan Turing
Tesis de Church Máquina de Turing
Tesis de Turing
Introducción

• Estando en la Universidad de Cambridge, Alan Turing leyó sobre las


funciones recursivas y planteó la máquina de Turing y lo que resulta
más importante aun, la tesis de Turing
Introducción

Alan Turing
• Matemático, científico de la
informática, criptógrafo y filósofo
inglés
• Planteó el test de Turing
• Creador de la máquina de Turing
• Durante la Segunda Guerra Mundial,
trabajó en romper los códigos nazis,
particularmente los de la máquina
Enigma

(1912 - 1954)
Introducción
Introducción

Alan Turing
• La idea de la máquina surgió cuando
terminó de correr una maratón

(1912 - 1954)
Introducción
Introducción

• Inspirado en una máquina de escribir diseñó una máquina conocida


como automatic-machine ( -machine) en la cual:
- Se tiene un cinta infinita
- La cinta está dividida en cuadros
- En cada cuadro se puede colocar un símbolo
- Los símbolos se leen/escriben por una única cabeza. La
cabeza se puede desplazar a través de la cinta, un cuadro a la
vez
- La máquina puede cambiar internamente su estado
Introducción

http://www.turing.org.uk/turing/scrapbook/tmjava.html
Introducción
Introducción
Introducción

• La máquina intentaba simular cómo el ser humano resuelve un


problema con lápiz y papel. En su artículo, se utiliza el término
computador, pero haciendo referencia a una persona que computa o
calcula
Introducción

Máquina de Turing
Cinta
infinita
- -
Introducción

Máquina de Turing

El bombillo se enciende si el número a la izquierda del símbolo –


divide al que está a su derecha
Introducción

Máquina de Turing

El bombillo se enciende cuando termina de sumar los números


separados por el símbolo –
Introducción

Máquina de Turing

La máquina de Turing es capaz de


seguir un procedimiento y aplicarlo
sobre los datos en la cinta
Introducción

Tesis de Turing
• Una función es computable, si y solo si, es computable por una
máquina de Turing, es decir, por un procedimiento mecánico finito
Introducción

Máquina de Turing

Según la tesis de Turing, si no se puede diseñar una máquina de


Turing para calcular el valor de una función, entonces la función no
es computable. No existe un algoritmo
Introducción

1937 & 1945


Von Neumann
Introducción

• Las ideas tenidas en cuenta para la máquina de Turing fueron la base


para la arquitectura de Von Neumann
• Se tiene un memoria representada por la cinta
• Se tiene una unidad de procesamiento que sería la cabeza de
lectura/escritura y sus estados internos

• La arquitectura fue ideada mientras Turing fue a la segunda guerra


mundial (1939-1945)
Introducción

Máquina de Turing

- -

Además de poder realizar cálculos, es decir, seguir algoritmos, una


máquina de Turing se puede ver como una máquina reconocedora de
palabras
Introducción

Máquina de Turing

Suponga que se tiene una máquina de Turing en la cual se enciende


el bombillo si en la cinta de entrada la palabra empieza y termina en
a
Introducción

Máquina de Turing
La máquina debería aceptar
• abbaba
• aaa
• ababbba

y debería rechazar
• aabb
• abbab
• aaab
Introducción

Máquina de Turing

Suponga que se tiene una máquina de Turing en la cual se enciende


el bombillo si en la cinta de entrada la cantidad de b’s es el doble de
la de a’s
Introducción

Máquina de Turing
La máquina debería aceptar
• abbabb
• bab
• ababbb

y debería rechazar
• aabb
• abbab
• aaab
Introducción

Máquina de Turing

Suponga que se tiene una máquina de Turing en la cual se enciende


el bombillo si en la cinta de entrada la cantidad de a’s es igual a la
de b’s y c’s
Introducción

Máquina de Turing
La máquina debería aceptar
• aabbcc
• cababc

y debería rechazar
• aabbccc
• babcabc
Introducción

Modelos propuestos
• Autómata finito
• Autómata de pila
• Autómata acotado
• Máquina de Turing
Introducción

Modelos propuestos
• Autómata finito
• Autómata de pila
• Autómata acotado
• Máquina de Turing

La capacidad de cómputo de un modelo está dado


por las palabras que se pueden reconocer
Introducción

Tipo de
máquina
Máquina de
Turing
Autómata
lineal acotado
Autómata de
pila
Autómata
finito
Introducción

Lenguajes Tipo de
máquina
Recursivamente Máquina de
enumerables Turing
Sensibles al Autómata
contexto lineal acotado
Independientes Autómata de
del contexto pila
Regulares Autómata
finito
Introducción

Lenguajes Tipo de Normas para


máquina la gramática
Recursivamente Máquina de No restringida
enumerables Turing
Sensibles al Autómata  ,| | | |
contexto lineal acotado
Independientes Autómata de A
del contexto pila
Regulares Autómata AaB
finito Aa
Introducción

Tipo Lenguajes Tipo de Normas para


máquina la gramática
0 Recursivamente Máquina de No restringida
enumerables Turing
1 Sensibles al Autómata  ,| | | |
contexto lineal acotado
2 Independientes Autómata de A
del contexto pila
3 Regulares Autómata AaB
finito Aa
Introducción

Otros modelos de computación


• Se han propuesto otros modelos pero ninguno ha
mostrado mayor capacidad de cómputo que una máquina de
Turing
Introducción

Tesis de Church-Turing
• Si dado un problema, no se puede construir una
máquina de Turing, entonces no es computable, decidible
o resoluble
Introducción

Tesis de Church-Turing
• Si dado un problema, no se puede construir una
máquina de Turing, entonces no es computable, decidible
o resoluble
• ¿Qué pasa con los cómputos que no se pueden llevar a
cabo en una máquina de Turing?
Introducción

Problema de la parada
• Saber si cuando se ejecute un programa para una
entrada x, el programa terminará o no
Introducción

Problema de la parada
• Saber si cuando se ejecute un programa para una
entrada x, el programa terminará o no
• No se puede construir una máquina de Turing que
resuelva el problema, por lo tanto, no es resoluble
Introducción

Clasificación de problemas

Problemas decidibles o resolubles

Problemas no decidibles o irresolubles

S-ar putea să vă placă și