Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin a la complejidad
computacional
Problema
lo describe un
Lenguaje
Clases de problemas/clases de lenguajes
Clasificacin general
Problemas de decisin
Problemas de optimizacin
Indecidibles
Insolubles
Decidibles
Solubles
Soluciones
algortmicas
Problemas de decisin:
Ejemplos
Un problema de decisin puede ser formulado de
manera tal que dada una entrada requiere una respuesta
simple: si o no, true o false.
Problemas decidibles
Ejemplo: Determinar la pertenencia de una cadena a
un lenguaje de tipo 2.
Problemas indecidibles
Ejemplo: Problema del Halting
Problemas de optimizacin:
Ejemplos
Informalmente, los problemas de optimizacin son un tipo
general de problemas en los que se desea elegir el mejor de un
conjunto de elementos.
Coloreo de un grafo
Dado un grafo G = (V,E) y un conjunto finito de colores S, un
coloreo es un mapping C:V-> S, tal que si existe un arco
(v,w) E, luego C(v) =/= C(w). Determinar el mnimo coloreo
de G.
Problema de la mochila
Dado un conjunto de n objetos de tamaos s1,s2, sn y una
mochila de capacidad C (s1,s2, sn y C son enteros positivos)
encontrar un subconjunto de objetos que maximice el uso de la
mochila.
Problemas de optimizacin:
Ejemplos
Problema del viajante
Dadas las distancias entre un conjunto de n
ciudades, determinar el circuito que debera
recorrer un viajante, que parte de una estas
ciudades, visita a todas las dems exactamente
una vez y vuelve al punto de partida, habiendo
recorrido la menor distancia posible.
Problemas de optimizacin:
Ejemplos
Ordenamiento de tareas con penalidades
Dadas n tareas a ser ejecutadas una por vez. Cada tarea Ji tiene
un tiempo de ejecucin ti, un plazo de espera di medido desde el
comienzo de la ejecucin, una penalidad pi por exceder el plazo
de espera. Un orden especfico de tareas es una permutacin S
de {1,2,...,n} donde Js(1) es la primera tarea ejecutada, Js(2) la
siguiente, etc. La penalidad total para un ordenamiento particular
es
n
P S = [if (t s(1) + ....+ t s(i) ) > d s(i) then ps(i) else 0]
i=1
Se requiere encontrar un ordenamiento tal que minimice la
penalidad total
Versin de Decisin
Dado un grafo G y un entero positivo k existe un
coloreo de k colores?
NP
Polinomial
MT M1
Reconoce a L1
M1
w2
SI
MT M2
NO
Reconoce a Lo
NP_COMPLETO
NP
FM (w)
MTD
SI
SAT
NO
M: codificacin de MT ND
w: cadena
FNC-SAT
Subset-sum
CLIQUE
Vertex-COVER
HAM-CYCLE
TSP
6
3
V = { 4,5,6}
Mnimo
cubrimiento de
vrtices
Problemas de dificultad NP
Siempre es posible construir una versin de decisin
para un problema de optimizacin que tenga el mismo
grado de dificultad.
Decisin
NP-Completo
Optimizacin
NP-Hard
Ejemplos de NP-Hard
Versin de optimizacin del Viajante
Versin de optimizacin del Coloreo de un grafo
?
Qu sucedera si alguien descubriese un
algoritmo polinomialmente acotado para un
problema NP-Completo?
NP-COMPLETO
NP-tiempo
P-tiempo
PSPACE-completo
Una frmula booleana plenamente cuantificada
es una frmula en lgica de primer orden donde
toda variable es cuantificada
Se puede generalizar el problema SAT para el
problema de la frmula booleana cuantificada,
un importante problema PSPACE-completo.
Ej:
PSPACE-completo
Ejemplos
Pentomino
Reversi
Hex
Sokoban
Problemas difciles
Problemas computacionalmente
TRATABLES
INTRATABLES
Qu relaciones existen entre los problemas
tratables, intratables y las clases de problemas
P-tiempo, NP-Tiempo, NP-Completo,
NP Hard y PSPACE-completo?
Problemas difciles
No podemos afirmar que todo problema en P-tiempo tiene una
solucin eficiente.
Para ciertas instancias y en funcin de restricciones al
tiempo de ejecucin un problema en P-tiempo puede ser
ineficiente.
Puede estar en P-tiempo y el orden del polinomio alto
No podemos afirmar que todo problema en NP-Hard es
ineficiente
Un problema en NP-Hard puede ser tratable para ciertas
instancias.
Sin embargo
Problemas difciles
Sin embargo
hay muy buenas razones para buscar soluciones
que estn en P-tiempo dado que un problema que
no est en P-tiempo ser, en general, muy
costoso y probablemente intratable.
Problemas difciles
Un algoritmo para un problema complejo puede construirse
combinando algoritmos para problemas simples. Los algoritmos
simples pueden operar sobre las mismas entradas o sobre entradas
calculadas como resultados intermedios de otros problemas
simples.
Luego, la complejidad del algoritmo puede ser acotada
por suma, multiplicacin y composicin de complejidades de
otros algoritmos. Los polinomios son cerrados bajo estas
operaciones, luego cualquier algoritmo construido a partir de
algoritmos acotados polinomialmente ser tambin un algoritmo acotado
polinomialmente.
El cubo de Rubik
Cmo resolvieron las 43,252,003,274,489,856,000 configuraciones del cubo?
Particionaron las configuraciones en 2,217,093,120 conjuntos de
19,508,428,800 configuraciones cada uno.
Usando simetra y set covering encontraron que la cantidad de conjuntos
que se necesitaba resolver era 55,882,296
Para cada configuracin no es necesario encontrar la solucin ptima, sino
slo soluciones de 20 o menos pasos
Programaron la resolucin de un simple conjunto en 20 segundos
Usaron el equivalente de 35 aos de CPU para resolver los 55,882,296
conjuntos.
Cobertura de conjuntos (Set-Covering):
Dado un universo U, una familia S de subconjuntos de U, una cobertura o
solucin para el problema es una subfamilia cuya unin d por resultado el
mismo U. S= {{1,2,3}{2,4} {3,4} {4,5}} {{1,2,3}{4,5}}
www.cube20.org
El cubo de Rubik
Analizar este problema teniendo en cuenta lo
recientemente demostrado.
Es un problema tratable o intratable?
Es de dificultad NP?
Algoritmo de aproximacin
Un algoritmo de aproximacin est acotado por (n) si para
cualquier entrada de tamao n, el costo de la solucin del
algoritmo de aproximacin, para un costo de una solucin
factible c y un costo c* de una solucin ptima, es:
a) si el problema es de maximizacin
c / c* (n) 0 < c c*
y
b) si el problema es de minimizacin
c* / c (n) 0 < c* c
Es decir,
Algoritmo de aproximacin
max ( c/c* , c*/c) (n)
Qu expresa (n)=1?
Qu expresa (n) = 2?
Qu expresa (n) >> 1?
Algoritmo de aproximacin
Otra medida es el error relativo definido mediante
c c*/ c
Un algoritmo de aproximacin tiene un error relativo
(n) si c c*/ c (n).
Un esquema de aproximacin para un problema de
optimizacin tiene como entradas no slo a una
instancia de un problema sino un valor > 0, tal que
para un dado, el esquema es un algoritmo de
aproximacin con un error relativo acotado por .
Algoritmo de aproximacin
Problema del viajante
Un circuito en un grafo G es una secuencia de arcos
(a1, a2), . . .,(ak1, ak ), (ak , a1) en G tal que:
ai =/= aj para cada i =/= j ,
{a1, . . . , ak} es el conjunto de vrtices de G.
Costo de un circuito en G:
costo ( ) = (costo((ai , ai+1)) +
1 i k-1
costo((ak , a1))
Algoritmo de aproximacin
Problema del viajante Mtrico
Costo de un circuito en G:
costo ( ) =
1 i k-1
Viajante mtrico
Distancia euclideana
costo ( u,w) costo(u,v) + costo(v,w)
v
u
4
3
4
5
2
2
6
1
7
7
6
1
4
5
2
6
1
3
7
4
6
4
5
4
6
Algoritmo Heurstico
Problema del coloreo de un grafo
Dado un grafo G = (V,E) y un conjuto finito de
colores S, un coloreo es un mapping
C:V-> S, tal que si existe un arco (v,w) E,
luego C(v) =/= C(w).
3
1
5
4
Algoritmo Heurstico
Problema del coloreo de un grafo
for ( i=2; i <= n; i++)
{c = 1;
while (g.adyacentesColoreados(i, c))
++c;
g.colorear(i, c);
}
3
1
Algoritmo Heurstico
Problema del coloreo de un grafo
Colorear
a1
b1
a2
b2
a3
b3
an
bn
Algoritmo Heurstico
Problema del coloreo de un grafo
Secuencia de vrtices <a1,a2,..an,b1,b2,..bn>
a1
b1
a2
a3
b2
b3
an
bn
Algoritmo Heurstico
Problema del coloreo de un grafo
Secuencia de vrtices <a1,b1,a2,b2,..an,bn>
a1
b1
a2
b2
n colores!!!
a3
b3
an
bn
Algoritmo heurstico
Problema del coloreo del grafo
Depende de la secuencia de vrtices usada
la cantidad de colores del coloreo.
for ( i=2; i <= n; i++)
{c = 1;
while (g. adyacentesColoreados(i, c))
++c;
g.colorear(i, c);
}
Algoritmo heurstico
Problema del coloreo del grafo
No se conocen algoritmos de aproximacin para el
coloreo de un grafo que estn acotados por un factor
constante.
Se demostr que si se descubriese un algoritmo de
aproximacin que en el peor de los casos duplicara la
cantidad de colores de la solucin ptima, sera posible
obtener un coloreo ptimo en tiempo polinomial.
Esto implicara
P-tiempo = NP-tiempo. !!!!
As, obtener una buena solucin, no necesariamente
la ptima, para el coloreo puede ser en s mismo un
problema NP-HARD.
Problema NP-HARD
Problema del viajante
3
4
7
4
8
e
2
c
6
Problema NP-HARD
Problema del viajante
3
4
7
4
8
e
2
c
6
O(n2)
7
8
5
e
c
8
COSTO = 21
Problemas de dificultad NP
Tcnicas de bsqueda exhaustiva
Algoritmos de bsqueda
Tipos de algoritmos
Bsqueda de camino
Ejemplo
Laberintos
Bsqueda de camino
Ejemplo
(n2-1) Puzzle
inicial
Operador 2
Operador 1
f
a
e
g
Estado
final
f
d
g
e
Tcnicas de bsqueda
Backtracking
Backtracking
Caractersticas
Backtracking
Caractersticas
El espacio de soluciones factibles puede
modelarse mediante un rbol n-ario.
X1=
X1=
X2=
X2=
X3=
X4=
...
Backtracking
Caractersticas
X1=
X2= b
X2=
X3= c
X4= d
<a,b,c,d>
Backtracking
Caractersticas
Backtracking
Caractersticas
Problema de la mochila
Dados n pesos positivos pi, n beneficios positivos bi y
un nmero positivo C (la capacidad de la mochila),
elegir un subconjunto de pesos tal que
pi xi C y bi xi sea maximizado
1 i<n
1i<n
Backtracking
Caractersticas
Problema de la mochila
C =11
p 1 = 1 b1 = 1
x1= 0
p2 = 2 b2 = 6
x2 = 0
p3= 5 b3 = 18
x3 = 1
p4= 6 b4 = 22
x4 = 1
p5= 7 b5 = 28
x5 = 0
La solucin ptima incluye a los elementos 3 y 4 con un
beneficio de 40
Problemas NP-HARD
Backtracking
Caractersticas
La solucin se calcula a partir de una
secuencia de decisiones
X1=a
X2=b
X3=c
...
Backtracking
Caractersticas
X = (0,0,1,1,0)
b = (1,6,18,22,28)
x =0
p = (1,2,5,6,7)
1
x2 = 0
C = 11
x3 =1
x4=1
x5 =0
Backtracking
Caractersticas
Backtracking
Espacio de bsqueda exponencial
v1
v1
v2
vj
vj
#nodos O(jk)
Backtracking
Espacio de bsqueda
objeto 1
objeto 2 [1,1,-,-,,-]
[0,0,-,-,,]
objeto 3
[0,1,-,-,,-]
objeto n
{2,1}
{2,1,3}
{2,1,3,4}
{2,3}
{2,1,4}
{2,1,4,3}
{2,3,1}
{2,3,1,4}
{2,4}
{2,3,4}
{2,3,4,1}
{2,4,1}
{2,4,3}
{2,4,1,3}
{2,4,3,1}
{2,1,3}
{2,1,3,4}
{2,3}
{2,1,4}
{2,1,4,3}
{2,3,1}
{2,3,1,4}
{2,4}
{2,3,4}
{2,3,4,1}
{2,4,1}
{2,4,3}
{2,4,1,3}
{2,4,3,1}
<1,2,3,4>
<1,2>
<1,2,3>
<1,2,3,4>
<1,3>
<1,2,4> <1,3,4>
<1,4>
ordenar
Backtracking-Espacio de bsqueda
Problema del viajante
La raz rbol es un vrtice, los nodos circuitos en
construccin y las hojas circuitos.
<1>
<1,2>
<1,3>
<1,4>
<1,2,3>
<1,2,4>
<1,3,2> <1,3,4>
<1,4,2>
<1,4,3>
<1,2,3,4>
<1,2>
<1,3>
M=4
>4
<1,2,3>
<1,2,3,4>
<1,4>
<1,2,4> <1,3,4>
ordenar
Backtracking- Esquema 1
void Back (estado d, solucion *sol)
{ int nrohijo=1;
estado sig;
if (hoja(d)) calcular-solucion(d,sol);
else { nrohijo =1;
while (hijos(d,nrohijo, &sig) )
{ if !podado(sig, sol)
Back(sig, sol);
++nrohijo;
}
}
}
d
nrohijo=1
nrohijo=i
sig
Back(sig,sol)
Backtracking- Esquema 2
void Back (estado d, solucion *sol)
{ int nrohijo=1;
estado sig;
if (hoja(d)) calcular-solucion(d,sol);
else
{ nrohijo =1;
while (hijos(d,nrohijo, &sig) && !podado(sig, sol))
{ Back(sig, sol);
++nrohijo;
}
}
}
d
sig
Backtracking y Juegos
Heurstica Minimax
Un juego plantea situaciones de conflicto en la
que los jugadores deben tomar decisiones
sabiendo que los dems tambin toman
decisiones, y que el resultado del conflicto
se determina, de algn modo, a partir de todas
las decisiones realizadas
Backtracking y Juegos
Heurstica Minimax
Si cada jugador puede analizar de antemano las
posibles estrategias de sus oponentes y sus
consecuencias, existen estrategias que permiten
minimizar la prdida mxima esperada.
Heurstica Minimax
Backtracking y Juegos
Heurstica Minimax
Backtracking y Juegos
Heurstica Minimax
Espacio de bsqueda se denomina rbol de juego.
Ejemplo: TA-TE-TI
x
x
y
x
x
x y
x y
x
y
x
y
y
x
x
y
x
y
y
x
y
y
x
y
y
x
x y
x y
x
x
y
y
x
y
x
x
x
y
y
x
x
y
y
x
x
x
y
y
x
y
y
x
x
x
x
x
y
y
x
x
x
y
y
x
y
y
x
x
y
JUEGA X --MAX
x x x
x y
JUEGA Y
y
y MIN
x
x y
y y
JUEGA X
MAX
Backtracking y Juegos
Heurstica Minimax
Los nodos del rbol representan configuraciones del
tablero y los niveles del rbol se asocian a jugadores.
x
x
y
x
x
x y
x y
x
y
x
y
y
x
x
y
x
y
y
x
y
y
x
y
y
x
x y
x y
x
x
y
y
x
y
x
x
x
y
y
x
x
y
y
x
x
x
y
y
x
y
y
x
x
x
x
x
y
y
x
x
x
y
y
x
y
y
x
x
y
JUEGA X --MAX
x x x
x y
JUEGA Y
y
y MIN
x
x y
y y
JUEGA X
MAX
Backtracking y Juegos
Heurstica Minimax
Backtracking y Juegos
Heurstica Minimax
Funcin de evaluacin
El algoritmo explorar los nodos del rbol asignndoles
un valor numrico mediante una funcin de evaluacin,
empezando por los nodos terminales y subiendo hacia la
raz. La funcin definir lo buena que es la configuracin (estado
del tablero) para un jugador cuando la alcanza. En el caso
del ta-te-ti o el ajedrez los posibles valores pueden ser (+1,0,-1)
que se corresponden con ganar, empatar y perder
respectivamente. En el caso del Backgamon los posibles valores
podran tener un rango de [+192,-192], correspondindose con el
valor de las fichas.
Backtracking y Juegos
Heurstica Minimax
x
x
x y 1 JUEGA X --MAX
y
y
Funcin de evaluacin
x
x y 0
y x y
x
x
x x y -1
y
y
x y x
x y
y x y
0
x y x
x x y
y x y
x
x
y x y
y x y
1
x x x
y x y
y x y
x y x
x x y
y
y
0
x y x
x x y
y x y
x x x
1
x y JUEGA Y
y
y MIN
x
x
x x y JUEGA X
y y y MAX
-1
Existe una estrategia ganadora para X si Y
juega inteligentemente?
1 gana X; 0 empate; -1 pierde X
Backtracking y Juegos
Heurstica Minimax
Algoritmo heurstico Minimax
Backtracking y Juegos
Heurstica Minimax
x
x
x y 1 JUEGA X --MAX
y
y
Funcin de evaluacin
x
x y 0
y x y
x
x
x x y -1
y
y
x y x
x y
y x y
0
x y x
x x y
y x y
x
x
y x y
y x y
1
x x x
y x y
y x y
x y x
x x y
y
y
0
x y x
x x y
y x y
x x x
1
x y JUEGA Y
y
y MIN
x
x
x x y JUEGA X
y y y MAX
-1
Existe una estrategia ganadora para X si Y
juega inteligentemente?
1 gana X; 0 empate; -1 pierde X
Backtracking y Juegos
Heurstica Minimax
Poda Alfa-Beta
Se denomina poda alfa-beta dado que utiliza dos
parmetros que describen los lmites sobre los
valores que aparecen a lo largo de cada camino.
es el valor de la mejor opcin hasta el momento a lo largo
del camino para MAX
es el valor de la mejor opcin hasta el momento a lo largo
del camino para MIN
Se realizar la poda de las ramas restantes cuando el valor actual
que se est examinando sea peor que el valor actual de o para
MAX o MIN, respectivamente.
x
x y 1 JUEGA X --MAX
y
y
-
x
x
x y 0
y x y
x
x
x x y -1
y
y
x y x
x y
y x y
0
-
x y x
x x y
y x y
x
x
y x y
y x y
1
x x x
y x y
y x y
x y x
x x y
y
y
0
x y x
x x y
y x y
x x x
1
x y JUEGA Y
y
y MIN
x
x
x x y JUEGA X
y y y MAX
-1
Existe una estrategia ganadora para X si Y
juega inteligentemente?
1 gana X; 0 empate; -1 pierde X