Está en la página 1de 35

Escuela de Ingenier́a Civil Informática

Facultad de Ingenier́a

Lenguajes y Autómatas
Cap́tulo III: Máquinas de Turing y computabilidad
Complejidad computacional

Fabián Riquelme Csori


fabian.riquelme@uv.cl

2018-II

1
Complejidad computacional
Clases de complejidad

Index

Complejidad computacional
Introducción
DTIME
Funciones asintóticas

Clases de complejidad
Complejidad temporal
Complejidad espacial
Otros tipos de problemas

2
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Problemas computables pero complejos


Problema del vendedor viajero (Traveling salesman problem)

I Producir un itinerario de ciudades a recorrer por un vendedor


de manera que camine lo menos posible.
I Si hay n ciudades, entonces hay (n − 1)! posibles itinerarios.
I Para 10 ciudades existen 9! = 362,880 posibles itinerarios.
I Para 30 ciudades existen > 1029 posibles itinerarios.
3
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Problemas computables pero complejos

I En realidad, noción de “problema complejo” no es muy formal.


I Intuitivamente, un problema es “complejo” si no puede ser
resuelto por un algoritmo eficiente.

@ algoritmo eficiente ⇒ problema complejo

pero ∃ algoritmo ineficiente 6⇒ problema complejo


Además, que un problema sea “sencillo” no significa que
todos los algoritmos que lo resuelven sean eficientes.
I La tarea fundamental de la teor́a de la complejidad
computacional es jerarquizar los problemas de acuerdo a su
complejidad computacional.

4
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Esfuerzo computacional

Al enfrentar un nuevo problema, solemos hacer lo siguiente:

5
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Esfuerzo computacional en MTD

I El esfuerzo computacional se puede cuantificar en términos


del número de pasos requeridos por una máquina de Turing.
I Dada una entrada w para una MT, definimos una función
T : N → N tal que T (|w |) es el tiempo o número de pasos
(configuraciones) que dicha MT tarda en computar w , en
función de su tamaño |w |.
I Un lenguaje L es decidible en tiempo T si existe una MT
determinista (MTD) que decide L en tiempo T .
I La clase de todos los lenguajes decidibles en tiempo T se
denota DTIME(T ).

6
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Esfuerzo computacional en MTD


Dadas dos MTDs M1 y M2 que deciden un lenguaje L.
Sea w ∈ L con |w | = n, supongamos:

T1 (n) = n3 y T2 (n) = 6T1 (n)2 + 3n + 15

I Recordemos que las variaciones de MTDs no aumentan el


poder computacional.
I Ambas MTDs poseen un tiempo de ejecución polinomial.
I No nos interesa tanto las diferencias “sutiles” entre T1 y T2 ,
sino saber que ambos tiempos son polinomiales
(i.e., nos concentramos en las tasas de crecimiento).
I Por lo tanto, DTIME(T1 ) y DTIME(T2 ) deber́amos
considerarlas como dentro de una misma clase más general.

7
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Funciones superiormente acotadas: O


I Todo polinomio está superiormente acotado por otro
polinomio.
I La tasa de crecimiento de cualquier polinomio puede
representarse simplemente por su grado.
I Ej: Si el tiempo de complejidad de un algoritmo es
T (n) = 3n2 + 6n, decimos que es del orden n2 , y usamos la
notación O(n2 ), tal que T (n) ∈ O(n2 ) (o T (n) = O(n2 )).
I Formalmente,
f (x) = O(g (x))
si existen k, x0 reales positivos tal que

|f (x)| ≤ k |g (x)| , para todo x ≥ x0

8
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Funciones superiormente acotadas: O

Algunas propiedades

Adición
I Si f1 = O(g1 ) y f2 = O(g2 ), entonces f1 + f2 = O(|g1 | + |g2 |)
I Si f y g son funciones positivas, f + O(g ) = O(f + g )

Multiplicación
I Si f1 = O(g1 ) y f2 = O(g2 ), entonces f1 f2 = O(g1 g2 )
I f · O(g ) = O(fg )
I O(kg ) = O(g ), para toda constante k > 0.

9
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Otras funciones acotadas: Ω y Θ

I f (x) = Ω(g (x)) si existen k, x0 reales positivos tales que


k |g (x)| ≤ |f (x)| , para todo x ≥ x0

I f (x) = Θ(g (x)) si existen k1 , k2 , x0 reales positivos tales que


k1 |g (x)| ≤ |f (x)| ≤ k2 |g (x)| , para todo x ≥ x0

I Ej: Si T (n) = 3n2 + 6n, entonces:


T (n) ∈ Ω(n2 ) y T (n) ∈ Ω(n),
T (n) ∈ Θ(n2 ), pero T (n) ∈ / Θ(n3 ).
/ Θ(n) y T (n) ∈

I Además existen o y ω, como equivalentes de O y Ω, pero


para cotas estrictas (<).

10
Fabián Riquelme Csori Lenguajes y Autómatas
Introducción
Complejidad computacional
DTIME
Clases de complejidad
Funciones asintóticas

Cotas usuales

I O(1) es un crecimiento constante


I O(log n) es un crecimiento logar́tmico
I O(n) es un crecimiento lineal
I O(n2 ) es un crecimiento cuadrático
I O(nc ) es un crecimiento polinomial
I O(c n ), c > 1 es un crecimiento exponencial
I O(n!) es un crecimiento factorial

11
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase P (o PTIME)

I La clase de complejidad P incluye a todos los problemas de


decisión que son computables en tiempo polinomial por una
máquina determinista.
[
P= {DTIME(nk ) | k > 0}
k∈N

= DTIME(nO(1) )

I Teóricamente, los problemas en P son todos “tratables”.


I En la práctica, O(n1000 ) es tan indeseable como O(2n ).

12
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase EXP (o EXPTIME)

I La clase de complejidad EXP incluye a todos los problemas de


decisión que son computables en tiempo exponencial por una
máquina determinista.
I i.e., aquellos problemas en O(2p(n) ), con p(n) un polinomio en
función de n.
[
EXP = {DTIME(2k ) | k > 1}
k∈N

I Ojo: un problema en EXP no significa necesariamente que no


pueda resolverse en tiempo polinomial. De hecho, P ⊆ EXP.

13
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

P vs. EXP

14
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase NTIME

I Hasta ahora hemos hablado de la


complejidad de problemas
decidibles por MT deterministas,
pero
qué pasa si consideramos MT
no-deterministas (MTND)?
I La clase de todos los lenguajes
decidibles en tiempo T por una
MTND se denota NTIME(T )
(non-deterministic time).

15
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase NP
I La clase de complejidad NP (non-deterministic polynomial)
incluye todos los problemas de decisión computables en
tiempo polinomial por una MTND.
[
NP = {NTIME(nk ) | k > 0}
k∈N

= NTIME(nO(1) )

I Note que P ⊆ NP ⊆ EXP.


I El problema del millón (de dólares): NP ⊆ P? es decir:
P = NP ?

I Sin exagerar, nuestra seguridad actual depende de la hipótesis


de que P 6= NP.
16
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Demostraciones de pertenencia

I Para demostrar que un problema está en P, basta encontrar


un algoritmo que lo decida en tiempo polinomial.
Ej: El Test de primalidad AKS (2002) para decidir si un
número es primo.
I Para demostrar que un problema está en NP, más sencillo que
construir una MTND con NTIME(nO(1) ), es encontrar un
certificado (normalmente una salida genérica del problema)
que pueda verificarse en tiempo polinomial en función del
tamaño de la entrada.
Ej: Para el problema de cobertura de vértices (dado un grafo,
decidir si tiene una cobertura de vértices de tamaño ≤ k), un
certificado es un conjunto de máximo k nodos.

17
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

NP-completitud
I Los problemas NP-hard o NP-dif́ciles son problemas al menos
tan complejos como NP (pero no necesariamente en NP).
Formalmente, un problema es NP-hard si todo problema en
NP puede ser reducido polinomialmente a él.

I Los problemas NP-completos son los problemas más dif́ciles


de resolver en NP.
Formalmente, un problema NP-completo es un problema NP y
NP-dif́cil.

18
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

NP-completitud

19
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Reducciones polinomiales
I Dados dos problemas X , Y , decimos que X es
polinomialmente reducible a Y , i.e., Y ≤P X , ssi:
I existe una función computable f tal que para toda entrada w ,
w ∈ Y ssi f (w ) ∈ X , y además
I f puede computarse en tiempo polinomial.

I Se usan para demostrar que un problema es NP-dif́cil


20
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Reducciones polinomiales

I Para demostrar que X es NP-dif́cil:


I Buscamos un problema Y que sabemos está en NP
(usualmente, se escoge un NP-completo cuyas entradas
puedan representarse fácilmente como entradas para X ).
I Definimos una función polinomialmente computable f tal que
Y ≤P X .
I Dado Y ≤P X , si pudiésemos resolver X en tiempo
polinomial, entonces a través de f también podr́amos resolver
Y en tiempo polinomial, ergo X es al menos tan dif́cil como
Y.
I Si además demostramos que X es NP, entonces demostramos
que X es además NP-completo.

21
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

SAT

I SAT es el problema de decidir si una fórmula de lógica


proposicional es o no satisfacible.
I Teorema: SAT es NP-completo
(Stephen Cook, 1971; Leonid Levin, 1973).
I Si una fórmula ϕ tiene:
I 32 proposiciones → 232 =4.294.967.296 valuaciones distintas.
I 64 proposiciones → 18.446.744.073.709.551.616 valuaciones.
I Un computador actual puede verificar 10 millones de
valuaciones por segundo.
I Para 32 variables → nos demoramos 7 minutos
I Para 64 variables → nos demoramos 585 siglos

22
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Ej: Reducción de 3-SAT a Vertex Cover

I Existen much́simos problemas NP-completos.


Richard Karp encontró 21 en 1972, a partir de SAT.
23
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase coNP

I La clase coNP contiene a los problemas de decisión cuyos


complementos están en NP.
I Es decir, incluye todos los problemas de decisión para los
cuales existe una MTND capaz de responder NO en tiempo
polinomial.
I Análogamente, un problema es coNP-hard o coNP-dif́cil si
todo problema en coNP puede reducirse polinomialmente a él.
I Análogamente, un problema es coNP-completo si es coNP y
coNP-dif́cil.

24
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase coNP

Se conjetura que coNP 6= NP.

25
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase SPACE (o DSPACE)

I SPACE o DSPACE es la cantidad de memoria que usa una


MTD.
I Todo lenguaje regular se puede decidir en DSPACE(O(1)).
I También existe la versión no-determinista NSPACE.
I DSPACE(s(n)) ⊆ NSPACE(s(n)) ⊆ DSPACE(s(n)2 )
donde s(n) es la cantidad de espacio utilizado por una entrada
de tamaño n (Walter Savitch, 1970).

26
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase PSPACE

I PSPACE incluye todos los problemas de decisión que son


computables por una MT usando una cantidad de memoria
polinomial.
[
PSPACE = DSPACE(nk )
k∈N

= DSPACE(nO(1) )

I PSPACE contiene (estrictamente) a los lenguajes


dependientes o sensibles al contexto.
I PSPACE = NPSPACE
I PSPACE = coPSPACE

27
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase EXPSPACE

I EXPSPACE incluye todos los problemas de decisión que son


computables por una MT usando una cantidad de memoria
exponencial, i.e., en O(2p(n) ).
k
[
EXPSPACE = DSPACE(2n )
k∈N
k
[
= NSPACE(2n )
k∈N

I EXPSPACE = NEXPSPACE (Walter Savitch, 1970).

28
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Jerarqu́a de complejidad

29
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Problemas funcionales

I Hasta ahora solo hemos estudiado complejidad sobre


problemas de decisión.
I Si un problema de decisión es del tipo L → {0, 1},
un problema funcional es del tipo L → L.
I Las clases análogas a P y NP son FP y FNP.

30
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Problemas de búsqueda, enumeración y conteo

I Dado un espacio de búsqueda y un criterio para determinar


qué elementos pertenecen a dicho espacio, un problema de
búsqueda consiste en encontrar algún elemento en dicho
espacio, o bien decir que no lo hay.
I Dado un problema de búsqueda, un problema de enumeración
consiste en ir listando uno a uno los distintos elementos que
pertenecen a ese espacio de búsqueda.
I Dado un problema de enumeración, un problema de conteo
consiste en determinar cuántos elementos pertenecen a ese
espacio de búsqueda.

31
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Clase #P

I La clase #P es la clase asociada a los problemas NP, pero


para los problemas de conteo.
I Un problema de conteo es #P-completo si está en #P y cada
problema en #P puede reducirse polinomialmente a él.

32
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Complejidad en problemas de enumeración

I A veces los elementos que queremos listar pueden ser infinitos.


I Lo importante es ir listando uno a uno, sin repetir.
I Un algoritmo resuelve un problema de enumeración con
polynomial-delay (retardo polinomial) si el tiempo entre listar
un elemento y el siguiente está en O(nk ).
I El mismo algoritmo es strongly-polynomial si además utiliza
un espacio de memoria en O(nk ).
I Johnson, Yannakakis & Papadimitriou (1988).

33
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

...más clases de complejidad

Complexity Zoo
https://complexityzoo.uwaterloo.ca/Complexity_Zoo

34
Fabián Riquelme Csori Lenguajes y Autómatas
Complejidad temporal
Complejidad computacional
Complejidad espacial
Clases de complejidad
Otros tipos de problemas

Referencias

Estos apuntes están basados en material propio de los profesores


Rodrigo Pizarro y JL Jara

Recuerden utilizar la bibliograf́a sugerida para el curso, disponible


en las Bibliotecas de la Universidad.

Las imágenes no propias son proporcionadas por Wikimedia


Commons.

35
Fabián Riquelme Csori Lenguajes y Autómatas

También podría gustarte