Vous êtes sur la page 1sur 50

DISEO DE

ALGORITMOS
Ren Fabin Ziga Muoz
fabianmunoz@unicauca.edu.co
2016

DIVIDE Y VENCERAS
Consiste en:
Descomponer el problema en cierto
numero de subproblemas del mismo
tipo.
Resolver los subproblemas de forma
sucesiva e independiente.
Combinar las soluciones para obtener
la soluci6n del problema original.

DIVIDE Y VENCERAS
Los subproblemas son disjuntos, sin
solapamiento.
Cuando ocurre el solapamiento se
complica la solucin en trminos de
rendimiento, entonces se debe
pensar en otro tipo de algoritmo
(Programacin dinmica).

DIVIDE Y VENCERAS
CUANDO UTILIZARLO:
- Si la formulacin recursiva nunca
resuelve el mismo subproblema ms
de una vez.
- Si la descomposicin en subproblemas
y la combinacin de las soluciones son
operaciones eficientes.
- Si los subproblemas son
aproximadamente del mismo tamao.

BUSQUEDA BINARIA

BUSQUEDA BINARIA

PROGRAMACIN DINAMICA
Uso de la recursividad
Si la solucin se presenta como algo
exponencial aparece la PD.
El solapamiento de los subproblemas
es un inconveniente.
La PD resuelve los subproblemas una
sola vez, guardando sus soluciones
en una tabla.

PROGRAMACIN DINAMICA
Se presenta frecuentemente en problemas
de optimizacin.
Bellman (1957) En una secuencia de
decisiones optima toda subsecuencia ha de
ser tambien optima.
La solucin al problema ha de ser
alcanzada a travs de una secuencia de
decisiones, una en cada etapa.
Dicha secuencia de decisiones ha de
cumplir el principio de optimo.

PROGRAMACIN DINAMICA
1er. Paso: Planteamiento de la solucin como
una sucesion de decisiones y verificacin de que
esta cumple el principio de optimo.
2do. Paso: Definicin recursiva de la solucin.
3er. Paso: Calculo del valor de la solucin ptima
mediante una tabla en donde se almacenan
soluciones a problemas parciales para reutilizar
los clculos.
4to. Paso: Construccin de la solucin ptima
haciendo uso de la informacin contenida en la
tabla anterior.

PROGRAMACIN DINAMICA
El uso de estructuras (vectores o tablas) para
eliminar la repeticin de los clculos, pieza
clave de los algoritmos de Programacin
Dinmica.
los algoritmos obtenidos mediante la
aplicacin de esta tcnica consiguen tener
complejidades (espacio y tiempo) bastante
razonables, pero debemos evitar que el tratar
de obtener una complejidad temporal de orden
polinmico conduzca a una complejidad
espacial demasiado elevada.

PROGRAMACIN DINAMICA

PROGRAMACIN DINAMICA

2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

1
8

3
3 3

1
0

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA

2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

1
8

3
3 3

1
0

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA

2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

1
8

3
3 3

1
0

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA

2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

1
8

3
3 3

1
0

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA

2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

1
8

3
3 3

1
0

2 + 4 + 3 + 4 = 13

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA
Y AHORA ????????
2
2
1

4
3

4
6
3
2
3
4

4
6
6

4 1
4

3 + 1 + 3 + 4 = 11

1
8

3
3 3

1
0

2 + 4 + 3 + 4 = 13

UAL ES LA RUTA QUE TIENE EL PESO MENOR DESDE CADA NODO

PROGRAMACIN DINAMICA
SE RESUELVE DE ATRS HACIA ADELANTE LA ETAPA 4 PRIMERO
Etapa 1

2
2
1

4
3

Etapa 3

Etapa 2
7

4
6
3
2
3
4

4 1
4

1
4

3
3 3

Etapa 4

4
9

1
0

PROGRAMACIN DINAMICA
SE RESUELVE DE ATRS HACIA ADELANTE LA ETAPA 4 PRIMERO
Etapa 1
2
2
1

4
3

Etapa 3

Etapa 2

7
4

2
4

4 1
5
4

4
6
6

3
10

3
3

Etapa 4

4
3

S f(S X
)
4
8 3

10

9 4

10

PROGRAMACIN DINAMICA
SE RESUELVE DE ATRS HACIA ADELANTE LA ETAPA 4 PRIMERO
Etapa 1
2
2
1

4
3

Etapa 3

Etapa 2

7
4

Etapa 4

2
4

4 1
5
4

10

3
3

3
4

X
3

S f(S X
)
4

1+3
=4

4+4
=8

8 3

10

6+3

3+4

9 4

10

PROGRAMACIN DINAMICA
SE RESUELVE DE ATRS HACIA ADELANTE LA ETAPA 4 PRIMERO
Etapa 1
2
2
4

Etapa 3

Etapa 2

7
4

2
4

4 1
5
4

Etapa 4

7
X2

7+4=11

4+7=11

6+6=1 5 o
2
6

3+4=7

2+7=9

4+6=1 5

10

3
3

3
4

X
3

S f(S X
)
4

1+3
=4

4+4
=8

8 3

10

6+3

3+4

9 4

10

PROGRAMACIN DINAMICA
SE RESUELVE DE ATRS HACIA ADELANTE LA ETAPA 4 PRIMERO
Etapa 1
2
2
4

1 2+11=
13

4+7=
11

3+8=
11

6
6

3
10

3
3

4
3

X2
5

3o
4

Etapa 4

2
4

X1
2

7
4

4 1
5
4

Etapa 3

Etapa 2

2 7+4=
11

4+7=
11

6+6=
12

5o
6

3 3+4=

2+7=

4+6=

S X
3

S X4
8 10

5 8
6 9

9 10

PROGRAMACIN DINAMICA
POSIBLES RUTAS
Etapa 1
2
2
1

3
3

S X1

1 3o
4

Etapa 3

Etapa 2

7
4

2
4

4 1
5
4
S X2

3
10

3
3

Etapa 4

4
9

3
S X
3

S X4
8 10

2 5o
6

3 5

4 5o
6

9 10

PROGRAMACIN DINAMICA
POSIBLES RUTAS
Etapa 1
2
2
4

3
3

Etapa 3

Etapa 2

7
4

4
6

2
4

4 1
5
4

Etapa 4

10

3
3

X
1

X
2

X
3

X
4

10 4+3+1+3
=11

10 3+4+1+3
=11

3
4

PROGRAMACIN DINAMICA
KNAPSACK PROBLEM
Dada una serie de elementos,
empacar una mochila que soporta
un peso mximo, para lograr
MAXIMIZAR el valor de los
elementos empacados.
Sol 1. Elementos indivisibles
Sol 2. Elementos divisibles
Elem. # Peso
(i)
(w)

Valor
(b)

PROGRAMACIN DINAMICA
KNAPSACK PROBLEM
- IDENTIFICAR LA ECUACION
RECURSIVA: Esta debe asociar
el problema con los
subproblemas.
- Si los elementos estan
etiquetados 1.n, entonces el
subproblema ser encontrar la
solucin ptima para
- Sk={elementos etiquetados 1,
2, .k}
- Es posible describir la solucin
final Sn en terminos de los

PROGRAMACIN DINAMICA
Elem #
(S)

Peso
(w)

Beneficio
(b)

10

W = 20 (Peso mximo)
La solucion 5 no
parte de la solucin
4.
NO ES RECURSIVA
NO OPTIMALIDAD
S5

S4
Peso
(w)

Beneficio
(b)

Peso
(w)

Beneficio
(b)

10

14

20

20

26

PROGRAMACIN DINAMICA
KNAPSACK PROBLEM
- IDENTIFICAR LA ECUACION
RECURSIVA: Esta debe asociar
el problema con los
subproblemas.
- Si los elementos estan
etiquetados 1.n, entonces el
subproblema ser encontrar la
solucin ptima para
- Sk={elementos etiquetados 1,
2, .k} EN UNA MOCHILA DE
TAMAO W

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w
2

wwi

i-1

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w]
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

1
1

wi w

wwi

i-1

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w
3

wwi

i-1

-2

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

2
2

wi w

wwi

i-1

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w
4

wwi

i-1

-3

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-3

-2

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

3
3

wi w

wwi

i-1

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

bi

wi w

wwi

i-1

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Bi

wi w

wwi

i-1

-4

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w]
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Bi

wi w

wwi

i-1

-4

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w]
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Bi

wi w

wwi

i-1

-4

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w]
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Bi

wi w

wwi

i-1

-4

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w]
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Bi

wi w

wwi

i-1

-4

-3

-2

-1

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
Si bi + V[i-1][w-wi] > V[i-1][w
V[i][w]=bi + V[i-1][w-wi]
sino
V[i][w]=V[i-1][w]
Sino
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Elem #
(S)

Peso
(w)

Beneficio
(b)

n=4 , W = 5
Si wi <= w entonces
EL MAYOR BENEFICIO QUE PODEMOS
Si bi + V[i-1][w-wi] > V[i-1][w
OBTENER ES DE 7.
V[i][w]=bi + V[i-1][w-wi]
ES DECIR QUE AL INCLUIR ESOS 4 OBJETOS
EN LA MOCHILA LO MAXIMO QUE PODEMOS
sino
GANAR EL 7, SIN EXCEDER EL PESO
V[i][w]=V[i-1][w]
PERMITIDO
Sino
PERO FALTA SABER QUE ELEMENTOS
SON LOS QUE PUEDO GUARDAR.
V[i][w]=V[i-1][w]

PROGRAMACIN DINAMICA

NTRO DE DOS CICLOS: i TO n y w to W ( i=1 y w=1)


i/W

Elem #
(S)

Peso
(w)

Beneficio
(b)

n][W] = es el beneficio maximo de los elementos que pueden ser guardados (7)
mparamos desde ese elemento hacia arriba
es igual al anterior entonces el elemento correspondiente no esta en la mochila
es diferente :

Vous aimerez peut-être aussi