Está en la página 1de 121

Problemas de dificultad NP

Anlisis y diseo de algoritmos II- 2014

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

Problemas de decisin versus


Problemas de Optimizacin

La clasificacin de problemas de decisin puede


basarse en modelos de procedimientos ms simples
que los que requerira una clasificacin de problemas
de optimizacin. Por ejemplo, pueden basarse en
autmatas reconocedores como la mquina de
Turing.
Para todo problema de optimizacin se puede
construir una versin de un problema de decisin del
mismo grado de dificultad.

Problemas de decisin versus


Problemas de Optimizacin
Problema del Coloreo de un grafo
Versin de Optimizacin
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). Se requiere
colorear el grafo con la mnima cantidad de colores.

Versin de Decisin
Dado un grafo G y un entero positivo k existe un
coloreo de k colores?

Problemas de decisin versus


Problemas de Optimizacin
Versin de optimizacin 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 decisin versus


Problemas de Optimizacin
Versin de decisin del viajante
Dadas las distancias entre un conjunto de n
ciudades, determinar si existe un circuito cuya
distancia total sea K y puede ser recorrido por
un viajante que parte de una estas ciudades,
visita a todas las dems exactamente una vez y
vuelve al punto de partida.

Clasificacin de problemas decidibles


P-tiempo

La clase de problemas de decisin de complejidad


temporal polinomial.

La clase de lenguajes que pueden ser reconocidos por


Mquinas de Turing determinsticas de complejidad
temporal polinomial

Clasificacin de problemas decidibles


NP-tiempo

La clase de lenguajes que pueden ser reconocidos


por Mquinas de Turing no-determinsticas de
complejidad temporal polinomial
Nondeterministic

NP

Polinomial

Clasificacin de problemas decidibles


PSPACE
La clase de lenguajes que pueden ser
reconocidos por Mquinas de Turing de
complejidad espacial polinomial

Relacin entre NP-tiempo y P-tiempo


Problema abierto:
NP-tiempo incluye a P-tiempo?
Qu se sabe sobre NP-tiempo?
Se ha identificado una clase de problemas de NP-tiempo.
NP-Completo
Un lenguaje Lo est en NP-Completo si todo lenguaje
L1 NP-tiempo se reduce a Lo en un tiempo polinomial

Relacin entre NP-tiempo y P-tiempo


Un lenguaje Lo est en NP-Completo si todo lenguaje
L1 NP-tiempo se reduce a Lo en un tiempo polinomial
w1

MT M1

Reconoce a L1
M1

w2

SI
MT M2

NO

Reconoce a Lo

y M2 son Mquinas de Turing definidas sobre un mismo


alfabeto.
M2 es una Mquina de Turing no determinstica que reconoce a L0.
M1 es una Mquina de Turing determinstica de complejidad
temporal polinomial, que convierte a la cadena w1 en la cadena w2
de forma tal que si w1 L1 luego w2 L2.

Relacin entre NP-tiempo y P-tiempo


Los problemas NP-Completo son los ms difciles en
NP-tiempo dado que si existiese un algoritmo de complejidad
temporal polinomial para un problema de la clase NP-Completo,
luego existira un algoritmo de complejidad temporal polinomial
para TODO problema perteneciente a NP-tiempo.

Informalmente, si existiese un algoritmo polinomial para un


problema NP-completo, podramos resolver cualquier problema
en NP-tiempo en un tiempo polinomial, luego P=NP.

Relacin entre NP-tiempo y P-tiempo


NP-Completo
L NP-Completo si
1. L NP-tiempo
2. Para todo L NP-tiempo , L se reduce a L

NP_COMPLETO
NP

Relacin entre P-tiempo y NP-tiempo


SAT ( Satisfiability) es el primer problema para
el que fue demostrada su pertenencia a la clase
NP-Completo.

SAT: Evaluar una frmula del clculo


proposicional es un problema NP-Completo
Demostrado por Stephen Cook en 1974

Relacin entre P-tiempo y NP-tiempo


SAT: Evaluar una frmula del clculo
proposicional es un problema NP-Completo.
Bases de la demostracin de Cook:
frmula
<M,w>

FM (w)
MTD

SI
SAT
NO

M: codificacin de MT ND
w: cadena

<M,w> describe NP-tiempo, porqu?

Relacin entre NP-tiempo y


P-tiempo
Para probar que un problema A en NP-tiempo es
NP-completo es suficiente probar que algn otro
problema NP-completo B se reduce a A. Es
decir, A es polinomialmente transformable a B.
SAT

FNC-SAT

Subset-sum

CLIQUE

Vertex-COVER

HAM-CYCLE

TSP

Relacin entre NP-tiempo y


P-tiempo
Clique en grafos
Dado un grafo no-orientado G = (V,E), un
clique es un subconjunto V V de vrtices,
tal que cada par est conectado por un arco en E.
El tamao del clique es la cantidad de vrtices
que contiene.
Problema: Dado un grafo no-orientado
G = (V,E), existe un clique de k vrtices?

Relacin entre NP-tiempo y


P-tiempo
Clique
1

6
3

V = { 4,5,6}

Relacin entre NP-tiempo y


P-tiempo
Vertex-Cover- Cobertura de vrtices en grafos
Dado un grafo no-orientado G = (V,E), una
cobertura de vrtices es un subconjunto de
vrtices V tal que si (u,v) es un arco de G, luego
u V o v V( o ambos). El tamao es la
cantidad de vrtices en la cobertura.
Problema: Existe una cobertura de k vrtices?

Relacin entre NP-tiempo y


P-tiempo
Vertex-Cover- Cobertura de vrtices en grafos

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

Relacin entre P-tiempo y NP-tiempo


Ejemplos de NP-Completos
Versin de decisin del viajante
Versin de decisin del Coloreo de un grafo

?
Qu sucedera si alguien descubriese un
algoritmo polinomialmente acotado para un
problema NP-Completo?

Relacin entre NP-tiempo y P-tiempo


Si bien no se han encontrado algoritmos
acotados polinomialmente para problemas
NP-Completos, no se ha podido demostrar que
no existen!!!
NP-tiempo ? P-tiempo
SE CONJETURA
NO DEMOSTRADO

NP-COMPLETO
NP-tiempo

P-tiempo

Relacin entre NP-tiempo y P-tiempo

Relacin entre NP-tiempo y P-tiempo


La pregunta P = NP? es uno de los famosos
Problemas del Milenio premiados con un milln
de dlares por el Clay Mathematics Institute.

Recientemente, en agosto de 2010, el ingeniero y


matemticoVinay Deolalikar (HP Research Labs, Palo
Alto, California) present una demostracin
concluyendo que P NP.

Relacin entre NP-tiempo y P-tiempo


La demostracin presentada por Vinay
Deolalikar ( de 103 pginas*) est basada
en fsica estadstica y varias reas de las
matemticas. Se realizarn comprobaciones
En varias oportunidades se han presentado otras
demostraciones para este problema que
resultaron errneasa la fecha sta tambin
*

Otra clase: PSPACE y PSPACEcompleto


PSPACE
La clase de lenguajes que pueden ser reconocidos por
Mquinas de Turing de complejidad espacial
polinomial.
Se conjetura que existen problemas PSPACE-completo
tal que si uno de ellos est en NP, PSPACE=NP, o,
si uno de ellos est en P, PSPACE= P.

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:

Relacin entre P, NP y PSPACE


Se conjetura
PSPACE
NP

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.

Algoritmos aproximados y heursticos


para problemas de complejidad NP
Si bien no se ha podido demostrar an que no existen
algoritmos eficientes para las clases NP-completo, PSPACE
completo y NP-Hard, desde el punto de vista prctico hay que
resolverlos eficientemente.

Si las entradas son pequeas podramos construir algoritmos basados en backtracking


que realicen una bsqueda exhaustiva

Sino, podramos construir soluciones aproximadas,cercanas a la mejor solucin, a partir


de algoritmos polinomiales.

Cmo resolver problemas difciles?


Cmo resolver problemas de complejidad
exponencial?
Ante todo darnos cuenta si realmente es
un problema para el que no existen soluciones
de complejidad temporal polinomial.
Ejemplo: resolver el cubo de Rubik
Es un problema de dificultad NP?

Cmo resolver problemas difciles?


Ejemplo: resolver el cubo de Rubik
Es un problema de dificultad NP?
El nmero de posibles permutaciones
en el Cubo de Rubik es de:
8! 12! 37 211
2
43.252.003.274.489.856.000
Por qu?

Ejemplo: El cubo de Rubik


Con un equivalente a 35 aos de CPU, donados
por Google, un grupo de ingenieros,
matemticos y programadores estableci que se
necesitan de 20 o menos movimientos para
resolver cualquiera de las
43 252 003 274 489 856 000 configuraciones
del cubo. El resultado de este algoritmo ha
recibido el nombre del "nmero de Dios"
debido a que un ser todopoderoso sera el nico
que podra adivinar la mnima cantidad de
movimientos para cada configuracin.

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?

Algoritmos aproximados y heursticos


para problemas NP-Hard
Cmo resolver problemas de dificultad NP?
No pretendemos encontrar la mejor solucin
sino una buena solucin.
Algoritmos aproximados
Algoritmos heursticos

Algoritmos heursticos versus


algoritmos aproximados
Heurstica Hallar, inventar
Algoritmo Heurstico
Procedimiento que puede producir una solucin buena, no muy alejada de la
ptima, o incluso la ptima si somos afortunados!
Algoritmo aproximado
Procedimiento que proporciona una solucin aproximada, que si bien no es la
ptima, se puede medir cun cerca est de la ptima.
Los algoritmos heursticos y los aproximados no garantizan encontrar la
solucin ptima

Los algoritmos aproximados establecen una cota de error.

Algoritmos de aproximacin para


problemas NP-Hard
Supongamos problemas de optimizacin, en los que
cada solucin factible tiene un costo positivo y se
pretende obtener una solucin cercana a la ptima.

Dependiendo del problema, una solucin ptima puede


ser definida como el mximo o el mnimo costo de las
soluciones factibles. El problema de optimizacin
puede ser de maximizacin o minimizacin

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,

max ( c/c* , c*/c) (n)

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 ( ) =

(costo((ai , ai+1)) + costo((ak , a1))

1 i k-1
Viajante mtrico
Distancia euclideana
costo ( u,w) costo(u,v) + costo(v,w)
v
u

Problema del viajante mtrico


Algoritmo de aproximacin
1. Construir un rbol de recubrimiento de
mnimo costo . Sea T
3

4
3

4
5

2
2
6
1

7
7

6
1

Problema del viajante mtrico


Algoritmo de aproximacin
2. Doblar cada arco de T para obtener un grafo
euleriano G.
3

4
5

2
6
1

Problema del viajante mtrico


Algoritmo de aproximacin
3. Construir un circuito euleriano E sobre G.
<3,2,1,2,3,4,5,6,5,7,5,4,3>

3
7

4
6

Problema del viajante mtrico


Algoritmo de aproximacin
4. Construir un circuito C que visite a todos los vrtices
usando la desigualdad triangular
<3,2,1,4,5,6,7,3>
3

4
5

4
6

Problema del viajante mtrico


Algoritmo de aproximacin- Error
COSTO (T) OPT
COSTO (E) = 2 COSTO (T)
COSTO (C) COSTO(E)
COSTO (C) 2 OPT
Se dice que este algoritmo es FACTOR 2, indicando
que a lo sumo duplica el valor de la solucin ptima

Problema del viajante mtrico


Algoritmo de aproximacin
Propuesta:
Implementar el algoritmo de aproximacin

Cul es la complejidad del algoritmo de


aproximacin?

Cul es el error? Cunto se acerca a la solucin


ptima? Comprobar empricamente que es factor 2.

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

Coloreo ptimo:2 colores

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 del viajante


Se lo conoce como TSP (Traveling Salesman
Problem).
Sea G = (V, E) un grafo orientado y rotulado.
Un ciclo hamiltoniano es un ciclo que contiene a
cada uno de los vrtices de G una vez.
Se desea obtener un ciclo hamiltoniano de
mnimo costo.

Problema NP-HARD
Problema del viajante
3

4
7

4
8

e
2

c
6

Una instancia de TSP

Problema NP-HARD
Problema del viajante
3

4
7

4
8

e
2

c
6

Una instancia de TSP

Problema del viajante


Algoritmo heurstico
Algoritmo heurstico basado en Prim
T= { }; /Inicializar T, rbol de recubrimiento/
S = { }; /conjunto de vertices S/
while ( S =/= V)
{ elegir un arco (u,v) de mnimo costo/
u S, v V-S y grado-incidencia (u) < 2;
T = T U {(u,v)};
S = S U {v}; }
-Completar circuito uniendo los dos vertices de T de grado de
incidencia 1

O(n2)

Problema del viajante


Algoritmo heurstico
a
3

7
8

5
e

Circuito para una instancia de TSP

c
8
COSTO = 21

Problemas de dificultad NP
Tcnicas de bsqueda exhaustiva

Algoritmos de bsqueda exhaustiva


Bsqueda en el espacio de soluciones

Exploracin sistemtica por prueba y error de


alternativas

Algoritmos de bsqueda
Tipos de algoritmos

Bsqueda de caminos (Pathfinding)


Bsqueda con adversario. Juegos

Bsqueda con restricciones

Bsqueda de camino
Ejemplo
Laberintos

Bsqueda de camino
Ejemplo
(n2-1) Puzzle

Bsqueda con adversario


Ejemplo
Juegos de dos
jugadores
Ajedrez

Bsqueda con restricciones


Ejemplo
N-reinas

Bsqueda con restricciones


Ejemplo
Sudoku

Modelo del espacio del problema


Espacio del problema

conjunto de estados del problema


conjunto de operadores que cambian el estado

Instancia del problema

espacio del problema


estado inicial,
estado objetivo

Espacio del problema


El espacio del problema se representa por un
grafo

los nodos representan estados


los arcos representan operadores
orientados o no orientados

Modelo del espacio del problema


Espacio del problema
Estado

inicial
Operador 2

Operador 1

f
a

e
g
Estado

final

Espacio del problema


Por simplicidad es comn representar al espacio
del problema por un rbol, el estado inicial es la
raz del rbol
+La ausencia de ciclos simplifica la bsqueda
-Estados que son alcanzados por dos caminos
diferentes se representan por nodos duplicados

Espacio del problema


Modelado como rbol
c
a

f
d

g
e

8-puzzle- Espacio del problema

Eficiencia y algoritmos de bsqueda


exhaustiva
Parmetros de la bsqueda que determinan la eficiencia:
# nodos en el grafo de espacio del problema
o una mejor medida
factor de bifurcacin (nmero promedio de hijos de un
nodo)
y profundidad de la solucin (longitud del camino ms
corto del nodo inicial a la meta, o la longitud de la
secuencia ms corta de operadores que resuelve el
problema)

Tcnicas de bsqueda
Backtracking

Backtracking
Caractersticas

Puede aplicarse en problemas de


optimizacin, con o sin restricciones.

Bsqueda exhaustiva en el espacio de soluciones

Backtracking
Caractersticas
El espacio de soluciones factibles puede
modelarse mediante un rbol n-ario.
X1=

X1=

X2=

X2=

X3=

X4=

...

Backtracking
Caractersticas

En general, la solucin puede expresarse como una


tupla (x1, x2, ,xn), donde los xi son elegidos de un
conjunto finito Si
X1= a

X1=

X2= b

X2=

X3= c
X4= d

<a,b,c,d>

Backtracking
Caractersticas

En general, se pretende encontrar un vector que


maximiza, minimiza o satisface una funcin objetivo
P(x1,x2,,xn).
Varios problemas a ser resueltos por backtracking
requieren que todas las soluciones factibles
satisfagan un conjunto de restricciones.
Las restricciones pueden ser explcitas (reglas que
restringen los valores de xi a un conjunto de valores)
o implcitas (reglas que determinan cules de las
tuplas en el espacio de soluciones satisfacen la
funcin objetivo)

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

Restricciones explcitas bi > 0, pi > 0, n > 0, xi{0,1} (1 i n)

Restricciones implcitas, definen el espacio de soluciones


factibles

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

Espacio de soluciones factibles para la instancia del problema de la


mochila

Backtracking
Caractersticas

Existe una forma sistemtica y organizada de generar y


recorrer el espacio que contiene a todas las posibles
secuencias de decisiones.

Existe una funcin que permite averiguar si una secuencia de


decisiones, la solucin actual en curso, cumple las
restricciones implcitas.

Existe una funcin solucin que permite determinar si una


secuencia de decisiones factibles es solucin.

Backtracking
Espacio de bsqueda exponencial

v1

v1

v2

vj

vj

#nodos O(jk)

Backtracking
Espacio de bsqueda

Cada camino de la raz a un nodo es una secuencia


de decisiones.
El espacio de bsqueda no debe incluir soluciones
repetidas
Una solucin es factible si no viola las restricciones
Una secuencia de decisiones puede ser
prolongable o no prolongable

Backtracking- Espacio de bsqueda


Problema de la mochila
Modela subconjuntos de objetos{1,2,..,n}
[o,-,-,,-]

objeto 1
objeto 2 [1,1,-,-,,-]

[0,0,-,-,,]

objeto 3

[0,1,-,-,,-]

objeto n

# espacio de bsqueda O(2n)

Backtracking- Espacio de bsqueda


Problema de la suma de subconjuntos
Dado un conjunto S de naturales, encontrar todos
los subconjuntos cuya suma sea igual a M.
Es un espacio de
S={2,1,3,4}
{2}
soluciones factibles?

{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}

Backtracking- Espacio de bsqueda


Problema de la suma de subconjuntos
Dado un conjunto S de naturales, encontrar todos
los subconjuntos cuya suma sea igual a M.
S={2,1,3,4}
MAL MODELADO{2}
Repeticin de estados
{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}

Backtracking- Espacio de bsqueda


Poda
Problema de suma de subconjuntos
Modela subconjuntos de objetos de S {2,1,3,4}
<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


Ejercicio propuesto
Problema de la suma cero de subconjuntos
Dado un conjunto S de enteros, encontrar todos
los subconjuntos cuya suma sea igual a 0.
Modelar el espacio de soluciones factibles

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> <1,2,4,3,1> <1,3,2,4,1> <1,3,4,2,1> <1,4,2,3,1> <1,4,3,2,1>

Backtracking- Espacio de bsqueda


Poda
Problema de suma de subconjuntos
Modela subconjuntos de objetos de S {2,1,3,4}
<1>

<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

Espacio de bsqueda se denomina rbol de juego.


Los nodos del rbol representan configuraciones
del tablero.
Los niveles del rbol se asocian a jugadores
especficos.
Una funcin de evaluacin , define cun buena es
una configuracin cuando la alcanza un jugador

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

Existe una estrategia ganadora para X si Y


juega inteligentemente?

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

Existe una estrategia ganadora para X si Y


juega inteligentemente?

Backtracking y Juegos
Heurstica Minimax

Espacio de bsqueda se denomina rbol de juego.


Los nodos del rbol representan configuraciones
del tablero.
Los niveles del rbol se asocian a jugadores
especficos.
Una funcin de evaluacin , define cun buena es
una configuracin cuando la alcanza un jugador

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

Generacin del rbol de juego (espacio de bsqueda). Se


generarn todos los nodos hasta llegar a un estado terminal.

Calcular los valores de la funcin de evaluacin para cada


hoja del rbol.

Calcular el valor de un nodo interior a partir del valor de sus


hijos. Alternativamente, se definirn como los valores
mnimos y mximos de sus hijos representando los
movimientos del jugador y del oponente, de ah el nombre
de Minimax.

Elegir la jugada conveniente a partir de estos valores.

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.

Bsqueda con adversario. Juegos


Algoritmo Minimax
x

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

Bsqueda con adversario. Juegos


Algoritmo Minimax + Poda -
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.
Depende del orden de generacin de sucesores

Bsqueda con adversario. Juegos


Esquema Minimax
Esquema 3
int back (estado d, tipoMinimax modo)
{int nrohijo, valor;
estado siguiente;
if (hoja(d)) return eval(d,modo); calcula valor de hoja
else {nrohijo=1;
if (modo==max) valor = bajo;
inicializa valor
else valor=alto;
while (hijos (d,nrohijo, &siguiente))

Bsqueda con adversario. Juegos


Esquema Minimax
Esquema 3 (cont)

while(hijos (d, nrohijo, &siguiente))


{if (!podado (valor, modo))
if (modo == max)
valor = maximo (valor, back(siguiente, min));
else
valor = minimo (valor,back(siguiente, max));
}
++nrohijo;}
return valor;
}
}

También podría gustarte