32
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

Tema 1

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Tema 1

Tema 1Preliminares: algoritmos, computabilidad,

corrección y complejidad

Ciencias de la Computación 2012-13Grado en MatemáticasJoaquín Borrego Díaz

Joaquín Borrego DíazDepartamento de Ciencias de la Computación e IAUniversidad de Sevilla

Page 2: Tema 1

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

Page 3: Tema 1

Un problema en el trabajo

• Sr. Pérez, deseo que me programe un verificador automático de programas

Page 4: Tema 1

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

Page 5: Tema 1

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

Page 6: Tema 1

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.?

Page 7: Tema 1

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

Page 8: Tema 1

La máquina enigma

Page 9: Tema 1

Apuntes de Turing

Page 10: Tema 1

La máquina diseñada por Turing (Bletchley Park)

Page 11: Tema 1

Modelo formal de computación: la máquina de Turing

Page 13: Tema 1

Test de Turing

Page 14: Tema 1

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

Page 15: Tema 1

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 Computación

• Es cierto en todos los modelos creados

• Otra versión:

• Todo algoritmo o procedimiento efectivo es Turing-computable

Page 16: Tema 1

¿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

Page 17: Tema 1

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

PRELIMINARES

Computabilidad

El Teorema de Recursión

Page 18: Tema 1

El lenguaje elegido: GOTO

Lenguaje de programación muy simple

Usa variables como registros

Es computacionalmente completo

Modelo de computación basado en lenguaje

Page 19: Tema 1

Sintaxis de GOTO

Page 20: Tema 1

No es tan “simple”:Programa Universal en GOTO

• Entrada: datos +Programa

• Salida: Resultado de aplicar el programa al dato

• ¡ES UN ORDENADOR!

Page 21: Tema 1

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?

Page 22: Tema 1

Haskell, Lisp...

Page 23: Tema 1

NO es un juguete

matemático

Page 24: Tema 1

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)

Page 25: Tema 1

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

Page 26: Tema 1

Aplicaciones (I): imposibilidad de la corrección parcial

Page 27: Tema 1

Aplicaciones (II):imposibilidad de la verificación

automatizada de la equivalencia

Page 28: Tema 1

El teorema de Recursión• Los procedimientos

efectivos sobre programas son computables

Procedimiento que usa programas para calcular

Programa (codificado)

• Una consecuencia: siempre existen virus autorreplicantes

Page 29: Tema 1

Verificación de programas

Semántica Axiomática

Page 30: Tema 1

Complejidad

Reducciones

Page 31: Tema 1

Jerarquía de complejidad

Page 32: Tema 1