Introducción a la Complejidad...

111
Introducci´on a la Complejidad Computacional IIC2213 IIC2213 Introducci´ on a la Complejidad Computacional 1 / 111

Transcript of Introducción a la Complejidad...

Page 1: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Introduccion a la Complejidad Computacional

IIC2213

IIC2213 – Introduccion a la Complejidad Computacional 1 / 111

Page 2: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Complejidad Computacional

Objetivo: Medir la complejidad computacional de un problema.

Vale decir: Medir la cantidad de recursos computacionalesnecesarios para solucionar un problema.

◮ Tiempo

◮ Espacio

◮ ...

Para hacer esto primero tenemos que introducir la nocion deproblema.

IIC2213 – Introduccion a la Complejidad Computacional 2 / 111

Page 3: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Problemas de decision

Alfabeto A: Conjunto finito de sımbolos.

◮ Ejemplo: A = {0, 1}.

Palabra w : Secuencia finita de sımbolos de A.

◮ Ejemplo: w = 01101.

A∗: Conjunto de todas las palabras construidas con sımbolos de A.

Lenguaje L: Conjunto de palabras.

◮ Ejemplo: L = {0n1n | n ∈ N}.

IIC2213 – Introduccion a la Complejidad Computacional 3 / 111

Page 4: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Problemas de decision

Problema de decision asociado a un lenguaje L: Dado w ∈ A∗,decidir si w ∈ L.

Ejemplo

Podemos ver SAT como un problema de decision. Suponga queP = {p, q}:

◮ A = {p, q,¬,∧,∨,→,↔, (, )}Algunas palabras de A∗ representan formulas de L(P),mientras que otras tales como ¬¬ y p¬q ∧ ∧ ∨ q norepresentan formulas.

◮ SAT = {w ∈ A∗ | w representa una formula de L(P) y w essatisfacible}.

IIC2213 – Introduccion a la Complejidad Computacional 4 / 111

Page 5: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Complejidad de un problema de decision

La complejidad de un lenguaje L es la complejidad del problema dedecision asociado a L.

¿Cuando decimos que L puede ser solucionado eficientemente?

◮ Cuando existe un algoritmo eficiente que decide L.

Ejercicio

Muestre que L = {w ∈ {0, 1}∗ | numero de 0s y 1s en w es elmismo} puede ser resuelto eficientemente.

¿Cuando decimos que L es un problema difıcil?

◮ Cuando no existe un algoritmo eficiente que decide L.

IIC2213 – Introduccion a la Complejidad Computacional 5 / 111

Page 6: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing

¿Como podemos demostrar que un problema es difıcil?

◮ Para hacer esto, primero tenemos que formalizar la nocion dealgoritmo.

¿Que es un algoritmo? ¿Podemos formalizar este concepto?

◮ Maquinas de Turing: Intento por formalizar este concepto.

¿Podemos demostrar que las maquinas de Turing capturan lanocion de algoritmo?

◮ No, el concepto de algoritmo es intuitivo.

IIC2213 – Introduccion a la Complejidad Computacional 6 / 111

Page 7: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing

¿Por que creemos que las maquinas de Turing son una buenaformalizacion del concepto de algoritmo?

◮ Porque cada programa de una maquina de Turing puede serimplementado.

◮ Porque todos los algoritmos conocidos han podido serimplementados en maquinas de Turing.

◮ Porque todos los otros intentos por formalizar este concepto fueronreducidos a las maquinas de Turing.

◮ Los mejores intentos resultaron ser equivalentes a las maquinasde Turing.

◮ Todos los intentos “razonables” fueron reducidoseficientemente.

◮ Tesis de Church: Algoritmo = Maquina de Turing.

IIC2213 – Introduccion a la Complejidad Computacional 7 / 111

Page 8: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Componentes

Dado: Alfabeto A que no contiene sımbolo especial B.

Componentes:

◮ Memoria: Arreglo infinito (en ambas direcciones) que en cadaposicion almacena un sımbolo de A ∪ {B}.

◮ Control: Conjunto finitos de estados, una cabeza lectora, unestado inicial y un conjunto de estados finales.

◮ Programa: Conjunto de instrucciones.

IIC2213 – Introduccion a la Complejidad Computacional 8 / 111

Page 9: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Funcionamiento

Inicialmente:

◮ La maquina recibe como entrada una palabra w .

◮ Coloca esta palabra en alguna parte del arreglo. En lasposiciones restantes el arreglo contiene sımbolo blanco B.

◮ La cabeza lectora se coloca en la primera posicion de w y lamaquina queda en el estado inicial q0.

IIC2213 – Introduccion a la Complejidad Computacional 9 / 111

Page 10: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Funcionamiento

En cada paso:

◮ La maquina lee el sımbolo a en la celda apuntada por lacabeza lectora y determina en que estado q se encuentra.

◮ Busca en el programa una instruccion para (q, a). Si estainstruccion no existe, entonces la maquina se detiene.

◮ Si la instruccion existe, entonces la ejecuta: Escribe unsımbolo en la posicion apuntada por la cabeza lectora, pasa aun nuevo estado y mueve la cabeza lectora a la derecha o a laizquierda.

Si la maquina se detiene en un estado final, entonces la maquinaacepta w .

IIC2213 – Introduccion a la Complejidad Computacional 10 / 111

Page 11: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Formalizacion

Definicion

Maquina de Turing (determinista): (Q,A, q0, δ,F )

◮ Q es un conjunto finito de estados.

◮ A es un alfabeto tal que B 6∈ A.

◮ q0 es el estado inicial (q0 ∈ Q).

◮ F es un conjunto de estados finales (F 6= ∅).

◮ δ es una funcion parcial:

δ : Q × (A ∪ {B})→ Q × (A ∪ {B})× {←,→}.

δ es llamada funcion de transicion. Suponemos que sudominio no es vacıo.

IIC2213 – Introduccion a la Complejidad Computacional 11 / 111

Page 12: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Ejemplo

Queremos construir una maquina que verifique si el largo de unapalabra de 0s es par: M = (Q,A, q0, δ,F )

◮ A = {0}.

◮ Q = {q0, q1, qS , qN}.

◮ F = {qS}.

◮ δ es definida como:

δ(q0, 0) = (q1, 0,→)

δ(q0, B) = (qS , B,→)

δ(q1, 0) = (q0, 0,→)

δ(q1, B) = (qN , B,→)

IIC2213 – Introduccion a la Complejidad Computacional 12 / 111

Page 13: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Ejecucion

Supongamos que w = 0000:

. . . . . .

. . . . . .

. . . . . .

q1

B B B B0 0 0 0

B B B B0 0 0 0

B B B B0 0 0 0

q0

Paso 0:

Paso 2:

Paso 1:

q0

IIC2213 – Introduccion a la Complejidad Computacional 13 / 111

Page 14: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Ejecucion

. . . . . .

. . . . . .

. . . . . .

qS

B B B B0 0 0 0

B B B B0 0 0 0

B B B B0 0 0 0

Paso 3:

Paso 4:

Paso 5:

q0

q1

IIC2213 – Introduccion a la Complejidad Computacional 14 / 111

Page 15: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Otra ejecucion

Ahora supongamos que w = 00000:

. . . . . .

. . . . . .

. . . . . .

q0

Paso 0:

Paso 2:

Paso 1:

B B 0 0 0 0 BB0

B B 0 0 0 0 BB0

B B 0 0 0 0

q0

BB0

q1

IIC2213 – Introduccion a la Complejidad Computacional 15 / 111

Page 16: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Otra ejecucion

. . . . . .

. . . . . .

. . . . . .

. . . . . .

qN

Paso 3:

Paso 4: B B 0 0 0 0 BB0

B B 0 0 0 0 BB0

Paso 5: B B 0 0 0 0 BB0

B B 0 0 0 0 BB0Paso 6:

q1

q0

q1

IIC2213 – Introduccion a la Complejidad Computacional 16 / 111

Page 17: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing: Palabra vacıa

Finalmente supongamos que w = ε:

. . . . . .

. . . . . .

qS

Paso 0:

Paso 1: B B B B

B B B B

q0

Inicialmente: La cabeza lectora se encuentra en una posicioncualquiera.

IIC2213 – Introduccion a la Complejidad Computacional 17 / 111

Page 18: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

El lenguaje aceptado por una maquina de Turing

Definicion

Dada una maquina de Turing M = (Q,A, q0, δ,F ):

L(M) = {w ∈ A∗ | M acepta w}.

L(M) es el lenguaje aceptado por M.

En el ejemplo anterior: L(M) = {w ∈ {0}∗ | largo de w es par}.

IIC2213 – Introduccion a la Complejidad Computacional 18 / 111

Page 19: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

El lenguaje aceptado por una maquina de Turing

Ejercicio

1. Construya una maquina de Turing que acepta el lenguaje delas palabras de 0s que tienen largo divisible por 3.

2. Construya una maquina de Turing que acepta el lenguaje delas palabras de 0s que tienen largo divisible por 6.

3. Construya una maquina de Turing que acepta el lenguaje delas palabras de 0s y 1s que tienen el mismo numero de 0s y 1s.

IIC2213 – Introduccion a la Complejidad Computacional 19 / 111

Page 20: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Detencion de una maquina de Turing

Una maquina de Turing puede no detenerse en alguna entrada.

Ejemplo

M = (Q,A, q0, δ,F ), donde Q = {q0, q1}, A = {0}, F = {q1} y δ

es definida de la siguiente forma:

δ(q0, 0) = (q1, 0,→)

δ(q0, B) = (q0, B,→)

¿Con que palabra no se detiene esta maquina?

IIC2213 – Introduccion a la Complejidad Computacional 20 / 111

Page 21: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Problemas decidibles

Si una maquina de Turing no se detiene en alguna entrada,entonces no puede ser utilizada como un algoritmo.

◮ Un buen programa en C o Java no se deberıa quedar en unloop infinito.

Definicion

Un lenguaje L es decidible si existe una maquina de Turing M quese detiene en todas las entradas y tal que L = L(M).

¿Existen problemas para los cuales no hay algoritmos? ¿Se puededemostrar esto?

IIC2213 – Introduccion a la Complejidad Computacional 21 / 111

Page 22: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Existencia de problemas no decidibles

Sea A = {0, 1}.

◮ ¿Cuantos lenguajes con alfabeto A existen?

◮ ¿Cuantas maquinas de Turing con alfabeto A existen?

◮ ¿Existen lenguajes no decidibles?◮ Si lanzamos un dardo al azar sobre el espacio de todos los

lenguajes con alfabeto A, ¿cual es la probabilidad de que eldardo caiga en un problema decidible?

IIC2213 – Introduccion a la Complejidad Computacional 22 / 111

Page 23: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Existencia de problemas no decidibles

La demostracion anterior no es constructiva.

◮ Sabemos que existe un problema indecidible, pero no sabemoscomo es este lenguaje.

Vamos a construir un lenguaje indecidible.

◮ Usamos diagonalizacion.

IIC2213 – Introduccion a la Complejidad Computacional 23 / 111

Page 24: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Codificacion de una maquina de Turing

Primero tenemos que introducir algo de terminologıa.

Supongamos que M = (Q,A, q1, δ,F ), donde

◮ Q = {q1, . . . , qn}.

◮ A = {0, 1}.

◮ F = {qi1 , qi2 , . . . , qim}, 1 ≤ i1 < i2 < · · · < im ≤ n.

Definimos una palabra C (M) = wQ00wδ00wF que representa a M.

IIC2213 – Introduccion a la Complejidad Computacional 24 / 111

Page 25: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Codificacion de una maquina de Turing

◮ wQ :

001001100 · · · 00 1 · · · 1︸ ︷︷ ︸

n veces

◮ wδ: Usamos 1 para representar sımbolo 0, 11 para sımbolo 1 y111 para sımbolo B. Tambien usamos 1 para representar ← y11 para →.

wδ es de la forma w1 · · ·wk , donde cada wi representa unatransicion. Por ejemplo, si δ(qi , 0) = (qj , B,←), entonces lasiguiente palabra representa esta transicion:

00 1 · · · 1︸ ︷︷ ︸

i veces

00100 1 · · · 1︸ ︷︷ ︸

j veces

00111001

IIC2213 – Introduccion a la Complejidad Computacional 25 / 111

Page 26: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Codificacion de una maquina de Turing

En cambio, si δ(qi , 1) = (qj , 0,→), entonces la siguientepalabra representa la transicion:

00 1 · · · 1︸ ︷︷ ︸

i veces

001100 1 · · · 1︸ ︷︷ ︸

j veces

0010011

◮ wF :

00 1 · · · 1︸ ︷︷ ︸

i1 veces

00 1 · · · 1︸ ︷︷ ︸

i2 veces

00 · · · 00 1 · · · 1︸ ︷︷ ︸

im veces

IIC2213 – Introduccion a la Complejidad Computacional 26 / 111

Page 27: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Codificacion de una maquina de Turing: Ejemplo

Sea M = (Q,A, q1, δ,F ), donde Q = {q1, q2, q3, q4}, A = {0, 1},F = {q3} y δ es definido de la siguiente forma:

δ(q1, 0) = (q1, 0,→) δ(q2, B) = (q3, B,←)δ(q1, 1) = (q2, 1,→) δ(q2, 0) = (q4, 0,←)δ(q2, 1) = (q4, 1,←)

Entonces: C (M) = wQ00wδ00wF , donde:

wQ = 001001100111001111

wF = 00111

wδ = 00100100100100110010011001100110011

00110011100111001110010011001001111001001

001100110011110011001

IIC2213 – Introduccion a la Complejidad Computacional 27 / 111

Page 28: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema indecidible: Problema de la parada

Problema natural

Dada una maquina de Turing M y una palabra w , ¿se detiene Mcon entrada w?

Como problema de decision: Consideramos maquinas de Turingcon alfabeto {0, 1}. Entonces,

U = {w ′ ∈ {0, 1}∗ | existe una MT M y w ∈ A∗ tal que

w ′ = C (M)0000w y M se detiene con entrada w}.

¿Es este problema decidible?

◮ Vamos a demostrar que no, pero para eso vamos a considerarprimero un problema mas simple.

IIC2213 – Introduccion a la Complejidad Computacional 28 / 111

Page 29: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema de decision mas simple

Otro problema de decision

Dada una maquina de Turing M, ¿es cierto que M se detiene conentrada C (M)?

Le damos como entrada a M su propio codigo, ¿es valido haceresto?

◮ Sı, C (M) es una palabra como cualquier otra.

Como problema de decision:

H = {w ∈ {0, 1}∗ | existe una MT M tal que

w = C (M) y M se detiene con entrada C (M)}.

IIC2213 – Introduccion a la Complejidad Computacional 29 / 111

Page 30: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema de decision mas simple: Demostracion

Teorema

H es indecidible, vale decir, no existe una maquina de Turing Mque se detiene en todas las entradas y tal que H = L(M).

Demostracion: Por contradiccion, asuma que existe una MT M⋆

que se detiene en todas las entradas y tal que H = L(M⋆).

Vale decir: para cada MT M, si M se detiene con su propio codigo,entonces M⋆ con entrada C (M) se detiene en un estado final. Encaso contrario, M⋆ se detiene en un estado que no es final.

IIC2213 – Introduccion a la Complejidad Computacional 30 / 111

Page 31: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema de decision mas simple: Demostracion

Sea M0 una MT que con entrada w funciona de la siguiente forma:

hace funcionar la maquina M⋆ con entrada wsi M⋆ se detiene en un estado final

entonces M0 no se detieneen caso contrario M0 se detiene en un estado final

¿Es posible construir M0? ¿Como?

IIC2213 – Introduccion a la Complejidad Computacional 31 / 111

Page 32: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema de decision mas simple: Demostracion

La pregunta ahora es si M⋆ acepta M0:

M⋆ acepta M0

si y solo siM0 se detiene con entrada C (M0)

si y solo siM⋆ se detiene en un estado no final con entrada C (M0)

si y solo siM⋆ no acepta M0

¡Tenemos una contradiccion!

IIC2213 – Introduccion a la Complejidad Computacional 32 / 111

Page 33: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema indecidible: Problema de la parada

Podemos concluir que nuestro problema original U es indecidible.

◮ ¿Por que?

Pero, ¿como demostramos formalmente que U es indecidible?

◮ Tenemos que formalizar el concepto de reduccion.

IIC2213 – Introduccion a la Complejidad Computacional 33 / 111

Page 34: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La nocion de reduccion

Dado: Lenguajes L1 y L2 con alfabeto A.

Intuicion: Decimos que un lenguaje L1 es reducible a un lenguajeL2 si existe un algoritmo tal que dado w1 ∈ A∗, calcula w2 ∈ A∗ talque w1 ∈ L1 si y solo si w2 ∈ L2.

Para formalizar esta idea necesitamos introducir la nocion dealgoritmo que calcula.

◮ Tenemos que introducir maquinas de Turing que calculan.

IIC2213 – Introduccion a la Complejidad Computacional 34 / 111

Page 35: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing que calculan

Definicion

Una MT M calcula una funcion f : A∗ → A∗ si:

con entrada w ∈ A∗, la maquina se detiene en un estadofinal teniendo en la memoria una cadena infinita de sımbo-los B seguida de f (w) seguida de otra cadena infinita desımbolos B.

Definicion

Una funcion f es computable si es que existe una maquina deTuring que calcula f .

IIC2213 – Introduccion a la Complejidad Computacional 35 / 111

Page 36: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing que calculan

Ejemplo

Sea g : {0, 1}∗ → {0, 1}∗ una funcion definida comog(w) = w0000. Queremos demostrar que g es computable.

Sea M = (Q,A, q1, δ,F ), donde

◮ Q = {q1, q2, q3, q4, qF}.

◮ A = {0, 1}.

◮ F = {qF}.

◮ δ es definida como:δ(q1, 0) = (q1, 0,→) δ(q2, B) = (q3, 0,→)δ(q1, 1) = (q1, 1,→) δ(q3, B) = (q4, 0,→)δ(q1, B) = (q2, 0,→) δ(q4, B) = (qF , 0,→)

IIC2213 – Introduccion a la Complejidad Computacional 36 / 111

Page 37: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La nocion de reduccion: Formalizacion

Definicion

Dados lenguajes L1 y L2 con alfabeto A, L1 es reducible a L2 siexiste una funcion computable f tal que para todo w ∈ A∗:w ∈ L1 si y solo si f (w) ∈ L2.

Teorema

Suponga que L1 es reducible a L2.

◮ Si L2 es decidible entonces L1 es decidible.

◮ Si L1 es indecidible entonces L2 es indecidible.

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 37 / 111

Page 38: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

El problema de la parada: Demostracion

Por fin estamos listos para demostrar que el problema de la paradaU es indecidible.

Demostracion: Sea g : {0, 1}∗ → {0, 1}∗ definida comog(w) = w0000w .

Es facil ver que g es computable y es una reduccion de H a U.

Dado que H es indecidible, concluimos que U es indecidible.

IIC2213 – Introduccion a la Complejidad Computacional 38 / 111

Page 39: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Otro problema indecidible

¿Puede una maquina de Turing funcionar como un computador?

◮ Un computador es de uso general, no es usado para resolverun solo problema.

Definicion

Maquina de Turing universal MA con alfabeto {0, 1}:

◮ Recibe como entrada C (M)0000w.

◮ Simula M con entrada w.

◮ Se detiene en un estado final si y solo si M acepta w.Ademas, si M con entrada w retorna x, entonces MA tambienretorna x.

IIC2213 – Introduccion a la Complejidad Computacional 39 / 111

Page 40: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: La nocion de aleatoriedad

Suponga que cada vez que lanzamos una moneda anotamos un 0 sisale cara y un 1 si sale sello.

◮ Decimos que estamos generando una palabra “aleatoria”.

¿Como podemos definir la nocion de “ser aleatorio”?

◮ ¿Es la siguiente palabra aleatoria? ¿Por que?0000000000000000000000000000000000000000

◮ ¿Que sucede con el siguiente caso? ¿Es aleatoria?0101010101010101010101010101010101010101

◮ ¿Y en el siguiente caso dirıa que la palabra es aleatoria?0001101101111100010101000100111001100110

IIC2213 – Introduccion a la Complejidad Computacional 40 / 111

Page 41: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Complejidad de Kolmogorov

Cuan aleatoria es una palabra depende de cuanto nos cuestadescribirla.

◮ Para formalizar esta idea tenemos que definir que significa“describir una palabra”.

Definicion

Dado una palabra x, definimos la complejidad de Kolmogorov de xcomo:

KA(x) = min{ |y | | MA con entrada y retorna x},

donde |y | es el largo de y. En particular, |ε| = 0.

Ejercicio

De una cota superior para KA(x) en funcion de |x |.

IIC2213 – Introduccion a la Complejidad Computacional 41 / 111

Page 42: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Complejidad de Kolmogorov

La complejidad de Kolmogorov depende de la MT universal queelijamos. ¿Que pasa si elegimos otra MT universal?

Teorema

Si MB es otra MT universal, entoncesKA(x) ≤ KB(x) + |C (MB)|+ 4

Vale decir: Las dos medidas solo difieren en una constante.

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 42 / 111

Page 43: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Complejidad de Kolmogorov y aleatoriedad

Nocion de aleatoriedad: una palabra x es aleatoria si su estructuraes compleja.

◮ x es “difıcil de describir” (no puede ser “comprimida” mucho).

Definicion

Una palabra x es aleatoria si:

KA(x) >|x |

2.

Ejercicio

1. Demuestre que existen infinitas palabras aleatorias.

2. ¿Existen mas palabra aleatorias que no aleatorias?

IIC2213 – Introduccion a la Complejidad Computacional 43 / 111

Page 44: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Aleatoriedad es indecidible

Problema de decision: Dado x ∈ {0, 1}∗, ¿es x aleatorio?

Vamos a demostrar que este problema es indecidible.

◮ Nuevamente usamos diagonalizacion.

Teorema

El lenguaje LA = {x ∈ {0, 1}∗ | KA(x) >|x |2 } es indecidible.

Demostracion: Suponga que LA es decidible. Entonces existe unaMT M⋆ que se detiene en todas las entradas y tal que L(M⋆) = LA.

IIC2213 – Introduccion a la Complejidad Computacional 44 / 111

Page 45: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Aleatoriedad es indecidible

Defina una MT M que con entrada y ∈ {0, 1}∗ funciona de lasiguiente forma:

asigna 0 a xmientras que M⋆ no acepta x o |x | < 2 · y

incrementa x en 1retorna x

Con entrada y : M genera una palabra x tal que KA(x) >|x |2 ≥ y .

IIC2213 – Introduccion a la Complejidad Computacional 45 / 111

Page 46: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Parentesis: Aleatoriedad es indecidible

Dado que |y | = ⌈log(y + 1)⌉: Existe y0 tal que|C (M)| + 4 + |y0| ≤ y0.

Sea x0 el valor retornado por M con entrada y0.

Entonces : KA(x0) >|x0|2 ≥ y0.

Pero M con entrada y0 describe a x0: MT universal MA conentrada C (M)0000y0 retorna x0. Entonces:

Entonces : KA(x0) ≤ |C (M)|+ 4 + |y0| ≤ y0.

¡Tenemos una contradiccion!

IIC2213 – Introduccion a la Complejidad Computacional 46 / 111

Page 47: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

¿Donde estamos?

El objetivo de esta seccion es introducir la nocion de complejidadcomputacional.

◮ Cuanto cuesta resolver un problema.

Hasta ahora:

◮ Formalizamos la nocion de algoritmo a traves de las Maquinasde Turing.

◮ Demostramos que hay problemas muy difıciles: indecidibles.

Lo que viene:

◮ Definir la complejidad de un algoritmo.

◮ Estudiar la complejidad de un problema.

Antes de esto: Maquinas de Turing no deterministas.

IIC2213 – Introduccion a la Complejidad Computacional 47 / 111

Page 48: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing no deterministas

Definicion

Maquina de Turing no determinista: (Q,A, q0, δ,F )

◮ Q es un conjunto finito de estados.

◮ A es un alfabeto tal que B 6∈ A.

◮ q0 es el estado inicial (q0 ∈ Q).

◮ F es un conjunto de estados finales (F 6= ∅).

◮ δ ⊆ Q × (A ∪ {B})× Q × (A ∪ {B})× {←,→}: Relacion detransicion.Suponemos que δ 6= ∅.

IIC2213 – Introduccion a la Complejidad Computacional 48 / 111

Page 49: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing no deterministas: Funcionamiento

Inicialmente: Tal como en una MT determinista.

En cada paso:

◮ La maquina lee el sımbolo a en la celda apuntada por lacabeza lectora y determina en que estado q se encuentra.

◮ Determina el conjunto de todas las instrucciones para (q, a).Si este conjunto es vacıo, entonces la maquina se detiene.

◮ Si el conjunto no es vacıo, entonces escoge una instruccion deeste conjunto y la ejecuta.

Si la maquina se detiene en un estado final, entonces la maquinaacepta w .

IIC2213 – Introduccion a la Complejidad Computacional 49 / 111

Page 50: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing no deterministas: Lenguaje aceptado

Definicion

Dada una maquina de Turing M no determinista con alfabeto A:

L(M) = {w ∈ A∗ | existe alguna ejecucion de M

con entrada w que termina en un estado final}.

Ejercicio

1. Sea L = {w ∈ {0}∗ | el largo de w es divisible por 2 o 3}.Construya una MT no determinista que acepte L y que solomueva su cabeza a la derecha.

2. ¿Puede hacer lo mismo con una MT determinista?

IIC2213 – Introduccion a la Complejidad Computacional 50 / 111

Page 51: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing no deterministas: Poder de

computacion

¿Son las maquinas de Turing no deterministas mas poderosas quelas deterministas?

Teorema

Para cada MT no determinista M, existe una MT determinista M ′

tal que M y M ′ se detienen en las mismas palabras yL(M) = L(M ′).

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 51 / 111

Page 52: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Complejidad de un algoritmo

Notacion

Dada una MT determinista M con alfabeto A que para en todaslas entradas:

◮ Paso de M: Ejecutar una instruccion de la funcion detransicion.

◮ tiempoM(w): Numero de pasos ejecutados por M con entradaw.

Definicion

Dado un numero natural n:

tM(n) = max{ tiempoM(w) | w ∈ A∗ y |w | = n}.

tM : tiempo de ejecucion de M en el peor caso.

IIC2213 – Introduccion a la Complejidad Computacional 52 / 111

Page 53: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Complejidad de un problema

Definicion

Un lenguaje L puede ser aceptado en tiempo t si existe una MTdeterminista M tal que:

◮ M para en todas las entradas.

◮ L = L(M).

◮ tM es O(t), vale decir, existe c ∈ R+ y n0 ∈ N tal quetM(n) ≤ c · t(n) para todo n ≥ n0.

El tiempo para computar una funcion f se define de la mismaforma.

IIC2213 – Introduccion a la Complejidad Computacional 53 / 111

Page 54: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad

Definicion

Dado un alfabeto A, DTIME(t) se define como el conjunto detodos los lenguajes L ⊆ A∗ que pueden ser aceptados en tiempo t.

Dos clases fundamentales:

PTIME =⋃

k∈N

DTIME(nk).

EXPTIME =⋃

k∈N

DTIME(2nk

).

PTIME: conjunto de todos los problemas que pueden sersolucionados eficientemente.

IIC2213 – Introduccion a la Complejidad Computacional 54 / 111

Page 55: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Un problema fundamental

El problema fundamental de nuestra disciplina:

Dado un problema, encontrar un algoritmo efi-

ciente para solucionarlo o demostrar que no exis-

te tal algoritmo.

Primera parte (puede ser difıcil): Demostrar que L ∈ DTIME(t).

◮ Si L = {w ∈ {0}∗ | largo de w es par}, entoncesL ∈ DTIME(n).

Segunda parte (es difıcil): Demostrar que L 6∈ DTIME(t).

◮ ¿Es cierto que SAT 6∈ PTIME?

◮ ¿Como podemos atacar este problema?

IIC2213 – Introduccion a la Complejidad Computacional 55 / 111

Page 56: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La nocion de completitud: Reduccion polinomial

Definicion

Dados lenguajes L1 y L2 con alfabeto A, decimos que L1 esreducible en tiempo polinomial a L2 si existe una funcion fcomputable en tiempo polinomial tal que para todo w ∈ A∗:

w ∈ L1 si y solo si f (w) ∈ L2.

Teorema

Suponga que L1 es reducible en tiempo polinomial a L2.

◮ Si L2 ∈ PTIME entonces L1 ∈ PTIME.

◮ Si L1 6∈ PTIME entonces L2 6∈ PTIME.

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 56 / 111

Page 57: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La nocion de completitud: Hardness

Definicion

Dada una clase de complejidad C que contiene PTIME, decimosque L es hard para C si para todo L′ ∈ C existe una reduccionpolinomial de L′ a L.

Teorema

Si PTIME ( C y L es hard para C, entonces L 6∈ PTIME.

Entonces: Para probar que L 6∈ PTIME, basta encontrar una claseC tal que PTIME ( C y demostrar que L es hard para esta clase.

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 57 / 111

Page 58: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La nocion de completitud

Pero: Tambien queremos saber cual es la complejidad exacta de unproblema.

Definicion

Decimos que L es completo para C si L ∈ C y L es hard para C.

Corolario

Si PTIME ( C y L es completo para C, entonces L 6∈ PTIME.

¿Se conoce alguna clase C tal que PTIME ( C? ¿Se puededemostrar que SAT 6∈ PTIME usando este enfoque?

IIC2213 – Introduccion a la Complejidad Computacional 58 / 111

Page 59: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La existencia de problemas difıciles

Veamos un ejemplo de una clase que contiene en forma estricta aPTIME:

Teorema

PTIME ( EXPTIME.

Existen problemas naturales que son completos para EXPTIME, yque por lo tanto no pueden ser resueltos eficientemente.

Ejercicio

Demuestre que SAT ∈ EXPTIME.

IIC2213 – Introduccion a la Complejidad Computacional 59 / 111

Page 60: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

¿Es SAT un problema difıcil?

Para demostrar que SAT 6∈ PTIME, solo tenemos que demostrarque SAT es hard para EXPTIME

◮ Nadie sabe como hacer esto.

Preguntas a resolver:

◮ ¿Que clase representa la complejidad de SAT? ¿Para que clasede complejidad SAT es completo?

◮ ¿Se puede demostrar que esta clase no es igual a PTIME?

IIC2213 – Introduccion a la Complejidad Computacional 60 / 111

Page 61: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de SAT

Tenemos que usar maquinas de Turing no deterministas paraentender la complejidad exacta de SAT.

Notacion

Dada una MT no determinista M con alfabeto A:

◮ Paso de M: Ejecutar una instruccion de la relacion detransicion.

◮ tiempoM(w): Numero de pasos de M con entrada w en laejecucion mas corta que acepta a w.

Solo esta definido para palabras aceptadas por M.

IIC2213 – Introduccion a la Complejidad Computacional 61 / 111

Page 62: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de SAT

Definicion

Dado un numero natural n:

tM(n) = max{n} ∪ { tiempoM(w) |

w ∈ A∗, |w | = n y M acepta w}.

¿Por que incluimos {n} en la definicion?

IIC2213 – Introduccion a la Complejidad Computacional 62 / 111

Page 63: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad no deterministas

Definicion

Un lenguaje L es aceptado en tiempo t por una MT M nodeterminista si:

◮ L = L(M).

◮ tM es O(t).

IIC2213 – Introduccion a la Complejidad Computacional 63 / 111

Page 64: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de Complejidad no deterministas

Definicion

NTIME(t) se define como el conjunto de todos los lenguajes quepueden ser aceptados en tiempo t por alguna MT no determinista.

Una clase fundamental:

NP =⋃

k∈N

NTIME(nk).

¿Por que es tan importante esta clase? ¿Que problemas estan enesta clase? ¿Que problemas son completos para esta clase?

IIC2213 – Introduccion a la Complejidad Computacional 64 / 111

Page 65: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Algunas propiedades de la clase NP

¿Donde vive NP? PTIME ⊆ NP ⊆ EXPTIME.

◮ Se sabe que al menos una de estas inclusiones es estricta(¿por que?), pero no se sabe cual.

◮ Tampoco se sabe si ambas inclusiones son estrictas.

¿Que problemas estan en NP?

Ejercicio

Muestre que SAT y 3-coloracion de grafos estan en NP.

¿Que problemas son completos para esta clase?

IIC2213 – Introduccion a la Complejidad Computacional 65 / 111

Page 66: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook

Teorema (Cook)

SAT es completo para la clase NP.

Demostracion: Sea L ∈ NP. Tenemos que demostrar que L esreducible en tiempo polinomial a SAT.

Esto significa que existe una funcion f : {0, 1}∗ → {0, 1}∗ tal que:

◮ f es computable en tiempo polinomial.

◮ Para cada w ∈ {0, 1}∗ se tiene que w ∈ L si y solo sif (w) ∈ SAT.

Notacion: f (w) = ϕw

IIC2213 – Introduccion a la Complejidad Computacional 66 / 111

Page 67: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

¿Que sabemos de L?

◮ Como L ∈ NP, existe una MT M no determinista tal queL = L(M) y tM es O(nk), donde k > 0 es una constante.

Vamos a representar el funcionamiento de M con entrada wusando la formula ϕw : M acepta w si y solo si ϕw es satisfacible.

Suponemos:

◮ M = (Q, {0, 1}, q0 , δ,F ), donde F = {qm} y no existe unatransicion en δ para qm.

◮ Para cada q ∈ (Q \ {qm}) y a ∈ {0, 1, B}, existe al menos unatransicion en δ para (q, a).

◮ w = a0 · · · an−1, donde cada ai ∈ {0, 1}.

IIC2213 – Introduccion a la Complejidad Computacional 67 / 111

Page 68: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

Usamos las siguientes variables proposicionales:

st,p,a : t ∈ [0, tM(n)], p ∈ [−tM(n), tM(n)] y a ∈ {0, 1, B}.ct,p : t ∈ [0, tM(n)] y p ∈ [−tM(n), tM(n)].et,q : t ∈ [0, tM(n)] y q ∈ Q.

ϕw : es definida como ϕI ∧ ϕC ∧ ϕA ∧ ϕδ .

IIC2213 – Introduccion a la Complejidad Computacional 68 / 111

Page 69: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

ϕI : Estado inicial.

c0,0 ∧ e0,q0 ∧

( −1∧

p=−tM (n)

s0,p,B

)

( n−1∧

p=0

s0,p,ai

)

( tM (n)∧

p=n

s0,p,B

)

.

IIC2213 – Introduccion a la Complejidad Computacional 69 / 111

Page 70: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

ϕC : La maquina funciona correctamente.

ϕC se define como la conjuncion de cuatro formulas. Primero,cada celda siempre contiene un unico sımbolo:

tM (n)∧

t=0

tM (n)∧

p=−tM(n)

(

(st,p,0∨st,p,1∨st,p,B)∧(st,p,0 → (¬st,p,1∧¬st,p,B)) ∧

(st,p,1 → (¬st,p,0 ∧ ¬st,p,B)) ∧ (st,p,B → (¬st,p,0 ∧ ¬st,p,1))

)

.

IIC2213 – Introduccion a la Complejidad Computacional 70 / 111

Page 71: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

Segundo, la maquina siempre esta en un unico estado:

tM (n)∧

t=0

(∨

q∈Q

(et,q ∧∧

q′∈(Q\{q})

¬et,q′)

)

.

Tercero, la cabeza siempre esta en una unica posicion:

tM (n)∧

t=0

( tM (n)∨

p=−tM (n)

(ct,p ∧∧

p′∈([−tM(n),tM (n)]\{p})

¬ct,p′)

)

.

IIC2213 – Introduccion a la Complejidad Computacional 71 / 111

Page 72: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

Cuarto, el valor de una celda no cambia si no es apuntada por lacabeza lectora:

tM (n)−1∧

t=0

tM (n)∧

p=−tM(n)

(

(¬ct,p)→ ((st,p,0 ∧ st+1,p,0) ∨

(st,p,1 ∧ st+1,p,1) ∨ (st,p,B ∧ st+1,p,B))

)

.

IIC2213 – Introduccion a la Complejidad Computacional 72 / 111

Page 73: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

ϕA: La maquina acepta w .

tM(n)∨

t=0

et,qm .

IIC2213 – Introduccion a la Complejidad Computacional 73 / 111

Page 74: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Teorema de Cook: Demostracion

ϕδ : relacion δ define como funciona la maquina.

tM (n)−1∧

t=0

tM (n)−1∧

p=−(tM (n)−1)

(∧

(q,a)∈Q×{0,1,B}

(

(et,q ∧ ct,p ∧ st,p,a) →

(∨

(q′,a′,k) : (q,a,q′,a′,k)∈δ

(et+1,q′ ∧ ct+1,p+k ∧ st+1,p,a′)

)))

.

Representamos ← como -1 y → como 1.

IIC2213 – Introduccion a la Complejidad Computacional 74 / 111

Page 75: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Otros problemas NP-completos

Notacion

Si L es completo para C, decimos que L es C-completo.

¿Como podemos demostrar que un problema L es NP-completo?

◮ Nos basta con demostrar que L ∈ NP y que existe unareduccion polinomial de SAT a L.

Antes de utilizar esta tecnica tenemos que pensar que version deSAT usar.

◮ En general es mas facil utilizar formulas en alguna formanormal.

IIC2213 – Introduccion a la Complejidad Computacional 75 / 111

Page 76: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Otros problemas NP-completos

Una version de SAT muy util:

CNF-SAT = {ϕ | ϕ es una formula en CNF y ϕ es satisfacible}.

¿Es CNF-SAT NP-completo?

◮ Podemos modificar la demostracion del Teorema de Cookpara mostrar esto.

Teorema

CNF-SAT es NP-completo.

IIC2213 – Introduccion a la Complejidad Computacional 76 / 111

Page 77: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Pero algunas versiones de SAT son mas simples . . .

Otra version de SAT:

DNF-SAT = {ϕ | ϕ es una formula en DNF y ϕ es satisfacible}.

¿Es DNF-SAT NP-completo?

◮ ¿Podemos modificar la demostracion del Teorema de Cookpara mostrar esto?

Teorema

DNF-SAT esta en PTIME.

IIC2213 – Introduccion a la Complejidad Computacional 77 / 111

Page 78: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Otros problemas NP-completos

Ahora podemos usar la idea inicial para mostrar que otrosproblemas son NP-completos.

Algunos ejemplos:

◮ 3-CNF-SAT = {ϕ | ϕ es una formula en CNF que contienetres literales por clausula y es satisfacible}.

◮ 3-COL = {G | G es una grafo 3-coloreable}.

◮ PRO-ENT = {(A,~b) | A es una matriz de enteros, ~b es unvector de enteros y existe un vector de enteros ~x tal queA~x ≤ ~b}.

IIC2213 – Introduccion a la Complejidad Computacional 78 / 111

Page 79: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Conjetura de Cook

Conjetura de Cook

PTIME ( NP

Si la conjetura es cierta:

◮ No existe un algoritmo eficiente para resolver SAT.

◮ Tampoco existen algoritmos eficientes para resolver ningunode los problemas NP-completos.

¿Cuan fundamental es este problema?

IIC2213 – Introduccion a la Complejidad Computacional 79 / 111

Page 80: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Conjetura de Cook

Desde la pagina del Clay Mathematics Institute:

“In order to celebrate mathematics in the new millennium,The Clay Mathematics Institute of Cambridge, Massachusetts(CMI) has named seven Prize Problems. The Scientific AdvisoryBoard of CMI selected these problems, focusing on importantclassic questions that have resisted solution over the years. TheBoard of Directors of CMI designated a $7 million prize fundfor the solution to these problems, with $1 million allocated toeach.”

IIC2213 – Introduccion a la Complejidad Computacional 80 / 111

Page 81: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Conjetura de Cook

Uno de los siete problemas es PTIME versus NP:

“Suppose that you are organizing housing accommodations for agroup of four hundred university students. Space is limited and onlyone hundred of the students will receive places in the dormitory. Tocomplicate matters, the Dean has provided you with a list of pairsof incompatible students, and requested that no pair from this listappear in your final choice. This is an example of what computerscientists call an NP-problem, since it is easy to check if a givenchoice of one hundred students proposed by a coworker is satisfac-tory ..., however the task of generating such a list from scratch seemsto be so hard as to be completely impractical ...”

Ejercicio

Muestre que el problema mencionado en este parrafo esNP-completo.

IIC2213 – Introduccion a la Complejidad Computacional 81 / 111

Page 82: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Que hacer con un problema NP-completo

¿Que hacemos si tenemos que solucionar un problemaNP-completo?

◮ Existen casos que no vamos a ser capaces de solucionar.

◮ Pero, ¿Que pasa en la practica?

Dado un problema NP-completo:

◮ Nos gustarıa encontrar casos que puedan ser solucionadoseficientemente y que sean interesantes en la practica.

Ejemplo

3-COL es NP-completo pero 2-COL puede ser solucionadoeficientemente.

Vamos a ver dos casos en los que SAT puede ser resueltoeficientemente: 2-CNF-SAT y Clausulas de Horn.

IIC2213 – Introduccion a la Complejidad Computacional 82 / 111

Page 83: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Sea 2-CNF-SAT = {ϕ | ϕ es una formula en CNF que contiene dosliterales por clausula y es satisfacible}.

Teorema

2-CNF-SAT puede ser solucionado eficientemente.

Demostracion: Sea ϕ una formula en CNF que contiene dosliterales por clausula. Suponga que ϕ menciona las variablesproposicionales x1, . . ., xn.

Sea Gϕ = (N,A) un grafo construido de la siguiente forma:

◮ N = {x1, . . . , xn,¬x1, . . . ,¬xn}.

◮ Para cada clausula C = l1 ∨ l2 en ϕ, A contiene los arcos(l1, l2) y (l2, l1).

Notese que este grafo es dirigido.

IIC2213 – Introduccion a la Complejidad Computacional 83 / 111

Page 84: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Ejemplo

Si ϕ = (x1 ∨ x2) ∧ (¬x1 ∨ x3) ∧ (x2 ∨ ¬x3), entonces Gϕ es elsiguiente grafo:

¬x3

x1

x2

x3

¬x1

¬x2

IIC2213 – Introduccion a la Complejidad Computacional 84 / 111

Page 85: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

¿Por que construimos Gϕ? ¿Cual es la relacion entre ϕ y Gϕ?

Vamos a demostrar que ϕ es satisfacible si y solo si no existe unnodo xi tal que ¬xi es alcanzable desde xi y xi es alcanzable desde¬xi en Gϕ.

¿Por que nos sirve esta propiedad?

◮ Porque se puede verificar en tiempo polinomial (¿como?).

IIC2213 – Introduccion a la Complejidad Computacional 85 / 111

Page 86: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

(⇒) Por contradiccion: Suponga que ϕ es satisfacible y existe xi talque ¬xi es alcanzable desde xi y xi es alcanzable desde ¬xi en Gϕ.

Sea σ una valuacion tal que σ(ϕ) = 1.

Consideramos σ(xi ) = 1. El otro caso se resuelve de la mismaforma.

IIC2213 – Introduccion a la Complejidad Computacional 86 / 111

Page 87: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Como ¬xi es alcanzable desde xi en Gϕ: Existe un caminol1, . . . , lk en Gϕ tal que k ≥ 2, l1 = xi y lk = ¬xi .

Como σ(¬xi) = 0: Existe j ∈ [1, k − 1] tal que σ(lj ) = 1 yσ(lj+1) = 0.

Como (lj , lj+1) ∈ A: (lj ∨ lj+1) o (lj+1 ∨ lj) es una clausula en ϕ.

Pero: σ no satisface a ninguna de estas clausulas, por lo queσ(ϕ) = 0, una contradiccion.

IIC2213 – Introduccion a la Complejidad Computacional 87 / 111

Page 88: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

(⇐) Suponga que para todo i ∈ [1, n]: xi no es alcanzable desde¬xi o ¬xi no es alcanzable desde xi en Gϕ.

Usamos Gϕ para construir una valuacion σ tal que σ(ϕ) = 1:

Sea V = {x1, . . . , xn,¬x1, . . . ,¬xn}Mientras V 6= ∅

elija li ∈ V tal que li no es alcanzable desde li en Gϕ

V := V \ {li , li}σ(li ) := 1Para todo lj tal que lj es alcanzable desde li en Gϕ

V := V \ {lj , lj}σ(lj) := 1

IIC2213 – Introduccion a la Complejidad Computacional 88 / 111

Page 89: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Primero tenemos que demostrar que σ esta bien definida:

◮ σ asigna un valor de verdad a cada variable xi .

◮ No existe una variable xi tal que el procedimiento asigna 1tanto a xi como a ¬xi .

Es claro que el primer punto se cumple (¿por que?).

IIC2213 – Introduccion a la Complejidad Computacional 89 / 111

Page 90: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Segundo punto: Por contradiccion, asuma que existe xi tal que elprocedimiento asigna 1 tanto a xi como a ¬xi .

Entonces existen literales l y l ′ tales que:

◮ l y l ′ fueron elegidos en la tercera linea del procedimiento.

◮ Existe un camino l1, . . ., lj en Gϕ tal que j ≥ 1, l1 = l ylj = xi .

◮ Existe un camino l ′1, . . ., l ′k en Gϕ tal que k ≥ 1, l ′1 = l ′ yl ′k = ¬xi .

IIC2213 – Introduccion a la Complejidad Computacional 90 / 111

Page 91: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Supongamos que l ′ fue elegido primero.

Como lj , . . . , l1 es un camino en Gϕ desde ¬xi a l : Existe uncamino en Gϕ desde l ′ a l .

Como l ′ fue elegido primero: el procedimiento asigna 1 a σ(l) yremueve tanto l como l desde V .

Por lo tanto: l no es elegido y σ(l) = 0, una contradiccion.

IIC2213 – Introduccion a la Complejidad Computacional 91 / 111

Page 92: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Para terminar la demostracion, tenemos que mostrar queσ(ϕ) = 1.

◮ Sea C = l1 ∨ l2 una clausula en ϕ. Tenemos que demostrarque σ(C ) = 1.

Como (l1 ∨ l2) es una clausula en ϕ: (l1, l2) es un arco en Gϕ.

Para cada arco (l , l ′) en Gϕ, el procedimiento:

◮ asigna 0 a σ(l) y σ(l ′) o

◮ asigna 0 a σ(l) y 1 a σ(l ′) o

◮ asigna 1 a σ(l) y σ(l ′).

IIC2213 – Introduccion a la Complejidad Computacional 92 / 111

Page 93: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de 2-CNF-SAT

Por lo tanto: En los dos primeros casos σ(l1) = 1, y en el ultimocaso σ(l2) = 1.

En cualquiera de los tres casos, σ(l1 ∨ l2) = 1, lo cual concluye lademostracion.

IIC2213 – Introduccion a la Complejidad Computacional 93 / 111

Page 94: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clausulas de Horn

Notacion

p es un literal positivo y ¬p es un literal negativo.

Una clausula C es de Horn si C contiene a lo mas un literalpositivo.

Ejemplo

p ∨ ¬q ∨ ¬r , p,¬q ∨ ¬r , ¬q.

¿Por que son interesantes las clausulas de Horn?

IIC2213 – Introduccion a la Complejidad Computacional 94 / 111

Page 95: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Conocimiento definitivo

Una formula (p ∧ q)→ r expresa conocimiento definitivo:

◮ Si sabemos que p y q son verdaderos, entonces tambiensabemos que r es verdadero.

En cambio, una formula (p ∧ q)→ (r ∨ s) no expresa conocimientodefinitivo:

◮ Si sabemos que p y q son verdaderos, no podemos concluirque r es verdadero ni tampoco podemos concluir que s esverdadero, solo podemos concluir que alguno de los dos esverdadero.

◮ Esta formula expresa conocimiento disyuntivo.

IIC2213 – Introduccion a la Complejidad Computacional 95 / 111

Page 96: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Conocimiento definitivo

Las clausulas de Horn corresponden al siguiente tipo de reglas queexpresan conocimiento definitivo:

◮ q.

◮ ¬q.

◮ (p1 ∧ · · · ∧ pn)→ q.

◮ (p1 ∧ · · · ∧ pn)→ ¬q.

En muchos casos es posible modelar el dominio de aplicacionusando solo este tipo de reglas.

IIC2213 – Introduccion a la Complejidad Computacional 96 / 111

Page 97: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de HORN-SAT

Sea HORN-SAT = {ϕ | ϕ es una conjuncion de clausulas de Horny ϕ es satisfacible}.

Teorema

HORN-SAT puede ser solucionado eficientemente.

Ejercicio

Demuestre el teorema.

IIC2213 – Introduccion a la Complejidad Computacional 97 / 111

Page 98: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

La complejidad de NEG-HORN-SAT

C es una clausula de Horn negativa si C contiene a lo mas unliteral negativo.

Sea NEG-HORN-SAT = {ϕ | ϕ es una conjuncion de clausulas deHorn negativas y ϕ es satisfacible}.

Ejercicio

Demuestre que NEG-HORN-SAT puede ser solucionadoeficientemente.

IIC2213 – Introduccion a la Complejidad Computacional 98 / 111

Page 99: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad: Espacio

Para recordar:

Facil de demostrar : PTIME ⊆ NP ⊆ EXPTIME.No tan facil de demostrar : PTIME ( EXPTIME.Aun sin resolver : ¿PTIME ( NP?

¿Nos basta con estas clases?

◮ No, en algunos casos tambien es necesario utilizar clasesdefinidas en termino del espacio utilizado.

IIC2213 – Introduccion a la Complejidad Computacional 99 / 111

Page 100: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Espacio utilizado en una Maquina de Turing

Para introducir la nocion de espacio utilizado en una MT tenemosque distinguir entre:

◮ el espacio ocupado por la entrada, y

◮ el espacio necesario para procesar la entrada.

Para hacer esta distincion utilizamos MT con dos cintas:

◮ Cinta para la entrada: Solo de lectura.

◮ Cinta de trabajo: Como en una MT usual.

El espacio utilizado se mide en terminos de las celdas visitadas enla cinta de trabajo.

IIC2213 – Introduccion a la Complejidad Computacional 100 / 111

Page 101: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Maquinas de Turing con cinta de trabajo

Definicion

Maquina de Turing con cinta de trabajo: (Q,A, q0, δ,F )

◮ Q es un conjunto finito de estados.

◮ A es un alfabeto tal que B 6∈ A.

◮ q0 es el estado inicial (q0 ∈ Q).

◮ F es un conjunto de estados finales (F 6= ∅).

◮ δ es una funcion parcial:

δ : Q × (A ∪ {B})× (A ∪ {B}) →

Q × {←,→}× (A ∪ {B})× {←,→}.

Suponemos que el dominio de δ no es vacıo.

IIC2213 – Introduccion a la Complejidad Computacional 101 / 111

Page 102: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Espacio utilizado en una MT

Dada una MT determinista M con alfabeto A que para en todaslas entradas:

◮ espacioM(w): Numero de celdas distintas visitadas en la cintade trabajo de M al procesar w .

Definicion

Dado un numero natural n:

sM(n) = max{ espacioM(w) | w ∈ A∗ y |w | = n}.

sM : Espacio utilizado en la ejecucion de M en el peor caso.

IIC2213 – Introduccion a la Complejidad Computacional 102 / 111

Page 103: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Espacio utilizado para resolver un problema

Definicion

Un lenguaje L puede ser aceptado en espacio s si es que existe unaMT determinista M tal que:

◮ M para en todas las entradas.

◮ L = L(M).

◮ sM es O(s).

El espacio requerido para computar una funcion f se define de lamisma forma.

◮ En este caso, usualmente se supone que la maquina tiene unatercera cinta donde escribe el resultado. El espacio utilizado semide solo considerando las celdas en la cinta de trabajo.

IIC2213 – Introduccion a la Complejidad Computacional 103 / 111

Page 104: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad: Espacio

Definicion

Dado un alfabeto A, DSPACE(s) se define como el conjunto detodos los lenguajes L ⊆ A∗ que pueden ser aceptados en espacio s.

Tres clases fundamentales:

LOGSPACE = DSPACE(log n)

PSPACE =⋃

k∈N

DSPACE(nk)

EXPSPACE =⋃

k∈N

DSPACE(2nk

)

IIC2213 – Introduccion a la Complejidad Computacional 104 / 111

Page 105: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Relacion entre clases de complejidad

¿Cual es la relacion entre las clases de complejidad que acabamosde definir?

La relacion es mas compleja:

LOGSPACE ⊆ PTIME ⊆ NP ⊆ PSPACE ⊆

EXPTIME ⊆ EXPSPACE.

Tambien se sabe que: LOGSPACE ( PSPACE ( EXPSPACE.

Y todavıa nos faltan las clases no deterministas ...

IIC2213 – Introduccion a la Complejidad Computacional 105 / 111

Page 106: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad no deterministas: Espacio

Notacion

Dada una MT no determinista M con alfabeto Σ:

◮ espacioM(w): Numero mınimo de celdas distintas visitadas enla cinta de trabajo de M, entre todas las ejecuciones de Mque aceptan w.

Solo esta definido para palabras aceptadas por M.

IIC2213 – Introduccion a la Complejidad Computacional 106 / 111

Page 107: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad no deterministas: Espacio

Definicion

Dado un numero natural n:

sM(n) = max{1} ∪

{ espacioM(w) | w ∈ Σ∗, |w | = n y M acepta w}.

¿Por que incluimos {1} en la definicion?

IIC2213 – Introduccion a la Complejidad Computacional 107 / 111

Page 108: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de complejidad no deterministas: Espacio

Definicion

Un lenguaje L es aceptado en espacio s por una MT M nodeterminista si:

◮ L = L(M).

◮ sM es O(s).

IIC2213 – Introduccion a la Complejidad Computacional 108 / 111

Page 109: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Clases de Complejidad no deterministas: Espacio

Definicion

NSPACE(s) se define como el conjunto de todos los lenguajes quepueden ser aceptados en espacio s por alguna MT no determinista.

Dos clases fundamentales:

NLOGSPACE = NSPACE(log n)

NPSPACE =⋃

k∈N

NSPACE(nk)

IIC2213 – Introduccion a la Complejidad Computacional 109 / 111

Page 110: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Relacion entre clases de complejidad

¿Cual es la relacion entre las clases de complejidad que definimos?

Se sabe que: PSPACE = NPSPACE.

La relacion final:

LOGSPACE ⊆ NLOGSPACE ⊆ PTIME ⊆ NP ⊆ PSPACE ⊆

EXPTIME ⊆ EXPSPACE

IIC2213 – Introduccion a la Complejidad Computacional 110 / 111

Page 111: Introducción a la Complejidad Computacionalmarenas.sitios.ing.uc.cl/iic2213-11/clases/complejidad.pdf · Complejidad Computacional Objetivo: Medir la complejidad computacional de

Para terminar: Un poco de intuicion

Ejercicio

Determine en que clases de complejidad viven los siguientesproblemas.

1. Dado un grafo dirigido G y nodos a, b, determinar si existe uncamino de a a b.

2. El mismo problema que en 1. pero ahora suponiendo que G esuna relacion de sucesor.

3. Determinar si un conjunto de clausulas de Horn es satisfacible.

IIC2213 – Introduccion a la Complejidad Computacional 111 / 111