Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Complejidad 1x1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 99

Algoritmos y Complejidad

Algoritmos y Complejidad
Complejidad Computacional

Pablo R. Fillottrani

Depto. Ciencias e Ingeniería de la Computación


Universidad Nacional del Sur

Primer Cuatrimestre 2017


Algoritmos y Complejidad

Complejidad Computacional

Introducción

Clases de Complejidad

Clases P y NP

Problema P vs. NP

Otras clases de complejidad

Algoritmos de aproximación
Algoritmos y Complejidad
Introducción
Objetivos

Objetivos

I el concepto de correctitud de un algoritmo debe no sólo incluir el


hecho de que el algoritmo realice lo especificado, sino también
que lo realice con los recursos disponibles
I los recursos más limitados en la producción de software son:
I el tiempo de ejecución (medido en cantidad instrucciones
elementales)
I la memoria para el almacenamiento de los datos (medida en
general en cantidad de variables elementales).
I se denomina a estas funciones medidas de complejidad
Algoritmos y Complejidad
Introducción
Objetivos

I las medidas de complejidad interesantes no pueden ser estáticas


(constantes para todas las instancias), sino dinámicas (dependen
de la instancia a la cual se aplica el algoritmo)
I pero entonces no será factible estudiarlas para cada instancia en
particular; se definen para todas las instancias de un
determinado tamaño, en el peor caso
I el estudio de la eficiencia de los algoritmos no puede ser atacado
por el argumento “las computadoras del futuro serán
increíblemente rápidas y por lo tanto no interesará que el
algoritmo sea eficiente”
I el ejemplo de los números de Fibonacci; o el hecho de que sin
una mejora algorítmica resolver el problema del viajante para
cien ciudades toma cien millones de años; o la factorización de
un número de 300 dígitos que tarda un millón de años, refutan
esta hipótesis
Algoritmos y Complejidad
Introducción
Objetivos

I para resolver estos problemas se necesita una mejora en los


algoritmos; pero no una pequeña mejora sino una mejora en
órdenes de magnitud
I por ejemplo, una búsqueda secuencial en un arreglo ordenado
es de Θ(n) en el peor caso; una búsqueda binaria es de
Θ(log n). Para instancias pequeñas la diferencia puede no ser
notable, pero para n = 109 la diferencia está entre esperar un
año o un minuto por el resultado
I dado un algoritmo que resuelve un problema, es razonable (y
aconsejable) preguntarse si no existirá un algoritmo más eficiente
para el mismo problema
I el objetivo fundamental de la Complejidad Computacional es
clasificar los problemas de acuerdo a su tratabilidad, tomando el
o los algoritmos más eficientes para resolverlos
Algoritmos y Complejidad
Introducción
Objetivos

I esto es, poder determinar las respestuas a las siguientes


preguntas:
¿Cuán tratable es el problema?
Si el problema es tratable, ¿es el algoritmo suficientemente
eficiente?
I si se demuestra que el problema no admite soluciones mejores,
entonces se puede afirmar que el algoritmo es eficiente (salvo
constantes ocultas!!)
Algoritmos y Complejidad
Introducción
Clasificación de problemas

Clasificación de problemas

I de acuerdo al estado de conocimiento de sus algoritmos


I cerrado
I abierto
I de acuerdo a los recursos indispensables para su solución
I tratables
I intratables
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I un problema se dice cerrado si se han encontrado algoritmos que


lo resuelven y se ha demostrado que esos algoritmos son
óptimos en cuanto al Θ() del tiempo de ejecución
I BÚSQUEDA en un arreglo ordenado y ORDENAMIENTO de un
arreglo son problemas cerrados
I ÁRBOL DE CUBRIMIENTO MINIMAL para un grafo es un
problema abierto, dado que su cota inferior demostrada es de
Θ(a), mientras que el mejor algoritmo conocido no es lineal
(pero mejor que Θ(a log n))
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I para cerrar un problema se puede hacer:


I encontrar un algoritmo asintóticamente mejor que los que se
conocen.
I demostar una cota asintóticamente superior de las que se
conocen.
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I en general, los distintos grados de tratabilidad son muy subjetivos


(varían mucho de acuerdo al modelo computacional, los recursos
disponibles, las variantes de las estructuras de datos, etc.)
I por lo tanto un objetivo primario del estudio de la complejidad es
definir cuáles problemas son tratables, y cuáles no. Recién
después de esto se pueden considerar distintos grados de
tratabilidad o intratabilidad
I por ejemplo, se puede afirmar que la mayoría de los problemas
vistos en la materia son tratables: o sea tienen solución para
instancias grandes, y una mejora algorítmica o una mejora en el
HW produce una gran ampliación en el conjunto de instancias
que se pueden resolver
I en cambio, hay problemas que no son tratables: el problema de
las torres de Hanoi, o el problema del viajante, en la práctica sólo
se resuelven para instancias pequeñas.
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I no solo problemas con respuestas difíciles son intratables. Otro


problema intratable es el denominado MONKEY PUZZLE, una
especie particular de rompecabezas

I si se tiene un tablero de n × n, no se conoce algoritmo mejor que


probar todas las permutaciones posibles para resolverlo, esto es
Ω(n!)
I para n = 5, generando un millón de configuraciones por
segundo, se tardaría 490.000 millones de años en resolverlo
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I esta evidencia empírica ha permitido acordar (una especie de


tesis de Turing-Church para la complejidad) que si un problema
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
en casos reales como tiempo de ejecución de algoritmos
I además, problemas como PROGRAMACIÓN LINEAL, con
soluciones eficientes en general pero no polinomiales en el peor
caso (Algoritmo Simplex), se demostraron tener solución
polinomial.
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I los algoritmos de O (nk ) son considerados de tiempo razonable a


pesar del k y de las posibles constantes ocultas
I para el espacio de memoria se tiene que tener más cuidado,
porque ya un espacio polinomial muchas veces es intratable
I las funciones exponenciales y factoriales siempre son intratables
I además, dentro de esta tratabilidad y de esta intratabilidad es
posible distinguir varios grados
I otro tema de investigación actual es la extensión del concepto de
tratabilidad a algoritmos probabilísticos y paralelos. En estos
casos se han propuesto otras formalizaciones
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I para tener una mejor idea de la diferencia entre tratable e


intratable:
n
funcion
10 50 100 300 1000
5n 50 250 500 1500 5000
n log2 n 33 282 665 2469 9966
un millón
n2 100 2500 10000 90000 (7 díg.)
un millón 27 millones mil millones
n3 1000 125000 (7 díg.) (8 díg.) (10 díg.)
2n 1024 16 díg. 31 díg. 91 díg. 302 díg.
3600000
n! (7 díg.) 65 díg. 161 díg. 623 díg. inimaginable
nn 11 díg. 85 díg. 201 díg. 744 díg. inimaginable

I para comparación: el número de protones en el universo es de


79 dígitos, y el número de microsegundos transcurridos desde el
Big Bang es de 24 dígitos
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I esto significa que si suponemos que se ejecutan k instrucciones


por microsegundo, los algoritmos tardan

n
funcion
10 20 50 100 300
1/10000 1/2500 1/400 1/100 9/100
n2 segundo segundo segundo segundo segundo
n5 0, 1 seg. 3, 2 seg. 5, 2 min. 2, 8 hs. 28, 1 días
1/1000 400 billones
2n segundo 1 seg. 35, 7 años de siglos −−−
3,3 billones
nn 2, 8 hs. años −−− −−− −−−

I para comparación: se considera que el Big Bang ocurrió hace


aproximadamente 15.000 millones de años
Algoritmos y Complejidad
Introducción
Clasificación de problemas

I supongamos que tenemos en la actualidad una computadora en


la que ejecutamos distintos algoritmos, analizaremos cuál es la
ventaja de adquirir una computadora más poderosa

instancia máxima posible de resolver


con distintas computadoras
tiempo algoritmo actual 100× 1000×
Θ(n) A 100 × A 1000 × A
Θ(n2 ) B 10 × B 31, 6 × B
Θ(2n ) C C + 6, 64 C + 9, 97

I esto demuestra que los problemas intratables no se resuelven


comprando hardware; es una característica intrínsica del
problema el hecho de que solo se resuelvan instancias pequeñas
Algoritmos y Complejidad
Introducción
Conceptos básicos

Conceptos básicos

I con el objetivo de simplificar la clasificación, sólo se considerarán


problemas de decisión, ie aquellos que tienen como respuesta sí
o no
I los problemas que no son de decisión se analizan en forma
separada, pero la mayoría se puede reducir a algún problema de
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.
Algoritmos y Complejidad
Introducción
Conceptos básicos

I sea Σ el alfabeto en el que estan codificadas las instancias a un


determinado problema de decisión Π
I el conjunto Σ∗ está particionado en tres clases: el conjunto YΠ
de las cadenas que codifican instancias cuya respuesta es sí; el
conjunto NΠ de las cadenas que codifican instancias cuya
respuesta es no; y RΠ el conjunto de cadenas que no codifican
ninguna instacia
Algoritmos y Complejidad
Introducción
Conceptos básicos

I se nota YΠ como el lenguaje asociado a Π


I ejemplo: sea Π el problema de decidir si un número es primo,
con las entradas dadas en binario; el lenguaje asociado es
YΠ = {10, 11, 101, 111, . . .}
I queda establecida la correspondencia
Problemas de Decisión ⇐⇒ Lenguajes Formales
I por lo tanto se clasificarán lenguajes formales, en lugar de
problemas de decisión
Algoritmos y Complejidad
Introducción
Conceptos básicos

I el alfabeto Σ de estos lenguajes no es importante para la


clasificación, siempre y cuando contenga más de dos caracteres
Teorema 1
Sean Σ y Γ dos alfabetos tales que Γ ≥ 2. Entonces existe una
función f : Σ∗ −→ Γ∗ biyectiva computable en tiempo lineal tal que
|f (x )| = dlog|Γ| |Σ|e|x |.

Demostración.
Se hace una codificación de todos los caracteres de Σ en secuencias
de caracteres de Γ.
I esto permite fijar como alfabeto estándar a Σ = {1, 0, t},
cualquier lenguaje en otro alfabeto puede ser traducido a este en
forma inmediata
Algoritmos y Complejidad
Introducción
Conceptos básicos

I se usará como modelo de computación a las máquinas de Turing,


con alfabeto Σ que siempre contiene el caracter en blanco t
I una máquina de Turing determinística de una cinta (MTD) es una
tupla
hQ , Σ, δ , q0 , q1 i
donde q0 , q1 ∈ Q y δ : Q × Σ −→ Q × Σ × {−1, 0, 1}
I una máquina de Turing no determinística de una cinta (MTND) es
una tupla
hQ , Σ, ∆, q0 , q1 i
donde q0 , q1 ∈ Q y ∆ es un conjunto finito de tuplas de
Q × Σ × Q × Σ × {−1, 0, 1}.
Algoritmos y Complejidad
Introducción
Conceptos básicos

I sea T una MTD, y NT una MTND. La computación T (x ) se dice


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
árbol T (x ) un camino finito cuya hoja está en el estado
aceptador q1 .
I el conjunto de entradas que T (o NT ) acepta se denomina el
lenguaje aceptado por T (o NT ), y se nota L(T ) (o L(NT ))
I las propiedades siguientes ha sido vistas en materias previas
Teorema 2
Sea NT una MTND. Siempre existe una MTD T tal que L(NT ) = L(T )
y si x es aceptada por NT en t pasos, entonces x es aceptada por T
en c t pasos, para alguna constante positiva c.
Algoritmos y Complejidad
Introducción
Conceptos básicos

I un lenguaje L ⊆ Σ∗ es aceptable si existe una MTD T tal que


L = L(T )
I un lenguaje L ⊆ Σ∗ es decidible si existe una MTD T tal que
L = L(T ) y además, para todo x ∈ Σ∗ T (x ) es finita

Lema 3
Si un lenguaje L es decidible entonces L es aceptable.

Lema 4
Si un lenguaje L es decidible entonces LC también es decidible.
Algoritmos y Complejidad
Introducción
Conceptos básicos

Lema 5
Un lenguaje L es decidible si y solo si L y LC son aceptables.

I también se demuestra que existen problemas decidibles,


aceptables pero no decidibles y ni aceptables ni decidibles
Algoritmos y Complejidad
Introducción
Conceptos básicos

I para comparar lenguajes, se usarán funciones de reducibilidad:


dados dos lenguajes A, B ⊆ Σ∗ , una función computable
f : A −→ B es una función de reducibilidad si para todo x ∈ Σ∗
vale x ∈ A ↔ f (x ) ∈ B
I visto desde el punto de vista de los problemas de decisión, la
función de reducibilidad es una transformación de instancias de
un problema en instancias de otro problema tal que la solución al
segundo es la solución al primero (una reducción entre
problemas)
I las funciones de reducibilidad permiten definir una comparación
entre lenguajes: se dice que A ≤m B si existe una función de
reducibilidad de A hacia B
I la relación ≤m es una relación de pre-orden.
Algoritmos y Complejidad
Introducción
Conceptos básicos

Lema 6
Si L1 ≤m L2 y L1 no es decidible, entonces L2 no es decidible.

Lema 7
Sea 0/ ⊂ L1 ⊂ Σ∗ . Entonces para todo lenguaje decidible L2 vale que
L2 ≤m L1 .

I las funciones de reducibilidad arbitrarias, junto con la


comparación ≤m , no son muy útiles porque pueden involucrar
cantidades arbitrarias de recursos para ser computadas.
I en la práctica se definirán distintas restricciones (que la función
sea computable en tiempo polinomial, o espacio logarítmico, etc.)
para definir reducibilidades y comparaciones útiles entre
problemas
Algoritmos y Complejidad
Introducción
Conceptos básicos

I el estudio de la complejidad clasificará los lenguajes decidibles


de acuerdo a la cantidad de recursos necesarios para su
computación.
Algoritmos y Complejidad
Clases de Complejidad

Clases de Complejidad

I si se quiere clasificar problemas, y se identifica a cada problema


con un lenguaje formal, entonces es necesario estudiar clases de
lenguajes
I una clase de lenguaje es un conjunto de lenguajes que cumple
con alguna propiedad, es decir C = {L : L ⊆ Σ∗ y π(L)}
I dadas dos clases de lenguajes C1 y C2 , si se quiere mostrar que
C1 ⊆ C2 entonces es suficiente con probar que para todo L ⊆ Σ∗
si vale π1 (L) entonces también vale π2 (L)
I si además de C1 ⊆ C2 se quiere mostrar que la inclusión es
estricta (C1 ⊂ C2 ), entonces se recurre a buscar un lenguaje
separador que pertenezca a C2 pero no a C1 .
Algoritmos y Complejidad
Clases de Complejidad

I en complejidad, es un problema muy difícil encontrar lenguajes


separadores
I muchas veces es útil la siguiente propiedad

Lema 8
Sean C1 ⊂ C2 dos clases de complejidad tal que C1 es cerrada c.r. a
≤r . Entonces cualquier L ∈ C2 que sea C2 -completo c.r. a ≤r es tal
que L 6∈ C1 .

Demostración.
Se supone por el absurdo que L ∈ C1 , y se contradice el hecho de que
C1 ⊂ C2 .
Algoritmos y Complejidad
Clases de Complejidad

I una clase C es cerrada c.r. a ≤r si para todo L1 ∈ C vale que


L2 ≤r L1 implica L2 ∈ C . Un lenguaje L1 ∈ C es completo c.r. a
≤r si para todo L2 ∈ C vale que L2 ≤r L1
I entonces, si se dan las condiciones del lema pero no se sabe si
C1 ⊆ C2 o C1 ⊂ C2 , los lenguajes C2 -completos son candidatos
a lenguajes separadores
Algoritmos y Complejidad
Clases de Complejidad

I las clases de lenguajes son conjuntos arbitrarios de lenguajes


que no necesariamente comparten propiedades computacionales
I para que las clases de lenguajes sean clases de complejidad se
deben definir los predicados π(·) en base a medidas de
complejidad dinámicas
I sea {Pi } un conjunto de algoritmos. Una medida de complejidad
dinámica Φ es un conjunto de funciones Φi definidas sobre los
naturales, que además cumplen con:
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 la primer condición impide mezclar lenguajes decidibles y no


decidibles. La segunda condición es pide que sea computable la
comparación del valor de la medida en cada instancia (y no que
la función sea computable para todas las instancias)
Algoritmos y Complejidad
Clases de Complejidad

Ejemplos
I sean {Ti } el conjunto de todas las máquinas de Turing
determinísticas
I se define TIME la medida Φ = {TIMEi }, la cantidad de pasos de
la MTD Ti en cada entrada x; entonces Φ es una medida de
complejidad dinámica
I sea k la medida Φ = {k} donde k es una función constante, k no
cumple con la primer condición
I sea VALOR la medida Φ = {VALORi }, el resultado que deja la
MT Ti en la cinta al finalizar cada computación; VALOR no
satisface la segunda restricción
I sea SPACE 1 la medida Φ = {SPACEi1 }, la cantidad de celdas
que la MTD Ti usa en cada cada computación; SPACE1 no
satisface la primer restricción.
Algoritmos y Complejidad
Clases de Complejidad

I sea SPACE 2 la medida Φ = {SPACEi2 }, la cantidad de celdas


que la MTD Ti usa en cada computación que termina, o
indefinido si no termina; SPACE 2 cumple la primer condición
I para la segunda se muestra
Lema 9
Sea T una MTD y x una entrada tal que T (x ) usa a lo sumo h(|x |)
celdas. Entonces o T (x ) para antes de |Σ|h(|x |) |Q |h(|x |) pasos, o
T (x ) no termina.

Demostración.
Basta con considerar el conjunto de configuraciones globales posibles
de la MTD T . Si pasan más de |Σ|h(x ) |Q |h(x ) configuraciones,
entonces necesariamente alguna se repite y por lo tanto la máquina
cicla indefinidamente.
Algoritmos y Complejidad
Clases de Complejidad

I sean {Ti } el conjunto de todas las máquinas de Turing no


determinísticas
I sea NTIME la medida Φ = {NTIMEi }, donde NTIMEi es para
cada Ti (x )
1. el número de pasos del camino más corto que acepta Ti (x ) si
existe al menos uno aceptador
2. el número de pasos del camino más largo que rechaza Ti (x ) si
todos los caminos terminan y son rechazadores
3. indefinido en otro caso
I la medida NTIME así definida cumple con las condiciones de
medida de complejidad dinámica
I la medida NSPACE se define en forma análoga, y también
cumple con las condiciones.
Algoritmos y Complejidad
Clases de Complejidad

I ahora sí se está en condiciones de definir clases de complejidad,


para toda función t : N −→ N:

DTIME [t (n)] = {L : L ⊆ Σ∗ y
∃Ti : L = L(Ti ) ∧ TIMEi (x ) ∈ O (t (|x |))}
DSPACE [t (n)] = {L : L ⊆ Σ∗ y
∃Ti : L = L(Ti ) ∧ SPACEi (x ) ∈ O (t (|x |))}
NTIME [t (n)] = {L : L ⊆ Σ∗ y
∃NTi : L = L(NTi ) ∧ NTIMEi (x ) ∈ O (t (|x |))}
NSPACE [t (n)] = {L : L ⊆ Σ∗ y
∃NTi : L = L(NTi ) ∧ NSPACEi (x ) ∈ O (t (|x |))}
Algoritmos y Complejidad
Clases de Complejidad

I para que estas clases de complejidad tengan sentido (es decir,


agrupen problemas con características computacionales
parecidas) se restringen a funciones t (x ) denominadas
tiempo-construíbles
I las funciones logarítmicas, polinomiales, exponenciales,
factoriales son tiempo construíbles
Algoritmos y Complejidad
Clases de Complejidad

I las clases de complejidad determinísticas satisfacen las


siguientes propiedades
Lema 10
Para toda función tiempo-construíble t, siempre vale que
DTIME [t (n)] = coDTIME [t (n)].

Lema 11
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 las clases de complejidad no determinísticas satisfacen la
segunda propiedad, pero es un problema abierto determinar si
satisfacen la primera
Algoritmos y Complejidad
Clases P y NP
Clase P

Clase P

I como nuestro objetivo es formalizar el concepto tratabilidad, y


habíamos establecido que los algoritmos polinomiales
constituyen un buena base para esto, entonces tiene sentido
considerar a la siguiente clase:

P = ∪k ∈N DTIME [nk ]

I la mayoría de los problemas computacionales que se presentan


en la práctica pertenecen a esta clase, como GCD,
MULTIPLICACIÓN DE MATRICES, RECORRIDO DE UN
GRAFO, CAMINO DE EULER, etc.
Algoritmos y Complejidad
Clases P y NP
Clase P

I en general se está de acuerdo que la clase P representa a los


problemas tratables
I la mayoría de los problemas de esta clase tienen algoritmos con
implementación razonable, a pesar de que el algoritmo
polinomial para ese problema no sea el más conveniente de usar
en la práctica (caso PROGRAMACIÓN LINEAL)
I sin embargo existen ciertos problemas en P que no son
realmente tratables, debido a que:
I el grado k del polinomio es un número grande
I las constantes ocultas en la notación O (·) son altas
I la demostración de pertenencia a P no es constructiva (es decir,
no presenta un algoritmo).
I pero éstos son casos extremos, y se considera a P una
razonable aproximación al concepto de tratabilidad
Algoritmos y Complejidad
Clases P y NP
Clase P

I otra característica interesante de la clase P es el hecho de que


es robusta con respecto al modelo de computación
I esto significa que que la mayoría de los cambios de modelos y
cambios de lenguajes conservan inalterable la clase
I por ejemplo, si se define la clase P en base a MTD de varias
cintas, o en máquinas RAM, o en MTD con cintas infinitas en los
dos extremos, etc, ya que existe una traducción polinomial entre
cualquiera de estos modelos
I ejercicio: ¿qué implicaría tener definida una clase de problemas
“tratables” que varíe con respecto al modelo de computación?)
Algoritmos y Complejidad
Clases P y NP
Clase P

I es posible demostrar que un problema pertenece a P mediante


dos formas: mostrando un algoritmo polinomial, o usando una
reducción a otro problema que ya se sabe que está en P
I el primer método es el que hemos usado para los ejemplos ya
dados; para el segundo debemos definir reducibilidad polinomial:
dados dos lenguajes L1 , L2 , L1 se dice polinomialmente reducible
a L2 si existe un función f computable en tiempo polinomial tal
que x ∈ L1 ↔ f (x ) ∈ L2 . Se nota L1 ≤p L2 .
I la reducción polinomial transforma en tiempo polinomial una
instancia del problema L1 en una instancia del problema L2 , de
forma que sus respuestas sean las mismas
I la reducibilidad polinomial cumple con todas las propiedades
generales de las funciones de reducibilidad vistas anteriormente
Algoritmos y Complejidad
Clases P y NP
Clase P

I además, permite afirmar que P es cerrada c.r. a ≤p :

Teorema 12
Sean L1 , L2 dos lenguajes tales que L1 ≤p L2 . Luego si L2 ∈ P
entonces L1 ∈ P.

Demostración.
Componiendo las MTD polinomiales que resuelven L2 y que calculan
la reducción, considerando que la composición de polinomios es un
polinomio.
Algoritmos y Complejidad
Clases P y NP
Clase P

Teorema 13
Sea L1 un lenguaje tal que 0/ ⊂ L1 ⊂ Σ∗ . Entonces para cualquier
L2 ∈ P vale que L2 ≤p L1 .

Demostración.
Si 0/ ⊂ L1 ⊂ Σ∗ entonces existe z ∈ L1 y un y ∈ Σ∗ − L1 . La reducción
consiste para cada x resolver L2 de acuerdo a su MTD polinomial, y
asignarle z o y de acuerdo a si su respuesta es sí o no.
Algoritmos y Complejidad
Clases P y NP
Clase P

I por ejemplo, sea 2-SAT el problema de decidir si una fórmula del


cálculo proposicional con a lo sumo dos literales por clausula es
satisfacible
I se mostrará que 2-SAT≤p CFC
I sea F una fbf de L con a los sumo dos literales por clausula. Se
crea G(F ) con un nodo por cada posible literal, y un arco (L1 , L2 )
si existe en F una clausula L¯1 ∨ L2 o L2 ∨ L¯1 (o sea si L1 → L2 o
L2 → L1 )
Algoritmos y Complejidad
Clases P y NP
Clase P

I por ejemplo, para


F = (x1 ∨ x2 ) ∧ (x1 ∨ ¬x3 ) ∧ (¬x1 ∨ x2 ) ∧ (x2 ∨ x3 ), G(F ) es:
Algoritmos y Complejidad
Clases P y NP
Clase P

Teorema 14
Una fbf F es satisfacible si y solo si no existe una proposición p tal
que p y ¬p pertenecen al mismo CFC del grafo G(F).

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.
Algoritmos y Complejidad
Clases P y NP
Clase P

I el teorema anterior, junto con el hecho de que G(F ) se puede


calcular en tiempo polinomial permiten afirmar que 2-SAT≤p CFC
I además, como CFC∈ P entonces sabemos que 2-SAT∈ P ya que
una combinación de algoritmos polinomiales resulta en un
algoritmo polinomial (teorema 12)
Algoritmos y Complejidad
Clases P y NP
Clase P

I otro ejemplo de reducción es 2-COLOR≤p 2-SAT


I 2-COLOR es el problema de, dado un grafo no dirigido G,
encontrar una asignación de dos colores a todos los nodos de G
(coloración) tal que ningún par de nodos adyacentes tengan el
mismo color
I la reducción consiste en crear una proposición pi por cada nodo
ni del grafo, que significará que el nodo i tiene asociado el primer
color, mientras que su negación significa que tiene asociado el
segundo color
I se crea entonces una fbf F (G) con las clausulas pi ∨ pj y
¬pi ∨ ¬pj por cada arco (ni , nj ) del grafo
Algoritmos y Complejidad
Clases P y NP
Clase P

Teorema 15
Un grafo no dirigido G tiene una 2-coloración si y solo si F (G) es
satisfacible.

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.

I luego como la reducción es en tiempo polinomial, 2-SAT∈ P y P


es cerrado c.r. a ≤p entonces 2-COLOR∈ P
Algoritmos y Complejidad
Clases P y NP
Clase P

I identificando la clase P con el concepto de tratabilidad, se estaría


en las siguientes condiciones, con algunos problemas
probadamente tratables y otros probadamente intratables:
Algoritmos y Complejidad
Clases P y NP
Clase NP

Clase NP
I en forma análoga a P, se puede definir su contraparte no
determinística NP:

NP = ∪k ∈N NTIME [nk ]

I por definición (toda computación determinística es trivialmente


no determinística), sabemos que P ⊆ NP
I pero el problema de definir la “tratabilidad” no es tan sencillo: no
se sabe si P = NP o P ⊂ NP
I esto es, puede ser que todos los problemas en NP tengan
solución determinística polinomial, o puede ser que no sea
equivalente el tiempo determinístico con el no determinístico
Algoritmos y Complejidad
Clases P y NP
Clase NP

I el teorema 2 solo establece la equivalencia en cuanto al poder


computacional; pero el tiempo que usa es exponencial
I como consecuencia se tiene un conjunto de problemas cuya
tratabilidad o no se desconoce:
Algoritmos y Complejidad
Clases P y NP
Clase NP

I esta brecha es inaceptablemente muy grande, e impide de


clasificar a importantes problemas como tratable o intratable
I desafortunadamente existe muchos problemas prácticos con
estas características: tienen soluciones polinomiales no
determinísticas, pero su máxima cota inferior es lineal
I por ejemplo:
I EMPAQUETAMIENTO BIDIMENSIONAL
I VIAJANTE
I CIRCUITO HAMILTONIANO
I MOCHILA con coeficientes enteros
I SATISFACILIDAD en el cálculo de predicados
I 3-COLOR de un grafo no dirigido
I para ninguno de ellos se ha encontado una solución tratable,
pero tampoco se ha demostrado que esta solución no existe
Algoritmos y Complejidad
Clases P y NP
Clase NP

I es importante conocer las propiedades de la clase NP para tratar


de entender mejor el problema de su tratabilidad
I una característica interesante es que todos estos problemas
parecen requerir, como parte de su naturaleza, construir
soluciones parciales: empaquetamientos parciales, recorridos
parciales, asignaciones de valores de verdad parciales, etc.
Cuando una de estas soluciones parciales se detecta incorrecta,
se debe realizar backtracking en busca de otra alternativa
I por lo tanto es difícil decidir si existe o no una solución; es decir
dar la respuesta sí o no
I en cambio es interesente notar que en el caso que la respuesta
sea sí es fácil convencer a alguien de ello. Esto es lo que se
denomina certificado, cuyo tamaño siempre puede ser acotado
por Θ(n)
Algoritmos y Complejidad
Clases P y NP
Clase NP

I existe otra forma de ver este hecho: supongamos que


disponemos de una moneda mágica que se usa en el proceso de
bactracking para determinar en cada decisión cuál es el camino
correcto
I la moneda siempre “adivina” la solución. En este caso la el
algoritmo es polinomial
Algoritmos y Complejidad
Clases P y NP
Clase NP

Teorema 16
Un lenguaje L pertenece a NP si y solo si existe un lenguaje
Lcheck ∈ P tal que

L = {x : ∃y hx , y i ∈ Lcheck y |y | ≤ p(|x |)}

siendo p un polinomio.

Demostración.
Transformando una máquina de Turing.

I este teorema describe una forma alternativa de probar la


pertenencia a NP: mostrar que su lenguaje Lcheck pertenece a P
Algoritmos y Complejidad
Clases P y NP
Clase NP

I por ejemplo
I para mostrar que SAT∈ NP es suficiente con dar un algoritmo
determinístico polinomial para chequear si una asignación de
valores de verdad hace verdadera una fbf.
I para mostrar que la versión de decisión del problema VIAJANTE
(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
para controlar si un dado circuito es un circuito de viajante con
longitud menor o igual a k
I se puede mostrar que 3-COLOR∈ NP dando un algoritmo
polinomial para controlar que una asignación de colores de un
grafo asigne colores diferentes a nodos adyacentes.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Clase NPC
I como P es cerrada c.r. a ≤p , el lema 8 permite suponer que los
lenguajes NP-completos c.r. a ≤p (NPC) son candidatos a
lenguajes separadores, es decir a pertenecer a NP − P
I entonces, para averiguar si P = NP es suficiente con establecer
el status de un problema en NPC: si uno de estos problemas
tiene solución polinomial, entonces todos los NP tienen solución
polinomial; si se demuestra que no puede existir una solución
polinomial para alguno de ellos, entonces ninguno de NPC la
tiene
I el destino de un problema NPC es el destino de todos: todos son
tratables o todos son intratables.
I por lo tanto es interesante conocer cuáles problemas pertenecen
a NPC
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Teorema de Cook

Teorema 17 (Cook/Levin)
SAT es un problema en NPC.

Demostración.
Primero se prueba que SAT∈ NP (usando el teorema 16 o mostrando
un algoritmo no determinístico polinomial). Luego se toma un
lenguaje arbitrario L ∈ NP, y se muestra que L ≤p SAT. Para esto se
define primero la reducción: sea T = hQ , Σ, ∆, q0 , q1 i la MTND que
acepta a L, y x ∈ Σ∗ . Como L ∈ NP sabemos que T (x ) para
(aceptando o rechazando) en tiempo polinomial p(|x |).
A continuación se define una fbf F (T , x ) tal que F (T , x ) sea
satisfacible si y solo si T (x ) termina en el estado aceptador.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Demostración (cont.)
La fórmula F (T , x ) está formada por las siguientes proposiciones:
I para cada paso t , 0 ≤ t ≤ p(|x |), para cada estado
qe , 1 ≤ e ≤ |Q |, existe Qet para representar que en el paso t la
computación T (x ) está en el estado e
I para cada paso t , 0 ≤ t ≤ p(|x |), para cada celda
cs , 1 ≤ s ≤ p(|x |), existe Lts para representar que en el paso t la
computación T (x ) tiene la cabeza lectora en la posición s.
I para cada paso t , 0 ≤ t ≤ p(|x |), para cada celda
cs , 1 ≤ s ≤ p(|x |), para cada letra li ∈ Σ ∪ {t} (o sea
l0 = 0, l1 = 1, l2 = t), existe Pst ,i para representar que en el paso
t la computación T (x ) tiene en la celda cs la letra li .
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Demostración (cont.)
A partir de estas proposiciones, se define

F (T , x ) = A ∧ B ∧ C ∧ D ∧ E ∧ F

donde A, B , C describen el comportamiento general de las MTND; D


describe la configuración inicial de T (x ); E describe el
comportamiento particular de T determinado por sus tuplas ∆; y F
describe la configuración aceptadora de T (x ).
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Demostración (cont.)
Las subfórmulas A, B , C tienen la siguiente forma:
^ _ ^
A = [( Qet ) ∧ (Qet → ¬Qet 0 )]
0≤t ≤p(|x |) 1≤e≤|Q | 1≤e,e0 ≤|Q |
e6=e0
^ _ ^
B = [( Lts ) ∧ (Lts → ¬Lts0 )]
0≤t ≤p(|x |) 1≤s≤p(|x | 1≤s,s0 ≤p(|x |)
s6=s0
^ ^
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
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Demostración (cont.)
Las subfórmulas D , E , F tienen la siguiente forma:
^ ^
D = ( Pj0,ij ) ∧ ( Pj0,2 ) ∧ Q00 ∧ L01
1≤j ≤|x | |x |<j ≤p(|x |)

(Qit ∧ Lts ∧ Pst ,a → Qjt +1 ∧ Lts++1m ∧ Pst +


^ _
1
E = [ ,b )]
0≤t ≤p(|x |) hqi ,pa ,qj ,pb ,mi∈∆
1≤s≤p(|x |)
_
F = Q1t
1≤t ≤p(|x |)

siendo x = li1 li2 . . . li|x | con lik ∈ Σ.


Algoritmos y Complejidad
Clases P y NP
Clase NPC

Demostración (cont.)
Se puede mostrar que F (T , x ) tiene una longitud polinomial en |x |, ya
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
y que si T (x ) acepta a x entonces F (T , x ) es satisfacible. (Los
detalles de estos dos últimos puntos queda como ejercicio.)
Esto finaliza la prueba que L ≤p SAT, y como L ∈ NP es arbitrario,
entonces SAT es NP-completo.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

I la importancia del teorema de Cook radica en que a partir del


conocimiento de que SAT∈ NPC, es mucho más fácil probar que
otros problemas son NPC a través de la reducción polinomial:
L ∈ NPC si y solo L2 ∈ NPC, L ∈ NP y L2 ≤p L.
I de esta forma más de 1000 problemas de dominios muy
diferentes, y con variadas aplicaciones, se han probado que
pertenecen a NPC
I el resultado es muy frustrante, ya que para ninguno de estos
problemas se ha podido encontrar una solución polinomial, y
tampoco se les ha podido demostrar una cota inferior mayor que
lineal.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Reducción SAT≤p CUBR.NODOS

I sea F una fbf en FNC, se debe especificar un grafo G y un


número K tal que F es satisfacible si y solo si G tiene un
K -cubrimiento de nodos
I sean p1 , . . . , pn las proposiciones de F , y C1 , . . . , Cm sus
clausulas. G(F ) se construye:
1. por cada pi se agregan dos nodos en G etiquetados pi y ¬pi .
Cada par de estos nodos se conecta con un arco en G
2. por cada Cj con nj literales, se agrega en G un subgrafo completo
de nj nodos etiquetados con cada literal de Cj
3. se unen con un arco cada nodo agregado por la segunda regla
con el nodo agregado en la primera que tiene igual etiqueta. El K
se determina por la siguiente fórmula K = n + ∑m j =1 (nj − 1).
Algoritmos y Complejidad
Clases P y NP
Clase NPC

I efectivamente, se muestra que F es satifacible si y solo si G(F )


tiene un K -cubrimiento de nodos, que la reducción es en tiempo
polinomial, y que CUBR.NODOS∈ NP, con lo que se concluye
que CUBR.NODOS∈ NPC (ejercicio)
I por ejemplo, para F = (x ∨ ¬y ∨ w ) ∧ (z ∨ ¬v ) ∧ (v ∨ y ∨ z ∨ w )
se tiene el siguiente grafo G(F ), con K = 11:
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Reducción SAT≤p 3-SAT


I sea F una fbf en CNF, se debe especificar una fbf F 0 una fbf en
CNF con exactamente 3 literales por clausula tal que F es
satisfacible si y solo si F 0 es satisfacible
I la fbf F 0 se construye a partir de cada clausula Ci de F de la
siguiente forma:
I si Ci = Li entonces C 0 = Li ∨ Li ∨ Li .
1 i 1 1 1
I si C = L ∨ L entonces C 0 = L ∨ L ∨ L .
i i1 i2 i i1 i2 i2
I si C = L ∨ L ∨ L entonces C 0 = C .
i i1 i2 i3 i i
I si C = L ∨ . . . ∨ L , k > 3 entonces C 0 = (L ∨ L ∨ y ) ∧ (¬y ∨
i i1 ik i i1 i2 i1 i1
Li3 ∨ yi2 ) ∨ . . . ∨ (¬yik −4 ∨ Lik −2 ∨ yik −3 ) ∨ (¬yik −3 ∨ Lik −1 ∨ Lik ),
siendo yij , 1 ≤ j < k − 2 nuevas letras proposicionales.
I es posible mostrar también que la reducción se puede hacer en
tiempo polinomial, y como también 3-SAT∈ NP entonces
3-SAT∈ NPC.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

I por ejemplo, si

F = (p ∨ ¬q ∨ ¬r ∨ ¬s ∨ w ∨ ¬v ) ∧ (¬w ∨ z )

entonces

F0 = (p ∨ ¬q ∨ y11 ) ∧ (¬y11 ∨ ¬r ∨ y12 ) ∧


∧(¬y12 ∨ ¬s ∨ y13 ) ∧ (¬y13 ∨ w ∨ ¬v ) ∧ (¬w ∨ z ∨ z )

I la satisfacibilidad de la clausula original garantiza la


satisfacibilidad de las clausulas transformadas asignando
verdadero a todas las yij hasta encontrar el literal verdadero de
la clausula, luego los siguiente yik toman valor falso
Algoritmos y Complejidad
Clases P y NP
Clase NPC

I algunos problemas de NPC parecen similares a otros que se


saben en P, pero tiene complejidad distinta

Problema en P Problema en NPC


CUBRIMIENTO DE ARCOS CUBRIMIENTO DE NODOS
Instancia: grafo G = hN , Ai, entero Instancia: grafo G = hN , Ai, entero
positivo k . positivo k .
Respuesta: sí si existe A0 ⊆ A tal Respuesta: sí existe N 0 ⊆ N tal que
que |A0 | ≤ k y que todo nodo de N |N 0 | ≤ k y que todo arco de A toca
es el extremo de algún arco en A0 . N 0.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


CONJUNTO DE ARCOS NO DIRI- CONJUNTO DE ARCOS DIRIGI-
GIDOS RETROALIMENTADOS DOS RETROALIMENTADOS
Instancia: grafo G = hN , Ai, entero Instancia: grafo dirigido G = hN , Ai,
positivo k . entero positivo k .
Respuesta: sí si existe un subcon- Respuesta: sí si existe un subcon-
junto A0 ⊆ A tal que |A0 | ≤ k y que junto A0 ⊆ A tal que |A0 | ≤ k y que
todo ciclo en G contiene un arco de todo ciclo (dirigido) en G contiene
A0 . un arco de A0 .
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


CICLO DE EULER CICLO DE HAMILTON
Instancia: grafo G = hN , Ai, |A| = Instancia: grafo G = hN , Ai, |N | =
a. n.
Respuesta: sí si existe un orden Respuesta: sí si existe un orden
(ni , mi ), 1 ≤ i ≤ a de los arcos de ni , 1 ≤ i ≤ n de los nodos de ma-
manera que mi = ni +1 , 1 ≤ i < m y nera que (ni , ni +1 ) ∈ A, 1 ≤ i < n y
n a = m1 . (nn , n1 ) ∈ A.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


2-SATISFACIBILIDAD 3-SATISFACIBILIDAD
Instancia: fbf F del cálculo proposi- Instancia: fbf F del cálculo proposi-
cional en FNC de manera que nin- cional en FNC de manera que nin-
guna clausula contenga más de 2 guna clausula contenga más de 3
literales. literales.
Respuesta: sí si F es satisfacible. Respuesta: sí si F es satisfacible.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


ECUACIÓN DIOFANTINA LINEAL ECUACIÓN DIOFANTINA CUA-
Instancia: enteros positivos a, b, c. DRÁTICA
Respuesta: sí si existen enteros Instancia: enteros positivos a, b, c.
positivos x , y tales que ax + by = Respuesta: sí si existen enteros
c. positivos x , y tales que ax 2 + by =
c.
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


PARTICIONES UNARIAS PARTICIONES BINARIAS
Instancia: conjunto A = {ai } de en- Instancia: conjunto A = {ai } de en-
teros en notación unaria. teros en notación binaria.
Respuesta: sí si existe un subcon- Respuesta: sí si existe un subcon-
junto A0 ⊂ A tal que ∑ai ∈A0 ai = junto A0 ⊂ A tal que ∑ai ∈A0 ai =
∑ai ∈A−A0 ai . ∑ai ∈A−A0 ai .
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problemas en P Problemas en NPC


CAMINO MÁS CORTO Instancia: CAMINO MÁS LARGO
grafo G = hN , Ai, función distancia Instancia: grafo G = hN , Ai, función
d : A → N, nodos a, b ∈ N, entero distancia d : A → N, nodos a, b ∈
positivo k . Respuesta: sí si existe N, entero positivo k .
en G un camino simple de a a b de Respuesta: sí si existe en G un ca-
longitud menor o igual a k . mino simple de a a b de longitud
mayor o igual a k .
Algoritmos y Complejidad
Clases P y NP
Clase NPC

Problema en P Problema en NPC


INTREE SCHEDULING OUTTREE SCHEDULING
Instancia: conjunto T de tareas de Instancia: conjunto T de tareas de
duración unitaria, p : T → N plazo duración 1, p : T → N plazo máxi-
máximo de cada tarea, orden par- mo de cada tarea, orden parcial <
cial < en T tal que toda tarea ten- en T tal que toda tarea tenga a lo
ga a lo sumo un sucesor inmediato, sumo un predecesor inmediato, en-
entero positivo m. tero positivo m.
Respuesta: sí si existe un schedu- Respuesta: sí si existe un schedu-
ling de T en m procesadores que ling de T en m procesadores que
obedezca el orden < y ejecute t ∈ obedezca el orden < y ejecute t ∈
T antes de su plazo p(t ). T antes de su plazo p(t ).
Algoritmos y Complejidad
Problema P vs. NP

I después de más de tres décadas de estudio, los investigadores


?
no han podido responder la pregunta P = NP
I es decir, no han encontrado un algoritmo polinomial ni han
demostrado una cota superpolinomial, para ningún problema de
NPC
I sin embargo, la experiencia práctica indica que P ⊂ NP es más
plausible que P = NP. Se cree que años de búsqueda de
algoritmos más eficientes hacen más plausible la idea de que no
existan
I esta experiencia también prefiere la idea de que una resolución
de este problema (en uno u otro sentido) provendrá
indirectamente del estudio detallado de las propiedades de las
clases, y no a través de una prueba directa.
Algoritmos y Complejidad
Problema P vs. NP

I por ejemplo, se ha mostrado que:


Teorema 18
Si todo par de lenguajes L1 , L2 ∈ NPC es tal que L1 y L2 son
p-isomorfos, entonces P 6= NP.
donde dos lenguajes son p-isomorfos si son reducibles entre sí
por una función de reducibilidad polinomial, biyectiva y con
inversa también polinomial
I y en el otro sentido
Teorema 19
Si existe un lenguaje L ∈ NPC tal que L es ralo, entonces P = NP.
donde un lenguaje es ralo si su función censo está acotada por
un polinomio
Algoritmos y Complejidad
Problema P vs. NP

I existen muchos otros resultados como los anteriores, que


favorecen una postura u otra, pero todas las condiciones que
estos resultados establecen paracen ser tanto o más esquivas
que el problema original
I en el caso que sea P 6= NP, se puede mostrar que existen
lenguajes en NP − P que no son NPC
I se los denomina NP-intermedios, o NPI. Se supone que varios
problemas pertenecen a esta clase
Algoritmos y Complejidad
Otras clases de complejidad

Famila de clases de complejidad

siempre que P 6= NP
Algoritmos y Complejidad
Otras clases de complejidad

Clases de Complejidad en Espacio

I análogamente a P y NP, se pueden definir clases de complejidad


polinomial en espacio determinística y no determinística

PSPACE = ∪k ∈N DSPACE [nk ]

NPSPACE = ∪k ∈N NSPACE [nk ]


Algoritmos y Complejidad
Otras clases de complejidad

I uno de los resultados más tempranos en cuanto al estudio de la


complejidad establece que la computación no determinística en
espacio es sorprendentemente eficiente comparando con la
computación determinística equivalente

Teorema 20 (Savitch)
Para toda función f : N −→ N tal que f (n) ≥ log n vale que

NSPACE [f (n)] ⊆ DSPACE [f (n)2 ]

Corolario 21
PSPACE = NPSPACE

Demostración.
2
Por el teorema de Savitch, NSPACE [nk ] ⊆ DSPACE [nk ].
Algoritmos y Complejidad
Otras clases de complejidad

I también sabemos que P ⊆ PSPACE y que NP ⊆ NPSPACE,


luego se tienen las siguientes relaciones

k
P ⊆ NP ⊆ PSPACE = NPSPACE ⊆ EXPTIME = ∪k ∈N DTIME [2n ]

I no se conoce si algunas de estas inclusiones son realmente


igualdades
Algoritmos y Complejidad
Otras clases de complejidad

I sin embargo, sí se sabe que P ⊂ EXPTIME, por lo que


necesariamente por lo menos una inclusión es estricta

Teorema 22 (Teorema de Jerarquía en Tiempo)


Para toda función tiempo construible t : N −→ N existe un lenguaje L
tal que L es decidible en tiempo O (t (n)) pero no en tiempo de
o(t (n)/ log n).

Corolario 23
Para todo par de números reales ε1 , ε2 tal que 1 ≤ ε1 < ε2 vale que
DTIME [nε1 ] ⊂ DTIME [nε2 ].

Corolario 24
P ⊂ EXPTIME
Algoritmos y Complejidad
Otras clases de complejidad

I también es posible demostrar un teorema equivalente para la


jerarquía en espacio, donde una función es espacio construible si
cumple la definición análoga a tiempo construible pero con
restricción en el espacio

Teorema 25 (Teorema de Jerarquía en Espacio)


Para toda función espacio construible t : N −→ N existe un lenguaje L
tal que L es decidible en tiempo O (t (n)) pero no en tiempo de o(t (n)).

Corolario 26
Para todo par de números reales ε1 , ε2 tal que 1 ≤ ε1 < ε2 vale que
DSPACE [nε1 ] ⊂ DSPACE [nε2 ].
Algoritmos y Complejidad
Otras clases de complejidad

I existen problemas PSPACE-completos, que según el lema


anterior serían candidatos a lenguajes separadores en PSPACE
y todas las clases inferiores
I igualmente, no se sabe si estos problemas pertenecen a P o no.
I son problemas PSPACE-completos:
I TQBF el problema de determinar si una fórmula booleana
totalmente cuantificada es verdadera o falsa
I saber si un jugador tiene una estrategia ganadora en un grafo
generado por el juego de GEOGRAFIA GENERALIZADO.
Algoritmos y Complejidad
Otras clases de complejidad

Clases L y NL

I es posible definir relaciones de reducibilidad de granularidad más


fina que la reducibilidad polinomial, en particular para estudiar la
complejidad en espacio logarítmico
I la reducibilidad logarítmica se define: dados dos lenguajes L1 , L2 ,
L1 se dice logarítmicamente reducible a L2 si existe un función f
computable en espacio logarítmico tal que x ∈ L1 ↔ f (x ) ∈ L2 , y
se nota L1 ≤l L2
I la reducibilidad logarítmica cumple con todas las propiedades
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
Otras clases de complejidad

I las clases L y NL contienen los problemas solubles


determinísticamente y no determinísticamente en espacio
logarítmico
L = DSPACE [log n]

NL = NSPACE [log n]

I por supuesto L ⊆ NL, pero al igual que en el tiempo polinomial,


no se sabe si la inclusión es estricta
Algoritmos y Complejidad
Otras clases de complejidad

I el problema CAMINO para determinar si existe un camino en un


grafo dirigido entre un dado par de nodos (que se puede resolver
con el algoritmo de Dijkstra) se puede demostrar que es
NL-completo con respecto a ≤l
I dado que CAMINO tiene solución determinística polinomial en
tiempo, entonces como consecuencia se tiene que NL ⊆ P
I otro resultado sorprendente es que a pesar que no se sabe si
NP = coNP, se puede demostrar que NL = coNL
Algoritmos y Complejidad
Otras clases de complejidad

I en resumen, sabemos que

L ⊆ NL = coNL ⊆ P ⊆ PSPACE

I y por el teorema de la jerarquia en espacio se sabe que


L ⊂ PSPACE, por lo que también alguna de estas inclusiones
necesariamente debe ser estricta, sin saber cuál
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
Otras clases de complejidad

Otras Clases de Complejidad

I clases probabilísticas
I jerarquía polinomial en tiempo
I clases de computación paralela
I jerarquía aritmética de incomputabilidad
Algoritmos y Complejidad
Algoritmos de aproximación

Algoritmos de aproximación

I el hecho de conocer que un problema es NP-completo es


instructivo
I puede ser útil para no perder tiempo en búsqueda de un
algoritmo eficiente que probablemente no exista
I sin embargo, esto no significa que el problema no se pueda
solucionar
Algoritmos y Complejidad
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 la heurística puede ser determinística o probabilística. La
principal diferencia con los algoritmos Monte Carlo es que no
está garantizada una baja probabilidad de error
I un algoritmo de aproximación es un procedimiento que siempre
resulta en una solución al problema, aunque puede fallar en
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.
Algoritmos y Complejidad
Algoritmos de aproximación

I consideremos por ejemplo el problema de la mochila, con


coeficientes enteros
I la solución greedy se mostró no optimal, mientras que la solución
de programación dinámica era de Θ(nW ) que puede ser muy
mala si W es grande
I no es un problema en P
I la solución greedy se puede extender fácilmente a un algoritmo
de aproximación que garantice una solución por lo menos la
mitad que la solución optimal
I el algoritmo de aproximación supone que ningún objeto pesa
más que la capacidad de la mochila, pero esta restricción es fácil
de levantar
Algoritmos y Complejidad
Algoritmos de aproximación

Algoritmo greedy

PROCEDURE MochilaG(w[1..n],v[1..n],W)
ordenar v[i]/w[i] en L
peso::=0; valor::=0
FOR i::=1 TO n
IF peso+w[i]<=W
valor::=valor+v[i]
peso::=peso+w[i]
ENDIF
ENDFOR
RETURN valor
Algoritmos y Complejidad
Algoritmos de aproximación

Algoritmo de aproximación

PROCEDURE MochilaA(w[1..n],v[1..n],W)
maxElto::=max{v[i], 1<=i<=n}
greedy::=MochilaG(w,v,W)
RETURN max{maxElto, greedy}

I sean opt el valor de la carga óptima, y opt


f el valor retornado por
el algoritmo de aproximación.
Algoritmos y Complejidad
Algoritmos de aproximación

Teorema 27
f ≥ opt /2.
Vale que opt

Demostración.
Si todos los objetos caben en la mochila, entonces opt f = opt. Sino,
existe k el menor índice tal que ∑i =1 w [i ] > W . Sea opt 0 el valor de
k

una carga óptima con W 0 = ∑ki=1 w [i ]. Vale que opt 0 = ∑ki=1 v [i ] y


como W 0 > W , opt 0 > opt. Luego

opt
f = max{maxElto, greedy} ≥ (maxElto + greedy))/2
k −1 k
≥ (v [k ] + ∑ v [i ])/2 = ( ∑ v [i ])/2 = opt 0 /2 ≥ opt /2
i =1 i =1
Algoritmos y Complejidad
Algoritmos de aproximación

I se conocen mejores algoritmos de aproximación para este


problema, algunos basados incluso en la solución de
programación dinámica
I otros algoritmos de aproximación trabajan sobre determinados
subproblemas del problema original
I como la mayoría de los problemas NPC tienen una gran cantidad
de instancias a las cuales se aplican, se puede llegar a tener
suerte caracterizando un subconjunto de instancias para las
cuales existe un algoritmo de aproximación eficiente y confiable
I los algoritmos de aproximación también son aplicables en
ocasiones donde los datos iniciales son inciertos
I en estos casos, aún un algoritmo exacto puede dar una solución
mala debido a la imprecisión de los datos originales.

También podría gustarte