El documento presenta una introducción a los conceptos fundamentales de la computabilidad y la complejidad computacional. Explica que existen problemas que no pueden resolverse mediante algoritmos, como demostraron Turing y Church, y que el Sr. Pérez ha reconocido que el problema de desarrollar un verificador automático de programas es indecidible aplicando el argumento diagonal de Cantor. Además, introduce conceptos clave como las máquinas de Turing, la tesis de Church-Turing y las limitaciones en la verificación y corrección de programas debido a los resultados
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
Algoritmos computabilidad y complejidad
1. Tema 1
Preliminares: algoritmos, computabilidad,
corrección y complejidad
Ciencias de la Computación 2012-13
Grado en Matemáticas
Joaquín Borrego Díaz
Joaquín Borrego Díaz
Departamento de Ciencias de la Computación e IA
Universidad de Sevilla
2. Contenido
• Un problema
• Modelos de Computación
• Tesis de Church-Turing
• ¿Cómo resolvemos el problema?
• Guía de viaje por la T. Computabilidad
• Verificación de programas
• Complejidad computacional
3. Un problema en el
trabajo
• Sr. Pérez, deseo que me programe un
verificador automático de programas
4. 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
5. 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
6. Cuestiones
• ¿Existen problemas que no se pueden
resolver mediante programas?
• ¿Qué tipo de análisis ha realizado el 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.?
7. 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
12. El Entscheidungsproblem
Encontrar un
algoritmo general que
decida si una fórmula
del cálculo de primer
orden es un teorema
En 1936, de manera
independiente, A. Church y
A. Turing demostraron
ambos que es imposible
escribir tal algoritmo
14. 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
15. Tercera Cuestión
• Tesis de Church-Turing • Otra versión:
(versión informal):
• Todo algoritmo o
• Cualesquiera dos procedimiento efectivo
modelos de es Turing-computable
computación resuelven
los mismos problemas
• Se puede considerar un
“axioma” en Computación
• Es cierto en todos los
modelos creados
16. ¿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
17. Guía de viaje por la
computabilidad
El lenguaje GOTO
PRELIMINARES
Definiciones por recursión
Programa Universal
Codificación de programas
El problema de la parada
El Teorema de Rice Computabilidad
El Teorema de
Recursión
18. El lenguaje elegido:
GOTO
Modelo de computación basado en
lenguaje
Lenguaje de programación
muy simple
Usa variables como registros
Es computacionalmente completo
20. No es tan “simple”:
Programa Universal en GOTO
• Entrada: datos
+Programa
• Salida: Resultado
de aplicar el
programa al dato
• ¡ES UN
ORDENADOR!
21. Definiciones por
recursión
• Necesitamos utilizar
mecanismos de
definición por
recursión
• Potente herramienta
de programación
• Cuestión: ¿Cuántas
construcciones
necesitamos para
caracterizar las funciones
computables?
24. El problema de la parada
• Entrada: Un programa • Se prueba usando el
y un dato de entrada método diagonal
(usando el programa
• Salida: universal)
• 1 (sí) si el programa
para sobre ese dato
• 0 (no) si no para
25. 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
28. El teorema de Recursión
• Los procedimientos
efectivos sobre programas Programa (codificado)
son computables
• Una consecuencia: Procedimiento que usa
programas para calcular
siempre existen
virus autorreplicantes