65
Oscar Bedoya [email protected] Fundamentos de Algoritmos y Computabilidad

Fundamentos de Algoritmos y Computabilidad

Embed Size (px)

Citation preview

Page 1: Fundamentos de Algoritmos y Computabilidad

Oscar Bedoya

[email protected]

Fundamentos de Algoritmos y Computabilidad

Page 2: Fundamentos de Algoritmos y Computabilidad

* Contexto histórico* Principales actores

Page 3: Fundamentos de Algoritmos y Computabilidad

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

Page 4: Fundamentos de Algoritmos y Computabilidad

David Hilbert

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

(1862 - 1943)

Introducción

Page 5: Fundamentos de Algoritmos y Computabilidad
Page 6: Fundamentos de Algoritmos y Computabilidad
Page 7: Fundamentos de Algoritmos y Computabilidad

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

Page 8: Fundamentos de Algoritmos y Computabilidad

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

Page 9: Fundamentos de Algoritmos y Computabilidad

Procedimiento de Euclides para calcular mcd(a,b)

r0a r1b

i1

mientras ri 0 haga

ri+1ri-1 mod ri

ii+1

mcd(a,b)=ri-1

Introducción

Euclides (300 a.c)

Page 10: Fundamentos de Algoritmos y Computabilidad

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

Page 11: Fundamentos de Algoritmos y Computabilidad

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

Page 12: Fundamentos de Algoritmos y Computabilidad

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

Page 13: Fundamentos de Algoritmos y Computabilidad

Kurt Gödel

• Mostró que existen sentencias o proposiciones indecidibles

(1906 - 1978)

Introducción

Page 14: Fundamentos de Algoritmos y Computabilidad

1934Kurt Gödel

Tesis de Gödel

Introducción

1931Kurt Gödel

Funciones recursivas primitivas

Page 15: Fundamentos de Algoritmos y Computabilidad

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

Page 16: Fundamentos de Algoritmos y Computabilidad

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

Page 17: Fundamentos de Algoritmos y Computabilidad

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

suma(0,x)=x

suma(n+1,x)=suma(n,x)+1

Page 18: Fundamentos de Algoritmos y Computabilidad

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

Page 19: Fundamentos de Algoritmos y Computabilidad

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

Page 20: Fundamentos de Algoritmos y Computabilidad

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

Page 21: Fundamentos de Algoritmos y Computabilidad

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

Page 22: Fundamentos de Algoritmos y Computabilidad

• 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

Page 23: Fundamentos de Algoritmos y Computabilidad

¿Qué faltaba?

Alguien que tuviera una idea para demostrar que las funciones recursivas pueden ser calculadas por medio de un procedimiento finito

Introducción

Page 24: Fundamentos de Algoritmos y Computabilidad

1936Alonzo Church

Tesis de Church

1936Alan Turing

Máquinas de Turing

Introducción

Page 25: Fundamentos de Algoritmos y Computabilidad

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

Page 26: Fundamentos de Algoritmos y Computabilidad

• 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

Page 27: Fundamentos de Algoritmos y Computabilidad

1936Alonzo Church

Tesis de Church

1936Alan Turing

Máquina de TuringTesis de Turing

Introducción

Page 28: Fundamentos de Algoritmos y Computabilidad

• 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

Page 29: Fundamentos de Algoritmos y Computabilidad

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)

Page 30: Fundamentos de Algoritmos y Computabilidad

Introducción

Page 31: Fundamentos de Algoritmos y Computabilidad

Introducción

Alan Turing

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

(1912 - 1954)

Page 32: Fundamentos de Algoritmos y Computabilidad

Introducción

Page 33: Fundamentos de Algoritmos y Computabilidad

• 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

Page 34: Fundamentos de Algoritmos y Computabilidad

Introducción

http://www.turing.org.uk/turing/scrapbook/tmjava.html

Page 35: Fundamentos de Algoritmos y Computabilidad

Introducción

Page 36: Fundamentos de Algoritmos y Computabilidad

Introducción

Page 37: Fundamentos de Algoritmos y Computabilidad

• 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

Page 38: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

- -

Cinta infinita

Page 39: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

-

El bombillo se enciende si el número a la izquierda del símbolo –divide al que está a su derecha

Page 40: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

-

El bombillo se enciende cuando termina de sumar los números separados por el símbolo –

Page 41: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

-

La máquina de Turing es capaz de seguir un procedimiento y aplicarlo

sobre los datos en la cinta

Page 42: Fundamentos de Algoritmos y Computabilidad

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

Page 43: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

-

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

Page 44: Fundamentos de Algoritmos y Computabilidad

1937 & 1945Von Neumann

Introducción

Page 45: Fundamentos de Algoritmos y Computabilidad
Page 46: Fundamentos de Algoritmos y Computabilidad

• 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

Page 47: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

- -

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

Page 48: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

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

Page 49: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

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

y debería rechazar• aabb• abbab• aaab

Page 50: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

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

Page 51: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

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

y debería rechazar• aabb• abbab• aaab

Page 52: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

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

Page 53: Fundamentos de Algoritmos y Computabilidad

Máquina de Turing

Introducción

La máquina debería aceptar• aabbcc• cababc

y debería rechazar• aabbccc• babcabc

Page 54: Fundamentos de Algoritmos y Computabilidad

Modelos propuestos

• Autómata finito

• Autómata de pila

• Autómata acotado

• Máquina de Turing

Introducción

Page 55: Fundamentos de Algoritmos y Computabilidad

Modelos propuestos

• Autómata finito

• Autómata de pila

• Autómata acotado

• Máquina de Turing

Introducción

La capacidad de cómputo de un modelo está dado por las palabras que se pueden reconocer

Page 56: Fundamentos de Algoritmos y Computabilidad

Tipo de máquina

Máquina de Turing

Autómata lineal acotado

Autómata de pila

Autómata finito

Introducción

Page 57: Fundamentos de Algoritmos y Computabilidad

Lenguajes Tipo de máquina

Recursivamente enumerables

Máquina de Turing

Sensibles al contexto

Autómata lineal acotado

Independientesdel contexto

Autómata de pila

Regulares Autómata finito

Introducción

Page 58: Fundamentos de Algoritmos y Computabilidad

Lenguajes Tipo de máquina

Normas para la gramática

Recursivamente enumerables

Máquina de Turing

No restringida

Sensibles al contexto

Autómata lineal acotado

, | | | |

Independientesdel contexto

Autómata de pila

A

Regulares Autómata finito

AaBAa

Introducción

Page 59: Fundamentos de Algoritmos y Computabilidad

Tipo Lenguajes Tipo de máquina

Normas para la gramática

0 Recursivamente enumerables

Máquina de Turing

No restringida

1 Sensibles al contexto

Autómata lineal acotado

, | | | |

2 Independientesdel contexto

Autómata de pila

A

3 Regulares Autómata finito

AaBAa

Introducción

Page 60: Fundamentos de Algoritmos y Computabilidad

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

Page 61: Fundamentos de Algoritmos y Computabilidad

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

Page 62: Fundamentos de Algoritmos y Computabilidad

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

Page 63: Fundamentos de Algoritmos y Computabilidad

Problema de la parada

• Saber si cuando se ejecute un programa para una entrada x, el programa terminará o no

Introducción

Page 64: Fundamentos de Algoritmos y Computabilidad

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

Page 65: Fundamentos de Algoritmos y Computabilidad

Clasificación de problemas

Problemas decidibles o resolubles

Problemas no decidibles o irresolubles

Introducción