Fundamentos de Algoritmos y Computabilidad

Preview:

Citation preview

Oscar Bedoya

oscarbed@eisc.univalle.edu.co

Fundamentos de Algoritmos y Computabilidad

* Contexto histórico* Principales actores

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

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)

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)

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

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

1900David Hilbert

Problemas de Hilbert

1928David Hilbert

Entscheidungsproblem

Introducción

1931Kurt Gödel

Teorema de la incompletez

Kurt Gödel

• Mostró que existen sentencias o proposiciones indecidibles

(1906 - 1978)

Introducción

1934Kurt Gödel

Tesis de Gödel

Introducción

1931Kurt Gödel

Funciones recursivas primitivas

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(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

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

1936Alonzo Church

Tesis de Church

1936Alan Turing

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

1936Alonzo Church

Tesis de Church

1936Alan Turing

Máquina de TuringTesis 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

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

• 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

Introducción

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

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

Introducción

- -

Cinta infinita

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

Máquina de Turing

Introducción

-

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

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

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

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

1937 & 1945Von 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

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

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

Máquina de Turing

Introducción

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

y debería rechazar• aabb• abbab• aaab

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

Máquina de Turing

Introducción

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

y debería rechazar• aabb• abbab• aaab

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

Máquina de Turing

Introducción

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

y debería rechazar• aabbccc• babcabc

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

Introducción

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

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 enumerables

Máquina de Turing

Sensibles al contexto

Autómata lineal acotado

Independientesdel contexto

Autómata de pila

Regulares Autómata finito

Introducción

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

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

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

Introducción

Recommended