Download - Fundamentos de Algoritmos y Computabilidad
![Page 2: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/2.jpg)
* Contexto histórico* Principales actores
![Page 3: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/3.jpg)
1900David Hilbert
Problemas de Hilbert
1928David Hilbert
Entscheidungsproblem
Introducción
1931Kurt Gödel
Teorema de la incompletez
![Page 4: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/5.jpg)
![Page 6: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/6.jpg)
![Page 7: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/10.jpg)
1900David Hilbert
Problemas de Hilbert
1928David Hilbert
Entscheidungsproblem
Introducción
1931Kurt Gödel
Teorema de la incompletez
![Page 11: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/12.jpg)
1900David Hilbert
Problemas de Hilbert
1928David Hilbert
Entscheidungsproblem
Introducción
1931Kurt Gödel
Teorema de la incompletez
![Page 13: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/13.jpg)
Kurt Gödel
• Mostró que existen sentencias o proposiciones indecidibles
(1906 - 1978)
Introducción
![Page 14: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/14.jpg)
1934Kurt Gödel
Tesis de Gödel
Introducción
1931Kurt Gödel
Funciones recursivas primitivas
![Page 15: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/22.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/23.jpg)
¿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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/24.jpg)
1936Alonzo Church
Tesis de Church
1936Alan Turing
Máquinas de Turing
Introducción
![Page 25: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/26.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/27.jpg)
1936Alonzo Church
Tesis de Church
1936Alan Turing
Máquina de TuringTesis de Turing
Introducción
![Page 28: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/28.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/30.jpg)
Introducción
![Page 31: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/32.jpg)
Introducción
![Page 33: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/33.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/34.jpg)
Introducción
http://www.turing.org.uk/turing/scrapbook/tmjava.html
![Page 35: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/35.jpg)
Introducción
![Page 36: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/36.jpg)
Introducción
![Page 37: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/37.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/38.jpg)
Máquina de Turing
Introducción
- -
Cinta infinita
![Page 39: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/44.jpg)
1937 & 1945Von Neumann
Introducción
![Page 45: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/45.jpg)
![Page 46: Fundamentos de Algoritmos y Computabilidad](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/46.jpg)
• 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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/48.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/50.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/51.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/52.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/53.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/54.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/55.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/56.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/57.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/58.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/59.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/60.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/61.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/62.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/63.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/64.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052902/5571f96749795991698f7f35/html5/thumbnails/65.jpg)
Clasificación de problemas
Problemas decidibles o resolubles
Problemas no decidibles o irresolubles
Introducción