Fundamentos de Algoritmos y Computabilidad
-
Upload
juan-pablo-herran -
Category
Documents
-
view
197 -
download
0
Transcript of 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