Sunteți pe pagina 1din 36

Tema 1

Preliminares: algoritmos, computabilidad,


correccin y complejidad
Ciencias de la Computacin 2014-15
Grado en Matemticas
Joaqun Borrego Daz
Joaqun Borrego Daz
Departamento de Ciencias de la Computacin e IA
Universidad de Sevilla

Contenido

Un problema
Modelos de Computacin
Tesis de Church-Turing
Cmo resolvemos el problema?
Gua de viaje por la T. Computabilidad
Verificacin de programas
Complejidad computacional

Un problema en el
trabajo

Sr. Prez, deseo que me programe un


verificador automtico de programas

Escenario 1: El sr. Prez no


ha estudiado computabilidad

...(Dos meses de sufrimiento despus)

Jefe, a m no me sale
Bueno, Sr. Prez, no se preocupe

Escenario 2: El sr. Prez ha


estudiado computabilidad

(Unas horas despus):

Jefe, he estudiado el problema y NO se puede


resolver con un programa de ningn tipo

Excelente anlisis, Sr. Prez

Existen problemas que no se pueden


resolver mediante programas?

Qu tipo de anlisis ha realizado el Sr.


Prez?

Cmo puede afirmar que no se puede


resolver en ningn tipo de lenguaje de
programacin, modelo de computacin
etc.?

Primera cuestin

Existen problemas que NO


se pueden resolver
algortmicamente

Demostrado por A. Turing


en 1936

Matemtico
Rompi el cdigo enigma
Mquinas de Turing
Test de Turing

La mquina enigma

Apuntes de Turing

La mquina diseada por


Turing (Bletchley Park)

Modelo formal de computacin:


la mquina de Turing

El Entscheidungsproblem
Encontrar un
algoritmo general que
decida si una frmula
del clculo de primer
orden es un teorema

En 1936, de manera
independiente, A. Church y
A. Turing demostraron
ambos que es imposible
escribir tal algoritmo

Test de Turing

Segunda Cuestin
El anlisis que ha realizado
el Sr. Prez est basado en
el argumento diagonal

Diseado por Georg


Cantor en 1834

para demostrar que el

cardinal de los reales es


mayor que el de los
naturales

Tercera Cuestin

Tesis de Church-Turing
(versin informal):

Cualesquiera dos
modelos de
computacin resuelven
los mismos problemas

Se puede considerar un
axioma en Computacin

Es cierto en todos los


modelos creados

Otra versin:

Todo algoritmo o
procedimiento efectivo
es Turing-computable

Cmo demostrar que un


problema es indecidible?
Demostramos, en primer lugar, que
el problema no se puede resolver
en un modelo de computacin
concreto

Entonces, por la tesis de ChurchTuring, no es resoluble en ningn


modelo

Los cuatro temas/herramientas


de la computabilidad

Modelos de computacin
Decidibilidad
Reducibilidad
Teorema de recursin

Gua de viaje por la


computabilidad
El lenguaje GOTO
PRELIMINARES

Definiciones por recursin


Programa Universal

Codificacin de programas

El Teorema de Rice

El Teorema de
Recursin

El problema de la parada

Computabilidad

El lenguaje elegido:
GOTO
Modelo de computacin basado en
lenguaje
Lenguaje de programacin
muy simple
Usa variables como registros
Es computacionalmente completo

Sintaxis de GOTO

No es tan simple:
Programa Universal en GOTO

Entrada: datos
+Programa

Salida: Resultado

de aplicar el
programa al dato

ES UN

ORDENADOR!

Una mquina universal real


Construida entre 1958
y 1960

Mquina de Turing con


16 rels

Tiene 4 estados y 2

smbolos y 3 cintas

Slo necesita 15 bits

para codificar un
programa que marca el
resultado de un
programa.

Definiciones por recursin

Necesitamos utilizar
mecanismos de
definicin por
recursin

Potente herramienta
de programacin

Cuestin: Cuntas
construcciones
necesitamos para
caracterizar las funciones
computables?

Haskell, Lisp...

NO es un
juguete
matemtico

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
mtodo diagonal
(usando el programa
universal)

Teorema de Rice
Mtodo 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 algortmica

Aplicaciones (I):
imposibilidad de la correccin parcial

Aplicaciones (II):
imposibilidad de la verificacin
automatizada de la equivalencia

El teorema de Recursin
Los procedimientos

efectivos sobre programas


son computables

Una consecuencia:

siempre existen
virus autorreplicantes

Programa (codificado)

Procedimiento que usa


programas para calcular

Verificacin de programas

Semntica
Axiomtica

Complejidad

Reducciones

Jerarqua de complejidad

Las tres races de la


teora de la computacin

Lo veremos en el curso

Otras aplicaciones

La Teora de la
Computabilidad resuelve
o est implicada en la
resolucin de varios
problemas de los
propuestos por Hilbert:

Consistencia de la
aritmtica

Decidibilidad de la
resolucin diofntica

...

S-ar putea să vă placă și