Introducción a la teoría de la computabilidad
Lógica y Computabilidad 2009/10Joaquín Borrego Díaz
Joaquín Borrego DíazCoordinador del programa de doctoradoDepartamento de Ciencias de la Computación e IAUniversidad de Sevilla
sábado 21 de noviembre de 2009
Contenido
• Un problema
• Modelos de Computación
• Tesis de Church-Turing
• ¿Cómo resolvemos el problema?
• Guía de viaje por la T. Computabilidad
sábado 21 de noviembre de 2009
Un problema en el trabajo
• Sr. Pérez, deseo que me programe un verificador automático de programas
sábado 21 de noviembre de 2009
Escenario 1: El sr. Pérez no ha estudiado computabilidad
• ...(Dos meses de sufrimiento después)
• Jefe, a mí no me sale
• Bueno, Sr. Pérez, no se preocupe
sábado 21 de noviembre de 2009
Escenario 2: El sr. Pérez ha estudiado computabilidad
• (Unas horas después):
• Jefe, he estudiado el problema y NO se puede resolver con un programa de ningún tipo
• Excelente análisis, Sr. Pérez
sábado 21 de noviembre de 2009
Cuestiones
• ¿Existen problemas que no se pueden resolver mediante programas?
• ¿Qué tipo de análisis ha realizado en Sr. Pérez?
• ¿Cómo puede afirmar que no se puede resolver en ningún tipo de lenguaje de programación, modelo de computación etc.?
sábado 21 de noviembre de 2009
Primera cuestión• Existen problemas que NO
se pueden resolver algorítmicamente
• Demostrado por A. Turing en 1936
• Matemático
• Rompió el código enigma
• Máquinas de Turing
• Test de Turing
sábado 21 de noviembre de 2009
La máquina enigma
sábado 21 de noviembre de 2009
Apuntes de Turing
sábado 21 de noviembre de 2009
La máquina diseñada por Turing (Bletchley Park)
sábado 21 de noviembre de 2009
Modelo formal de computación: la máquina de Turing
sábado 21 de noviembre de 2009
Segunda Cuestión
• El análisis que ha realizado el Sr. Pérez está basado en el argumento diagonal
• Diseñado por Georg Cantor en 1834
• para demostrar que el cardinal de los reales es mayor que el de los naturales
sábado 21 de noviembre de 2009
Tercera Cuestión• Tesis de Church-Turing
(versión informal):
• Cualesquiera dos modelos de computación resuelven los mismos problemas
• Se puede considerar un “axioma” en Informática
• Es cierto en todos los modelos creados
• Otra versión:
• Todo algoritmo o procedimiento efectivo es Turing-computable
sábado 21 de noviembre de 2009
¿Cómo demostrar que un problema es indecidible?
• Demostramos, en primer lugar, que el problema no se puede resolver en un modelo de computación concreto
• Entonces, por la tesis de Church-Turing, no es resoluble en ningún modelo
sábado 21 de noviembre de 2009
Guía de viaje por la computabilidad
El lenguaje GOTO
Definiciones por recursión
Codificación de programas
Programa Universal
El problema de la parada
El Teorema de Rice
Matemáticas
Computabilidad
sábado 21 de noviembre de 2009
El lenguaje elegido: GOTO
Lenguaje de programación muy simple
Usa variables como registros
Es computacionalmente completo
Modelo de computación basado en lenguaje
sábado 21 de noviembre de 2009
Sintaxis de GOTO
sábado 21 de noviembre de 2009
Programa Universal en GOTO
• Entrada: datos +Programa
• Salida: Resultado de aplicar el programa al dato
• ¡ES UN ORDENADOR!
sábado 21 de noviembre de 2009
Definiciones por recursión
• Necesitamos utilizar mecanismos de definición por recursión
• Potente herramienta de programación
sábado 21 de noviembre de 2009
El problema de la parada• Entrada: Un programa y
un dato de entrada
• Salida:
• 1 (sí) si el programa para sobre ese dato
• 0 (no) si no para
• Se prueba usando el método diagonal (usando el programa universal)
sábado 21 de noviembre de 2009
Teorema de Rice
• Método para detectar la no computabilidad de ciertos problemas. Por ejemplo lo aplicaremos para demostrar la indecidibilidad de:
• Equivalencia entre programas
• Reconocer los programas que siempre paran
• Clases de complejidad algorítmica
sábado 21 de noviembre de 2009
Aplicaciones (I): imposibilidad de la corrección parcial
sábado 21 de noviembre de 2009
Aplicaciones (II):imposibilidad de la verificación
automatizada de la equivalencia
sábado 21 de noviembre de 2009