Академический Документы
Профессиональный Документы
Культура Документы
Complejidad Computacional
Introducción
Algoritmos y Complejidad
Complejidad Computacional Clases de Complejidad
Clases P y NP
Pablo R. Fillottrani
Algoritmos de aproximación
Clasificación de problemas
I no solo problemas con respuestas difíciles son intratables. Otro I esta evidencia empírica ha permitido acordar (una especie de
problema intratable es el denominado MONKEY PUZZLE, una tesis de Turing-Church para la complejidad) que si un problema
especie particular de rompecabezas admite una solución polinomial entonces se trata de un problema
tratable; en caso contrario se lo considera intratable
I el límite de tratabilidad entre algoritmos polinomiales y
super-polinomiales es arbitrario, pero mayoritariamente
aceptado. Por ejemplo, 1, 00001n o nlog2 n serían intratables,
mientras que n10000 o 100000000000n sería tratables
I el punto es que estas funciones extremas raramente aparecen
I si se tiene un tablero de n × n, no se conoce algoritmo mejor que en casos reales como tiempo de ejecución de algoritmos
probar todas las permutaciones posibles para resolverlo, esto es I además, problemas como PROGRAMACIÓN LINEAL, con
Ω(n!) soluciones eficientes en general pero no polinomiales en el peor
I para n = 5, generando un millón de configuraciones por caso (Algoritmo Simplex), se demostraron tener solución
segundo, se tardaría 490.000 millones de años en resolverlo polinomial.
Algoritmos y Complejidad Algoritmos y Complejidad
Introducción Introducción
Clasificación de problemas Clasificación de problemas
I esto significa que si suponemos que se ejecutan k instrucciones I supongamos que tenemos en la actualidad una computadora en
por microsegundo, los algoritmos tardan la que ejecutamos distintos algoritmos, analizaremos cuál es la
ventaja de adquirir una computadora más poderosa
Conceptos básicos
I sea Σ el alfabeto en el que estan codificadas las instancias a un
determinado problema de decisión Π
I con el objetivo de simplificar la clasificación, sólo se considerarán I el conjunto Σ∗ está particionado en tres clases: el conjunto YΠ
problemas de decisión, ie aquellos que tienen como respuesta sí de las cadenas que codifican instancias cuya respuesta es sí; el
o no conjunto NΠ de las cadenas que codifican instancias cuya
I los problemas que no son de decisión se analizan en forma respuesta es no; y RΠ el conjunto de cadenas que no codifican
separada, pero la mayoría se puede reducir a algún problema de ninguna instacia
decisión.
I a pesar de esta clasificación el espectro de problemas sigue
siendo muy amplio. Se establecerá una asociación entre
problemas de decisión y lenguajes formales, de forma de
estudiar éstos últimos que son objetos más fáciles de tratar
matemáticamente.
I se usará como modelo de computación a las máquinas de Turing, I sea T una MTD, y NT una MTND. La computación T (x ) se dice
con alfabeto Σ que siempre contiene el caracter en blanco t que acepta a x si T (x ) es finita y termina en el estado aceptador
q1 . La computación NT (x ) se dice que acepta a x si existe en el
I una máquina de Turing determinística de una cinta (MTD) es una
árbol T (x ) un camino finito cuya hoja está en el estado
tupla
aceptador q1 .
hQ , Σ, δ , q0 , q1 i
I el conjunto de entradas que T (o NT ) acepta se denomina el
donde q0 , q1 ∈ Q y δ : Q × Σ −→ Q × Σ × {−1, 0, 1} lenguaje aceptado por T (o NT ), y se nota L(T ) (o L(NT ))
I una máquina de Turing no determinística de una cinta (MTND) es I las propiedades siguientes ha sido vistas en materias previas
una tupla
hQ , Σ, ∆, q0 , q1 i Teorema
Sea NT una MTND. Siempre existe una MTD T tal que L(NT ) = L(T )
donde q0 , q1 ∈ Q y ∆ es un conjunto finito de tuplas de y si x es aceptada por NT en t pasos, entonces x es aceptada por T
Q × Σ × Q × Σ × {−1, 0, 1}. en c t pasos, para alguna constante positiva c.
Lema
Si un lenguaje L es decidible entonces LC también es decidible.
Algoritmos y Complejidad Algoritmos y Complejidad
Introducción Introducción
Conceptos básicos Conceptos básicos
Clases de Complejidad
Ejemplos
I las clases de lenguajes son conjuntos arbitrarios de lenguajes
que no necesariamente comparten propiedades computacionales I sean {Ti } el conjunto de todas las máquinas de Turing
I para que las clases de lenguajes sean clases de complejidad se determinísticas
deben definir los predicados π(·) en base a medidas de I se define TIME la medida Φ = {TIMEi }, la cantidad de pasos de
complejidad dinámicas la MTD Ti en cada entrada x; entonces Φ es una medida de
I sea {Pi } un conjunto de algoritmos. Una medida de complejidad complejidad dinámica
dinámica Φ es un conjunto de funciones Φi definidas sobre los I sea k la medida Φ = {k} donde k es una función constante, k no
naturales, que además cumplen con:
cumple con la primer condición
I el dominio de P coincide con el de Φ .
i i
I para todo i , x , m ∈ N es computable si Φ (x ) = m.
i
I sea VALOR la medida Φ = {VALORi }, el resultado que deja la
MT Ti en la cinta al finalizar cada computación; VALOR no
I la primer condición impide mezclar lenguajes decidibles y no
satisface la segunda restricción
decidibles. La segunda condición es pide que sea computable la
comparación del valor de la medida en cada instancia (y no que I sea SPACE 1 la medida Φ = {SPACEi1 }, la cantidad de celdas
la función sea computable para todas las instancias) que la MTD Ti usa en cada cada computación; SPACE1 no
satisface la primer restricción.
Algoritmos y Complejidad Algoritmos y Complejidad
Clases de Complejidad Clases de Complejidad
Clase P
I las clases de complejidad determinísticas satisfacen las
siguientes propiedades
I como nuestro objetivo es formalizar el concepto tratabilidad, y
Lema habíamos establecido que los algoritmos polinomiales
Para toda función tiempo-construíble t, siempre vale que constituyen un buena base para esto, entonces tiene sentido
DTIME [t (n)] = coDTIME [t (n)]. considerar a la siguiente clase:
Lema
P = ∪k ∈N DTIME [nk ]
Sea t una función tiempo-construíble tal que t (n) ≥ n, y L1 , L2 ⊂ Σ∗
tal que |L1 4 L2 | < ℵ0 (su diferencia es finita). Entonces
L1 ∈ DTIME [t (n)] si y solo si L2 ∈ DTIME [t (n)]. I la mayoría de los problemas computacionales que se presentan
I las clases de complejidad no determinísticas satisfacen la en la práctica pertenecen a esta clase, como GCD,
segunda propiedad, pero es un problema abierto determinar si MULTIPLICACIÓN DE MATRICES, RECORRIDO DE UN
satisfacen la primera GRAFO, CAMINO DE EULER, etc.
Demostración.
Sea F satisfacible. Si existen simultaneamente caminos de p a ¬p y
de ¬p a p entonces p ≡ ¬p es consecuencia de la formula, con lo que
la formula es insatisfacible.
Sea G(F ) tal que ningún CFC contiene literales complementarios. Se
construye una asignación de valores de verdad que hace a F
satisfacible, asignando a todos los literales de un mismo CFC los
mismos valores de verdad. Si existe camino de p a ¬p entonces p es
falso, los restante predicados se asignan arbitrariamente.
Teorema
Un grafo no dirigido G tiene una 2-coloración si y solo si F (G) es I identificando la clase P con el concepto de tratabilidad, se estaría
satisfacible. en las siguientes condiciones, con algunos problemas
probadamente tratables y otros probadamente intratables:
Demostración.
⇐) Si G tiene una 2-coloración, entonces se crea una asignación de
valores de verdad para cada pi , arbitrariamente tomando un color
como verdadero y otro como falso. Esta asignación satisface F (G).
⇒) Si F (G) es satisfacible, a partir de la asignación de valores de
verdad se asigna un color a cada ni tal que pi es verdadero, y el otro
color al resto. Esto forma una 2-coloración válida.
Clase NP
I el teorema 2 solo establece la equivalencia en cuanto al poder
I en forma análoga a P, se puede definir su contraparte no computacional; pero el tiempo que usa es exponencial
determinística NP: I como consecuencia se tiene un conjunto de problemas cuya
tratabilidad o no se desconoce:
NP = ∪k ∈N NTIME [nk ]
I esta brecha es inaceptablemente muy grande, e impide de I es importante conocer las propiedades de la clase NP para tratar
clasificar a importantes problemas como tratable o intratable de entender mejor el problema de su tratabilidad
I desafortunadamente existe muchos problemas prácticos con I una característica interesante es que todos estos problemas
estas características: tienen soluciones polinomiales no parecen requerir, como parte de su naturaleza, construir
determinísticas, pero su máxima cota inferior es lineal soluciones parciales: empaquetamientos parciales, recorridos
I por ejemplo: parciales, asignaciones de valores de verdad parciales, etc.
Cuando una de estas soluciones parciales se detecta incorrecta,
I EMPAQUETAMIENTO BIDIMENSIONAL
se debe realizar backtracking en busca de otra alternativa
I VIAJANTE
I CIRCUITO HAMILTONIANO I por lo tanto es difícil decidir si existe o no una solución; es decir
I MOCHILA con coeficientes enteros dar la respuesta sí o no
I SATISFACILIDAD en el cálculo de predicados I en cambio es interesente notar que en el caso que la respuesta
I 3-COLOR de un grafo no dirigido
sea sí es fácil convencer a alguien de ello. Esto es lo que se
I para ninguno de ellos se ha encontado una solución tratable, denomina certificado, cuyo tamaño siempre puede ser acotado
pero tampoco se ha demostrado que esta solución no existe por Θ(n)
Teorema
Un lenguaje L pertenece a NP si y solo si existe un lenguaje
I existe otra forma de ver este hecho: supongamos que Lcheck ∈ P tal que
disponemos de una moneda mágica que se usa en el proceso de
L = {x : ∃y hx , y i ∈ Lcheck y |y | ≤ p(|x |)}
bactracking para determinar en cada decisión cuál es el camino
correcto siendo p un polinomio.
I la moneda siempre “adivina” la solución. En este caso la el
algoritmo es polinomial Demostración.
Transformando una máquina de Turing.
Clase NPC
I por ejemplo I como P es cerrada c.r. a ≤p , el lema 8 permite suponer que los
I para mostrar que SAT∈ NP es suficiente con dar un algoritmo lenguajes NP-completos c.r. a ≤p (NPC) son candidatos a
determinístico polinomial para chequear si una asignación de lenguajes separadores, es decir a pertenecer a NP − P
valores de verdad hace verdadera una fbf. I entonces, para averiguar si P = NP es suficiente con establecer
I para mostrar que la versión de decisión del problema VIAJANTE
el status de un problema en NPC: si uno de estos problemas
(dado un grafo y un k encontrar un circuito en el grafo de longitud
menor o igual a k ) pertenece a NP se da un algoritmo polinomial tiene solución polinomial, entonces todos los NP tienen solución
para controlar si un dado circuito es un circuito de viajante con polinomial; si se demuestra que no puede existir una solución
longitud menor o igual a k polinomial para alguno de ellos, entonces ninguno de NPC la
I se puede mostrar que 3-COLOR∈ NP dando un algoritmo tiene
polinomial para controlar que una asignación de colores de un
I el destino de un problema NPC es el destino de todos: todos son
grafo asigne colores diferentes a nodos adyacentes.
tratables o todos son intratables.
I por lo tanto es interesante conocer cuáles problemas pertenecen
a NPC
Teorema de Cook
Demostración (cont.)
La fórmula F (T , x ) está formada por las siguientes proposiciones:
Teorema (Cook/Levin)
I para cada paso t , 0 ≤ t ≤ p(|x |), para cada estado
SAT es un problema en NPC.
qe , 1 ≤ e ≤ |Q |, existe Qet para representar que en el paso t la
Demostración. computación T (x ) está en el estado e
Primero se prueba que SAT∈ NP (usando el teorema 16 o mostrando I para cada paso t , 0 ≤ t ≤ p(|x |), para cada celda
un algoritmo no determinístico polinomial). Luego se toma un cs , 1 ≤ s ≤ p(|x |), existe Lts para representar que en el paso t la
lenguaje arbitrario L ∈ NP, y se muestra que L ≤p SAT. Para esto se computación T (x ) tiene la cabeza lectora en la posición s.
define primero la reducción: sea T = hQ , Σ, ∆, q0 , q1 i la MTND que I para cada paso t , 0 ≤ t ≤ p(|x |), para cada celda
acepta a L, y x ∈ Σ∗ . Como L ∈ NP sabemos que T (x ) para cs , 1 ≤ s ≤ p(|x |), para cada letra li ∈ Σ ∪ {t} (o sea
(aceptando o rechazando) en tiempo polinomial p(|x |). l0 = 0, l1 = 1, l2 = t), existe Pst ,i para representar que en el paso
A continuación se define una fbf F (T , x ) tal que F (T , x ) sea t la computación T (x ) tiene en la celda cs la letra li .
satisfacible si y solo si T (x ) termina en el estado aceptador.
Algoritmos y Complejidad Algoritmos y Complejidad
Clases P y NP Clases P y NP
Clase NPC Clase NPC
Demostración (cont.)
Las subfórmulas A, B , C tienen la siguiente forma:
Demostración (cont.)
^ _ ^
A partir de estas proposiciones, se define A = [( Qet ) ∧ (Qet → ¬Qet 0 )]
0≤t ≤p(|x |) 1≤e≤|Q | 1≤e,e0 ≤|Q |
e6=e0
F (T , x ) = A ∧ B ∧ C ∧ D ∧ E ∧ F
^ _ ^
B = [( Lts ) ∧ (Lts → ¬Lts0 )]
donde A, B , C describen el comportamiento general de las MTND; D
0≤t ≤p(|x |) 1≤s≤p(|x | 1≤s,s0 ≤p(|x |)
describe la configuración inicial de T (x ); E describe el s6=s0
comportamiento particular de T determinado por sus tuplas ∆; y F ^ ^
describe la configuración aceptadora de T (x ). C = [(Pst ,0 ∨ Pst ,1 ∨ Pst ,2 ) ∧ ( (Pst ,i → ¬Pst ,i 0 )]
0≤t ≤p(|x |) 1≤i ,i 0 ≤2
1≤s≤p(|x |) i 6=i 0
Demostración (cont.)
Las subfórmulas D , E , F tienen la siguiente forma:
Demostración (cont.)
^ ^
D = ( Pj0,ij ) ∧ ( Pj0,2 ) ∧ Q00 ∧ L01 Se puede mostrar que F (T , x ) tiene una longitud polinomial en |x |, ya
1≤j ≤|x | |x |<j ≤p(|x |) que la su longitud es cúbica en p(|x |).
Además, vale que si F (T , x ) es satisfacible entonces T (x ) acepta a x
(Qit ∧ Lts ∧ Pst ,a → Qjt +1 ∧ Lts++1m ∧ Pst +
^ _
1
E = [ ,b )] y que si T (x ) acepta a x entonces F (T , x ) es satisfacible. (Los
0≤t ≤p(|x |) hqi ,pa ,qj ,pb ,mi∈∆
1≤s≤p(|x |) detalles de estos dos últimos puntos queda como ejercicio.)
_ Esto finaliza la prueba que L ≤p SAT, y como L ∈ NP es arbitrario,
F = Q1t entonces SAT es NP-completo.
1≤t ≤p(|x |)
I por ejemplo, si
siempre que P 6= NP
Demostración.
2
Por el teorema de Savitch, NSPACE [nk ] ⊆ DSPACE [nk ].
Algoritmos y Complejidad Algoritmos y Complejidad
Otras clases de complejidad Otras clases de complejidad
Clases L y NL
I existen problemas PSPACE-completos, que según el lema I es posible definir relaciones de reducibilidad de granularidad más
anterior serían candidatos a lenguajes separadores en PSPACE fina que la reducibilidad polinomial, en particular para estudiar la
y todas las clases inferiores complejidad en espacio logarítmico
I igualmente, no se sabe si estos problemas pertenecen a P o no. I la reducibilidad logarítmica se define: dados dos lenguajes L1 , L2 ,
I son problemas PSPACE-completos: L1 se dice logarítmicamente reducible a L2 si existe un función f
I TQBF el problema de determinar si una fórmula booleana computable en espacio logarítmico tal que x ∈ L1 ↔ f (x ) ∈ L2 , y
totalmente cuantificada es verdadera o falsa se nota L1 ≤l L2
I saber si un jugador tiene una estrategia ganadora en un grafo I la reducibilidad logarítmica cumple con todas las propiedades
generado por el juego de GEOGRAFIA GENERALIZADO.
generales de las funciones de reducibilidad vistas anteriormente
I de esta forma se pueden definir clases y lenguajes completos
dentro de la clase P
Algoritmos y Complejidad Algoritmos y Complejidad
Otras clases de complejidad Otras clases de complejidad
L ⊆ NL = coNL ⊆ P ⊆ PSPACE
I clases probabilísticas
I y por el teorema de la jerarquia en espacio se sabe que I jerarquía polinomial en tiempo
L ⊂ PSPACE, por lo que también alguna de estas inclusiones
I clases de computación paralela
necesariamente debe ser estricta, sin saber cuál
I jerarquía aritmética de incomputabilidad
I la clase en tiempo logarítmico LOGTIME no constituye una clase
de problemas interesante ya que son problemas que se
resuelven sin ni siquiera leer totalmente la entrada. A esta clase
pertenece BÚSQUEDA BINARIA
Algoritmos y Complejidad Algoritmos y Complejidad
Algoritmos de aproximación Algoritmos de aproximación
Algoritmos de aproximación
I un algoritmo heurístico, o simplemente heurística, es un
procedimiento que eventualmente puede producir una solución
buena, o incluso optimal, a un problema; pero también puede
producir una mala solución o incluso ninguna
I el hecho de conocer que un problema es NP-completo es I la heurística puede ser determinística o probabilística. La
instructivo principal diferencia con los algoritmos Monte Carlo es que no
I puede ser útil para no perder tiempo en búsqueda de un está garantizada una baja probabilidad de error
algoritmo eficiente que probablemente no exista I un algoritmo de aproximación es un procedimiento que siempre
I sin embargo, esto no significa que el problema no se pueda resulta en una solución al problema, aunque puede fallar en
solucionar encontrar la solución optimal
I para que sea útil, debe ser posible calcular una cota o sobre la
diferencia, o sobre el cociente entre la solución optimal y la
devuelta por el algoritmo.
Teorema
f ≥ opt /2.
Vale que opt
Algoritmo de aproximación
Demostración.
PROCEDURE MochilaA(w[1..n],v[1..n],W) f = opt. Sino,
Si todos los objetos caben en la mochila, entonces opt
maxElto::=max{v[i], 1<=i<=n}
existe k el menor índice tal que ∑ki=1 w [i ] > W . Sea opt 0 el valor de
greedy::=MochilaG(w,v,W)
una carga óptima con W 0 = ∑ki=1 w [i ]. Vale que opt 0 = ∑ki=1 v [i ] y
RETURN max{maxElto, greedy}
como W 0 > W , opt 0 > opt. Luego
Algoritmos y Complejidad
Algoritmos de aproximación