Tema 1Preliminares: algoritmos, computabilidad,       corrección y complejidad        Ciencias de la Computación 2012-13  ...
Contenido•   Un problema•   Modelos de Computación•   Tesis de Church-Turing•   ¿Cómo resolvemos el problema?•   Guía de v...
Un problema en el         trabajo• Sr. Pérez, deseo que me programe un  verificador automático de programas
Escenario 1: El sr. Pérez noha estudiado computabilidad•   ...(Dos meses de sufrimiento después)    •   Jefe, a mí no me s...
Escenario 2: El sr. Pérez ha estudiado computabilidad•   (Unas horas después):    •   Jefe, he estudiado el problema y NO ...
Cuestiones•    ¿Existen problemas que no se pueden    resolver mediante programas?•    ¿Qué tipo de análisis ha realizado ...
Primera cuestión•   Existen problemas que NO    se pueden resolver    algorítmicamente•   Demostrado por A. Turing    en 1...
La máquina enigma
Apuntes de Turing
La máquina diseñada por Turing (Bletchley Park)
Modelo formal de computación:          la máquina de Turing
El Entscheidungsproblem             Encontrar un             algoritmo general que             decida si una fórmula      ...
Test de Turing
Segunda Cuestión• El análisis que ha realizado  el Sr. Pérez está basado en  el argumento diagonal• Diseñado por Georg  Ca...
Tercera Cuestión•   Tesis de Church-Turing      •   Otra versión:    (versión informal):                                  ...
¿Cómo demostrar que un problema es indecidible?• Demostramos, en primer lugar, que  el problema no se puede resolver  en u...
Guía de viaje por la            computabilidad                              El lenguaje GOTOPRELIMINARES                  ...
El lenguaje elegido:                GOTOModelo de computación basado en                        lenguaje       Lenguaje de ...
Sintaxis de GOTO
No es tan “simple”: Programa Universal en GOTO• Entrada: datos  +Programa• Salida: Resultado  de aplicar el  programa al d...
Definiciones por                recursión•   Necesitamos utilizar    mecanismos de    definición por    recursión•   Potente...
Haskell, Lisp...
NO es un juguetematemático
El problema de la parada•   Entrada: Un programa        •   Se prueba usando el    y un dato de entrada            método ...
Teorema de Rice• Método para detectar la no computabilidad  de ciertos problemas. Por ejemplo lo  aplicaremos para demostr...
Aplicaciones (I):imposibilidad de la corrección parcial
Aplicaciones (II): imposibilidad de la verificaciónautomatizada de la equivalencia
El teorema de Recursión • Los procedimientos   efectivos sobre programas   Programa (codificado)   son computables• Una con...
Verificación de programasSemánticaAxiomática
Complejidad        Reducciones
Jerarquía de complejidad
Tema 1
Upcoming SlideShare
Loading in …5
×

Tema 1

465 views

Published on

Como viene siendo habitual, cada vez que comienzo un curso computación (computabilidad) dejo aquí las transparencias de la introducción.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Tema 1

  1. 1. Tema 1Preliminares: 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. 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. 3. Un problema en el trabajo• Sr. Pérez, deseo que me programe un verificador automático de programas
  4. 4. Escenario 1: El sr. Pérez noha estudiado computabilidad• ...(Dos meses de sufrimiento después) • Jefe, a mí no me sale • Bueno, Sr. Pérez, no se preocupe
  5. 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. 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. 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
  8. 8. La máquina enigma
  9. 9. Apuntes de Turing
  10. 10. La máquina diseñada por Turing (Bletchley Park)
  11. 11. Modelo formal de computación: la máquina de Turing
  12. 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
  13. 13. Test de Turing
  14. 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. 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. 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. 17. Guía de viaje por la computabilidad El lenguaje GOTOPRELIMINARES 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. 18. El lenguaje elegido: GOTOModelo de computación basado en lenguaje Lenguaje de programación muy simple Usa variables como registros Es computacionalmente completo
  19. 19. Sintaxis de GOTO
  20. 20. No es tan “simple”: Programa Universal en GOTO• Entrada: datos +Programa• Salida: Resultado de aplicar el programa al dato• ¡ES UN ORDENADOR!
  21. 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?
  22. 22. Haskell, Lisp...
  23. 23. NO es un juguetematemático
  24. 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. 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
  26. 26. Aplicaciones (I):imposibilidad de la corrección parcial
  27. 27. Aplicaciones (II): imposibilidad de la verificaciónautomatizada de la equivalencia
  28. 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
  29. 29. Verificación de programasSemánticaAxiomática
  30. 30. Complejidad Reducciones
  31. 31. Jerarquía de complejidad

×