Complejidad Computacional
Unidad 1: Modelos de cálculo

Objetivos de la unidad

Se van a cubrir los temas siguientes:

La palabra "cálculo"

En latín:

¿Que podemos hacer con piedritas?

Se puede hacer operaciones simples: sumar, restar, comparar, etc.

Y operaciones más complicadas combinando operaciones básicas: multiplicar, etc.

Cálculo: series de operaciones que se realizan para obtener un resultado.

La palabra "compute" (inglés)

Computabilidad

¿Cuáles son las cosas que se pueden calcular?

"f es computable si existe un procedimiento efectivo p tal que p(x) = f(x) para toda x"

Un "procedimiento efectivo" es un cálculo que se puede hacer en el mundo real (con papel y lapizera).

¿Pero cómo hacemos explicito lo que es un procedimiento efectivo?

Buscando el modelo

¿Qué modelo podemos proponer para representar matemáticamente la noción de cálculos del mundo real?

¿Qué problemas podemos resolver?

¿Qué podemos conocer?

¿Qué es un problema?

Como problemas, consideramos funciones booleanas sobre un alfabeto binario:

f: {0, 1} *  ↦ {0, 1}

Queremos ser capaces de, dada cualquiera palabra x ∈ {0, 1} * , calcular si f(x) vale 1 o 0.

Es decir contestar por "si" o por "no" alguna pregunta f acerca de x.

Una palabra booleana parece simple pero puede representar muchas cosas: números, grafos, fórmulas, etc.

De esta forma podemos formular cualquier problema "si/no" acerca de objetos que se tienen una representación binaria.

Problemas: ejemplos

"¿x tiene una mayoria de 1?"

"¿x es de la forma {0^n, 1^n}?"

"¿x es representa una formula proposicional satisfacible?"

"¿x representa un grafo que se puede colorar con 3 colores?"

"¿x representa  < G, a, b >  con G un grafo y existe un camino entre los nodos a y b?"

Definiciones: lenguages y funciones

Modelos de computación simples

Ver Great Ideas in Theoretical Computer Science, Lecture 3, de Scott Aaronson (secciones 3 a 6).

Más poder para los automatas

Hay muchos lenguajes que parecen simples de decidir, pero los automatas no llegan, por ejemplo:

Restricciones de los automatas:

Relajando estas restricciones, vamos a considerar otro modelo de cálculo.

Máquina de Turing

Propuesta por Alan Turing en el 1936 bajo el nombre "computing machine", en su artículo "On Computable Numbers".

Características:

En casa paso de un cálculo, una máquina de Turing elije:

Lo hace en función de su estado actual y del símbolo que está leyendo.

Una Máquina de Turing es una lista de reglas de la forma siguiente:

Implica:

Generalizamos a máquinas que tienen más de una cinta (1 para el input, otras para cálculos intermedios).

Máquinas de Turing: definición formal

Tienen:

Separamos la cinta de input (en lectura sola) de las otras para poder medir la cantidad de memoria usada por la máquina.

Una MT es un tuple (k, Γ , Q, δ) con:

Configuraciones

Llamamos configuración de una máquina el estado activo junto al contenido de sus cintas y la posición de sus cabezales.

La configuración inicial con una entrada x ∈ {0, 1} *  es:

Corrida de una máquina de Turing

Una máquina corre aplicando pasos de acuerdo a su función de transición, a partir de una configuración inicial.

Dada x ∈ {0, 1} * , una corrida de una máquina M con entrada x puede:

MT que deciden un lenguaje

Una MT M computa una función f: {0, 1} *  ↦ {0, 1} si para toda x ∈ {0, 1} * , M(x) = f(x).

Una MT decide el lenguaje Lf si computa su función característica f.

Un lenguaje es decidible si existe una MT que lo decide.

Ejercicio: decidir si una palabra es capicúa.

Enunciar las reglas de una Máquina de Turing que detecta palabras capicúas. Es posible definirla con 2 cintas o 1 sola, pero es más simple con 2.

Ejercicio: máquina sin estado

Aún sin ningun estado interno y solo modificando la cinta de input, una Máquina de Turing puede decidir lenguajes que un automata no puede.

En el artículo "The uniform halting problem for generalized one state Turing machines" de Hermann, ver el ejemplo para el lenguaje AanbmB con n < m.

Desarrollarlo con el ejemplo AaabbbB.

Otra manera de verlo

Vimos las Máquinas de Turing como automatas con más capacidad.

Otra manera de verlo, es que son una abstraccion de una persona llevando a cabo un cálculo usando una hoja de papel.

Alan Turing procedió así:

Definiciones alternativas

En algunos lados, se define que una MT tiene una cinta de output, donde se escribe el resultado del cálculo, y que tiene un solo estado de detencion qhalt.

En el artículo de Turing ("On Computable Numbers"), las máquinas no se detienen y producen secuencias infinitas de dígitos de nombres reales.

Ejercicios

Demostrar:

Lenguajes reconocibles

Una MT M reconoce un lenguaje L si para toda x ∈ {0, 1} * , x ∈ L ssi M(x) = 1.

Reconocer vs decidir

Si M reconoce L, entonces:

Si M decide L, entonces:

Es decir M siempre se detiene, con cualquier entrada.

Tiempo de corrida de una MT

Una MT calcula f o decide Lf en tiempo T(n) si su corrida en cada entrada x necesita cómo máximo T(∣x∣) pasos.

Notación O: dadas funciones f, g: N ↦ N. Escribimos f ∈ O(g) si existen una constante c > R +  y un rango n ∈ N tales que para toda m > n, f(n) ≥ c. g(n).

Decimos que f es acotada por g (módulo un factor multiplicativo) a partir de un cierto rango (o en el infinito).

Observación acerca de los estados

En lugar de pensar el conjunto de estados de una máquina como uno solo, podemos decir que una máquine tiene más de un estado activo.

Es igual tener n estados activos, cada uno tomando valores en un conjunto Qi, que un solo estado activo tomando valores en el conjunto Q1 × Q2 × … × Qn.

Eso permite "almacenar" información (solo valores dentro de un conjunto fijo).

Substitución de MT: alfabeto y número de cintas

Para toda f: {0, 1} *  ↦ {0, 1} y T: N ↦ N constructible en tiempo, si f es computable por una MT M con k ≥ 2 cintas y un alfabeto Γ  en tiempo T(n), entonces es computable por:

  1. una MT Mʹ con alfabeto {0, 1, ▫,  ⊳ } en tiempo (2log2(∣Γ ∣) + 1)(T(n))
  2. una MT Mʺ con 1 cinta (que sirve de input y working) en tiempo O(T(n)2)

Demostración de la substitución 1

Se puede representar cualquier elemento de Γ  de forma binaria usando log2( ∣ Γ  ∣ ) bits (redondeado para arriba).

Para cada celda de M, hay log2( ∣ Γ  ∣ ) celdas en Mʹ.

Para simular un paso de M, Mʹ usa:

  1. log2( ∣ Γ  ∣ ) pasos para leer los bits que representan un símbolo de Γ  Mientra lee, usa sus estados para guardar los símbolos leídos.
  2. Según su función de transición (construida en función de la de M), calcula los símbolos que tiene que escribir y el nuevo estado de M y guarda esta información en sus estados.
  3. En log2( ∣ Γ  ∣ ) pasos escribe los bits de los símbolos nuevos en las cintas

Los estados de Mʹ tienen que almacenar: el estado de M, k símbolos de Γ , un contador de 1 a log2( ∣ Γ  ∣ ).

Demostración de la substitución 2

En Mʺ las celdas 1, k + 1, 2k + 1. . .  representan la primera cinta de M, las celdas 2, k + 2, 2k + 2, . . .  la segunda, etc.

Doblamos el tamaño del vocabulario de M, usando para cada símbolo a, su versión "marcada" â que representa la posición del cabezal.

Ejecución de Mʺ con entrada x:

  1. copiar x a la derecha con representación "intercalada" (O(n2) pasos)
  2. simular M paso por paso:
    1. leer la cinta de la izquierda a la derecha, guardando en sus estados qué símbolos son leidos por M
    2. decidir qué transición de M imitar
    3. volver al principio (después del input) de la cinta, modificándola como corresponde

M corre en T(n) pasos, entonces solo modifica celdas a una distancia de T(n) del principio de cada cinta. El recorrido hecho por Mʺ para cada paso de M dura 2T(n) pasos. Entonces Mʺ corre en tiempo O(T(n)2).

Ejercicio

Substitución de MT con cinta infinita en las dos direcciones, por una cinta infinita en una sola dirección.

Más resultados similares

Más resultados de cambio de tipo de MT con desaceleración polinomial:

Resolver problemas con dominios otros que palabras binarias

Ver slides 23 a 30.

Por el momento, no es necesario entrar en los detalles de codificacion/representacion.

Idea: como entrada de una TM se puede representar

Dado un entero/grafo/automata/MT x, escribimos  < x >  su representación como palabra binaria.

Máquinas de Turing como palabras

¿Qué información es requerida para describir una TM?

Por ejemplo dada una TM M =  < 2, Γ , Q, δ > , podemos armar una palabra  < k, Γ , Q, δ >  con  < δ >  siendo el grafo de δ representado como una lista:
 < q0, s0, s0, qn, sw, zi, zw > ,  < . . .  > ,  < . . .  > , . . .  (con zi, zw ∈ {←,  = , →}).

Consecuencia: podemos establecer una relación uno-a-uno m de los enteros naturales a las máquinas de Turing.

Consideremos la representación binaria del entero natural n. Si representa una Máquina de Turing Mn decimos que m(n) = Mn, sino m(n) = X , con X una maquina de Turing arbitraria que entra en un bucle infinito con todo input.

Mala noticia

cardinalidad de todas las máquinas de Turing < cardinalidad de todos los lenguajes

¿Porqué?

  1. Cardinalidad de las MT = Cardinalidad de los enteros
  2. Cardinalidad de todos los lenguajes = Cardinalidad de los reales

  3. se demuestra con un argumento de diagonalisación de Cantor.

Las máquinas de Turing no alcanzan para decidir todos los lenguajes.

Maquina de Turing Universal

Representando MT como palabras, podemos disenar MT que toman descripciones de otras MT como entrada y hacen cosas divertidas.

En su articulo de 1936, justo después de presentar sus Máquinas, Alan Turing describe una máquina universal.

Una máquina U es universal si para cualquiera máquina M y palabra x ∈ {0, 1} * , U( < M, x > ) = M(x).

Existe una máquina de Turing universal.

Consecuencia de la existencia de una MTU

Si una máquina es universal, puede leer la descripcion de otra máquina y "ejecutarla" con una palabra de entrada.

Sin máquina universal, tendríamos que construir (físicamente) una máquina por tarea.

Con máquinas universales, tenemos software (máquinas simuladas) corriendo arriba de hardware (máquinas universales).

Ejercicio: construcción de una MTU

Existe una máquina U universal con dos cintas

Construir una MTU U, capaz de simular cualquier MT M con k cintas.

Requiere: lemma k cintas trabajo a 1 cinta trabajo.

¿Cúales son las fases principales de la ejecución de MTU?

¿Cómo simular un paso de M?

¿En cúanto tiempo corre U( < M, x > ) con respeto a M(x)?

Problemas indecidibles

Hemos observado que por una diferencia de cardinalidades, hay lenguajes (de hecho, la gran mayoría) que no son decidibles.

Ahora que sabemos representar MT como palabras vamos a ver lenguajes indecidibles particulares que involucran MT.

Las demostraciones de indecidibilidad van a involucrar MTU.

Indecibilidad de la aceptación por TM

Indecibilidad de AccMT

AccTM = { < M, x >  ∣  M es una MT y acepta x}

¿Qué pasó?

Dibujar una tabla con las MT etiquetando cada línea, y las palabras representando las MT etiquetando cada columna.

La diagonal central representa el resultado de M( < M > ) para toda M.

D está construida para ser distinta de esa diagonal, entonces D no puede aparecer como etiqueta de una linea en esa tabla.

Contradiccion dado que supusimos que la tabla incluía a todas las MT.

Indecibilidad de HaltMT

HaltMT = { < M, x >  ∣  M es una MT y se detiene con entrada x}

HaltMT es el problema de la detención (Halting Problem).

Decidir HaltMT significa poder detectar si una MT va a entrar en un bucle infinito sin ejecutarla.

Por ejemplo podríamos demostrar o infirmar la Conyectura de Goldbach (todos los números  ≥ 4 son la suma de dos números primos):

for i = 2 to infinity:
    if 2*i is not the sum of two primes:
        then HALT

Si HaltMT fuera decidible podríamos detectar si este programa terminara.

Suena demasiado lindo...

Ejercicio: Indecibilidad de HaltMT

$ Halt_{MT} = { $ M es una MT y se detiene con entrada x}

La idea es mostrar que su pudieramos decidir HaltMT, podriamos decidir AccTM.

Adecuación de las MT

¿Las MT representan todos los procedimientos efectivos?

Como un procedimiento efectivo es una noción informal, no lo podemos demostrar.

Pero algunas cosas indican que sí, es el caso.

Se demostro que tres modelos de calculo:

Eran equivalentes, ie calculaban las mismas funciones.

La hypothesis que las máquinas de Turing representan todos los procedimientos efectivos se llama Tesis de Church-Turing.

Resultados importantes

Lectura

  1. Arora y Barak: Capítulo 1 hasta 1.5 incluido (Sin sección 1.2.1, remark 1.7, claim 1.8, section 1.5.2).

  2. Sipser: Capítulo 0. Capítulo 4, sección 2: lenguajes indecidibles y problema de la detención.

Más lectura