SlideShare une entreprise Scribd logo
1  sur  31
República Bolivariana de Venezuela
Instituto Universitario Politécnico
“Santiago Mariño”
Escuela de Ing. Industrial
Autor:
León G. Mariannys.
C.I:23. 924. 004
Inv. Operaciones II
Sección: E
Profesora.
Amelia Malavé
Maturín Enero del 2015
Una técnica que parte del principio de no calcular dos veces
la misma información, por lo tanto se utilizan estructuras de
almacenamiento como vectores, tablas, arreglos, archivos,
con el fin de almacenarlos resultados parciales, que
contribuyan a la solución final.
Este algoritmo evita calcular dos veces la misma
información, manteniendo una tabla de resultados
conocidos, la cual se va llenando a medida que se
resuelven los subcasos.
ES:
LA PROGRAMACION DINAMICA
León Mariannys
PROGRAMACIÓN DINAMICA
Se utiliza para
reducir el tiempo
de ejecución de
un algoritmo
La programación hace uso
de:
Subproblemas
Superpuestos
Memoizacion
León Mariannys
LA PROGRAMACIÓN TOMA NORMALMENTE UNO
DE LOS
DOS SIGUIENTES ENFOQUES:
TOP- DOWN: El problema se divide en
subproblemas, y estos se resuelven recordando las
soluciones por si fueran necesarias nuevamente.
BOTTOM-UP: Este enfoque es ligeramente mejor
en consumo de espacio y llamadas a funciones,
pero a veces resulta poco intuitivo encontrar todos
los subproblemas necesarios para resolver un
problema dado.
León Mariannys
CARACTERISTICAS DE LA
PROGRAMACION DINAMICA
León Mariannys
León Mariannys
MODELO DE PROGRAMACION
DINAMICA
Existen tres modelos diferentes
manejados por WINQSB.
 Problema de la diligencia (Stagecoach Problem)
 Problema de la mochila (Snapsack Problem)
 Programación de producción e inventarios
(Production and Inventory Scheduling)
LEON MARIANNYS
TÉCNICA DE PROGRAMACIÓN DINÁMICA
 Se emplea típicamente para resolver problemas de optimización.
 Permite resolver problemas mediante una secuencia de decisiones.
 Como el esquema voraz
 A diferencia del esquema voraz, se producen varias secuencias de
decisiones y solamente al final se sabe cuál es la mejor de ellas.
 Está basada en el principio de optimalidad de Bellman:
“Cualquier secuencia de decisiones de una secuencia
óptima de decisiones que resuelve un problema también debe ser
óptima respecto al subproblema que resuelve.”
León Mariannys
PROGRAMACION DINAMICA: SUPUESTO
Supongamos que un problema se resuelve tras tomar un
secuencia d1, d2, …, dn de decisiones.
Si hay d opciones posibles para cada una de las decisiones, una
técnica de fuerza bruta exploraría un total de dn secuencias
posibles de decisiones (explosión combinatoria).
La técnica de programación dinámica evita
explorar todas las secuencias posibles por medio de la resolución
de subproblemas de tamaño creciente y almacenamiento en una
tabla de las soluciones óptimas de esos subproblemas para facilitar
la solución de los problemas más
grandes.
León Mariannys
EL PROBLEMA DE LA MOCHILA 0-1
Sea mochila(k,l,P) el problema:
El problema de la mochila 0-1 es mochila(1,n,C).
El problema de la mochila 0-1 es mochila(1,n,C
maximizar bixi
i k
l

sujeto a pixi
i k
l
  P
con xi {0,1}, k  i  l
León Mariannys
Ecuación de recurrencia hacia adelante:
Si es el beneficio (o ganancia total) de una
solución óptima de mochila(j,n,c), entonces
dependiendo de que el objeto j-ésimo entre o no en la
solución (nótese que sólo puede entrar si
c-pj≥0).
Ademas:
v
gn  1 (c)  0, para cualquier capacidad c
Ambas ecuaciones permiten calcular ,
que es el valor de una solución óptima de
mochila(1,n,C).
(Nótese que la ecuación de recurrencia es
hacia adelante pero el cálculo se realiza hacia atrás.)
León Mariannys
Ecuación de recurrencia hacia atrás:
Si es el beneficio (o ganancia total) de una
solución óptima de mochila(1,j,c), entonces
Dependiendo de que el objeto j-ésimo entre o no
en la solución (nótese que sólo puede entrar si
c-pj≥0).
Además:
w
gj(c)  max
w
gj1(c),
w
gj1(c  pj) bj 
wg0(c)  0, para cualquier capacidad c
Ambas ecuaciones permiten calcular ,
que es el valor de una solución óptima de
mochila(1,n,C).
(Ahora la recurrencia es hacia atrás pero el cálculo
se realiza hacia adelante.) León Mariannys
 Tanto la recurrencia hacia adelante como hacia atrás
permiten escribir un algoritmo recursivo de forma
inmediata.
función
mochila1(p,b:vector[1..n] de
nat;
C:nat) devuelve
nat
principio
devuelve g(n,C)
fin
función g(j,c:nat) devuelve nat
principio
si j=0 entonces devuelve 0
sino
si c<p[j]
entonces devuelve g(j-1,c)
sino
si g(j-1,c)≥g(j-1,c-p[j])+b[j]
entonces
devuelve g(j-1,c)
sino
devuelve g(j-1,c-p[j])+b[j]
fsi
fsi
fsi
fin
León Mariannys
EL PROBLEMA DE LA MOCHILA
 Problema: ineficiencia
Un problema de tamaño n se reduce a dos subproblemas de tamaño (n-1).
Cada uno de los dos subproblemas se reduce a otros dos…
 Por tanto, se obtiene un algoritmo exponencial.
 Sin embargo, el número total de sub-problemas a resolver no es tan grande:
La función tiene dos parámetros:
el primero puede tomar n valores distintos y
el segundo, C valores.
 ¡Luego sólo hay nC problemas diferentes!
 Por tanto, la solución recursiva está
generando y resolviendo el mismo problema muchas veces.
León Mariannys
Para evitar la repetición de cálculos,
las soluciones de los subproblemas se
deben almacenan en una tabla.
Matriz n C cuyo elemento (j,c) almacena
Para el ejemplo anterior:
n=3 C=15
(b1,b2,b3)=(38,40,24)
(p1,p2,p3)=(9,6,5)
EL PROBLEMA DE LA MOCHILA
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
p1  9 0 0 0 0 0 0 0 0 0 38 38 38 38 38 38 38
p2  6 0 0 0 0 0 0 40 40 40 40 40 40 40 40 40 78
p3  5 0 0 0 0 0 24 40 40 40 40 40 64 64 64 64 78
w
gj(c)  max
w
gj1(c),
w
gj1(c  pj) bj 
León Mariannys
algoritmo mochila(ent
p,b:vect[1..n]de nat;
ent
Cap:nat;
sal
g:vect[0..n,0..Cap]de nat)
variables c,j:nat
principio
para c:=0 hasta Cap hacer
g[0,c]:=0 fpara;
para j:=1 hasta n hacer
g[j,0]:=0 fpara;
para j:=1 hasta n hacer
para c:=1 hasta Cap
hacer
si c<p[j]
entonces
g[j,c]:=g[j-
1,c]
sino
si g[j-
1,c]≥g[j-1,c-p[j]]+b[j]
entonces
g[j,c]:=g[j-1,c]
sino
g[j,c]:=g[j-1,c-
p[j]]+b[j]
fsi
fsi
fpara
EL PROBLEMA DE LA MOCHILA
León Mariannys
Cálculos posibles a partir de la tabla g:
beneficio total: g[n,Cap]
los objetos metidos en la mochila:
algoritmo objetos(ent
p,b:vect[1..n]de nat;
ent Cap:nat;
ent g:vect[0..n,0..Cap]de nat)
principio
test(n,Cap)
fin
algoritmo test(ent j,c:nat)
principio
si j>0 entonces
si c<p[j] entonces test(j-1,c)
sino
si g[j-1,c-p[j]]+b[j]>g[j-1,c]
entonces
test(j-1,c-p[j]);
escribir('meter ',j)
sino test(j-1,c)
fsi
fsi
fsi
fin
EL PROBLEMA DE LA MOCHILA
León Mariannys
CAMINO DE COSTE MÍNIMO EN UN GRAFO
MULTIETAPA
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
Grafo multietapa:
Un grafo multietapa G=(V,A) es un grafo dirigido en el que se
puede hacer una partición del conjunto V de vértices en k (k≥2)
conjuntos
distintos Vi, 1≤i≤k, tal que todo arco del grafo
(u,v) es tal que u Vi y v Vi+1 para algún i, 1≤i<k.
Los conjuntos V1 y Vk tienen un solo vértice que se llama vértice
origen, o, y vértice destino, d, respectivamente.
• Consideraremos grafos etiquetados.
Denotamos por c(u,v) el coste del arco (u,v).
León Mariannys
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
El problema: Encontrar un camino de coste mínimo que vaya de o a d.
Todo camino de o a d tiene exactamente un vértice en cada Vi,
por eso se dice que cada Vi define una etapa del grafo.
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
León Mariannys
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
Ejemplo de aplicación:
Se tienen n unidades de un recurso que deben
asignarse a r proyectos.
Si se asignan j, 0≤j≤n, unidades al proyecto i se obtiene
un beneficio Ni,j.
El problema es asignar el recurso a los r proyectos
maximizando el beneficio total
León Mariannys
Formulación como grafo multietapa:
Número de etapas: r+1
La etapa i, 1≤i≤r, representa el proyecto i.
Hay n+1 vértices vi,j, 0≤j≤n, en cada etapa i, 2≤i≤r.
Las etapas 1 y r+1 tienen un vértice, o=v1,0 y d=vr+1,n,
respectivamente.
El vértice vi,j, 2≤i≤r, representa el estado en el que se asignan
un total de j unidades del recurso a los proyectos 1, 2, …, i-1.
Los arcos son de la forma (vi,j,vi+1,l) para todo j≤l y 1≤i<r.
El arco (vi,j,vi+1,l), j≤l, tiene asignado un coste Ni,l-j que
corresponde a asignar l-j unidades del recurso al proyecto i,
1≤i<r.
Además hay arcos de la forma (vr,j,vr+1,n), que tienen asignado
un coste
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
max
0p n j
{Nr ,p }.
León Mariannys
Grafo resultante para r=3 y n=4.
La asignación óptima está definida por un
camino de coste máximo de o a d.
Para convertirlo en un problema de camino de coste mínimo
basta cambiar los signos de las etiquetas.
o  v1,0
v2,1
v2,0
v2,2
v2,3
v2,4
v3,0
v3,1
v3,2
v3,3
v3,4
d  v4,4
N1,0
N1,1
N1,2
N1,3
N1,4
N2,0
N2,0
N2,1
N2,1
N2,2
N2,3
N2,4
N2,0
N2,0
N2,1
N2,0
N2,1
N2,2
N2,3
N2,2
N3,0
max
i 0,1
{N3,i}
max
i 0,1,2
{N3,i}
max
i 0,1,2,3
{N3,i}
max
i 0,1,2,3,4
{N3,i}
León Mariannys
Solución de programación dinámica:
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
• Cada camino de o a d es el resultado de una
secuencia de k-2 decisiones.
Decisión i-ésima: determinar, a partir de un vértice vi de Vi, un arco que
tenga a vi como origen y algún nodo de Vi+1 como destino.
Principio de optimalidad:
• El camino de coste mínimo debe contener subcaminos de coste
mínimo entre otros nodos.
Dem.: En otro caso, podrían sustituirse dichos subcaminos por otros
mejores, resultando un camino total de coste menor
León Mariannys
Ecuación de recurrencia hacia adelante:
Sea s(i,j) un camino de coste mínimo C*(i,j) desde
el vértice j del conjunto Vi hasta el vértice destino
d.
Entonces:
C(k  1, j) 
c( j,d), si ( j,d) A
, en otro caso



C(i, j)  min
lVi1
( j ,l)A
c( j,l) C(i  1,l) , para 1  i  k  2
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
León Mariannys
C (k  1, j) 
c( j,d), si ( j,d) A
, en otro caso



C(i, j)  min
lVi1
( j ,l)A
c( j,l) C(i  1,l) , para 1  i  k  2
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
C(3,5)  min{8 C(4,7),11 C(4,8),6 C(4,9)}  13
C(3,6)  4 C(4,8)  13
C(2,2)  min{3 C(3,5),1 C(3,6)}  14
C(2,3)  4 C(3,5)  17
C(2,4)  min{5 C(3,5),9 C(3,6)}  18
C(1,1)  min{5 C(2,2),7 C(2,3),2 C(2,4)}  19
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
León Mariannys
Falta almacenar las decisiones hechas en cada etapa
que minimizan el coste:
Sea D(i,j) el valor de l que minimiza
Entonces el camino de coste mínimo es
v1=1; v2=D(1,1); v3=D(2,D(1,1)); etc.
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
c(j,l)C(i  1,l).
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
D(3,5)  7; D(3,6)  8
D(2,2)  6; D(2,3)  5; D(2,4)  5
D(1,1)  2 v1  1
v2  D(1,1)  2
v3  D(2,D(1,1))  6
v4  D(3,D(2,D(1,1)))  8
algoritmo multietapa(ent
G=(V,A,c):grafo;
ent k,n:nat;
sal P:vect[1..k]de 1..n)
{Los vértices están numerados de forma
que los
índices de los vértices de una etapa son
mayores
que los índices de los de la etapa
anterior.
El primer índice de C* y D, que sólo
identificaba
la etapa, se ha suprimido.}
variables C:vect[1..n]de real;
D:vect[1..n]de 1..n;
j,r:1..n
principio
C[n]:=0.0; {Cálculo de C* y D}
para j:=n-1 descendiendo
hasta 1 hacer
r:=vértice t.q. (j,r) A 3
c(j,r)+C[r] es
mínimo;
C[j]:=c(j,r)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n; {Construcción
del camino}
para j:=2 hasta k-1 hacer
P[j]:=D[P[j-1]]
fpara
fin
León Mariannys
Coste del algoritmo:
Si G está representado mediante
listas de adyacencia, entonces el
cálculo de r en el interior del primer
bucle lleva un tiempo proporcional
al grado del vértice j.
Por tanto, si a es el número de
arcos del grafo, el coste total del
algoritmo es (n+a).
(El segundo bucle lleva un
tiempo (k).)
CAMINO DE COSTE MÍNIMO EN UN
GRAFO MULTIETAPA
León Mariannys
Análogamente, se desarrolla la
recurrencia hacia atrás.
Ecuación de recurrencia hacia atrás:
Sea s(i,j) un camino de coste mínimo C*(i,j) desde el
vértice origen o hasta el vértice j del conjunto Vi.
Entonces
C(2, j) 
c(o, j), si (o, j) A
, en otro caso



C(i, j)  min
lVi1
(l , j)A
c(l, j) C(i  1,l) , para 3  i  k
101
2
3
4
5
6
7
8
9
5
7
2
3
1
4
5
9
8
11
6
4
5
9
12
V1 V2 V3 V4 V5
o d
León Mariannys
algoritmo multietapaB(ent
G=(V,A,c):grafo;
ent
k,n:nat;
sal
P:vect[1..k]de 1..n)
{Los vértices están
numerados de forma que los
índices de los vértices de
una etapa son mayores
que los índices de los de
la etapa anterior.
El primer índice de C* y
D, que sólo identificaba
la etapa, se ha
suprimido.}
variables C:vect[1..n]de
real;
D:vect[1..n]de
1..n;
j,r:1..n
principio
C[1]:=0.0; {Cálculo de
C* y D}
para j:=2 hasta n hacer
r:=vértice t.q.
(r,j)A 3
c(r,j)+C[r] es mínimo;
C[j]:=c(r,j)+C[r];
D[j]:=r
fpara;
P[1]:=1; P[k]:=n;
{Construcción del camino}
para j:=k-1 descendiendo
hasta 2 hacer
P[j]:=D[P[j+1]]
fpara
fin
Nota: La eficiencia es la misma si G está
representado mediante listas de adyacencia inversa.
León Mariannys
León Mariannys

Contenu connexe

Tendances

Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
LuiS YmAY
 

Tendances (20)

Programación dinámica
Programación dinámica Programación dinámica
Programación dinámica
 
Programación no lineal
Programación no linealProgramación no lineal
Programación no lineal
 
Metodos de programación No lineal
Metodos de programación No linealMetodos de programación No lineal
Metodos de programación No lineal
 
Programacion no lineal
Programacion no linealProgramacion no lineal
Programacion no lineal
 
Programacion no lineal
Programacion no linealProgramacion no lineal
Programacion no lineal
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
 
Programación no lineal
Programación no linealProgramación no lineal
Programación no lineal
 
Programacion no lineal
Programacion no linealProgramacion no lineal
Programacion no lineal
 
Wilfred Guillen
Wilfred GuillenWilfred Guillen
Wilfred Guillen
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no lineal
 
Introducción a la Programación No Lineal
Introducción a la Programación No LinealIntroducción a la Programación No Lineal
Introducción a la Programación No Lineal
 
Optimizacion
OptimizacionOptimizacion
Optimizacion
 
Programación lineal
Programación linealProgramación lineal
Programación lineal
 
Programación no lineal
Programación no linealProgramación no lineal
Programación no lineal
 
Metodos de programacion no-lineal
Metodos de programacion no-linealMetodos de programacion no-lineal
Metodos de programacion no-lineal
 
Optimización de Sistemas y funciones
Optimización de Sistemas y funcionesOptimización de Sistemas y funciones
Optimización de Sistemas y funciones
 
Programacionnolineal
Programacionnolineal Programacionnolineal
Programacionnolineal
 
metodos de programacion no lineal
metodos de programacion no linealmetodos de programacion no lineal
metodos de programacion no lineal
 
Programación lineal y pert. do
Programación lineal y pert. doProgramación lineal y pert. do
Programación lineal y pert. do
 
Metodos de programcion no lineal
Metodos de programcion no linealMetodos de programcion no lineal
Metodos de programcion no lineal
 

En vedette

Interpolacion de Polinomio
Interpolacion de PolinomioInterpolacion de Polinomio
Interpolacion de Polinomio
Myling Pinto
 
Compra y venta al mayoreo
Compra y venta al mayoreoCompra y venta al mayoreo
Compra y venta al mayoreo
kaviipeanut
 
solucionario Investigación de operaciones Hamdy a. Taha
 solucionario Investigación de operaciones Hamdy a. Taha solucionario Investigación de operaciones Hamdy a. Taha
solucionario Investigación de operaciones Hamdy a. Taha
angel05az
 
Investigación de Operaciones 1/2
Investigación de Operaciones 1/2Investigación de Operaciones 1/2
Investigación de Operaciones 1/2
CEMEX
 

En vedette (19)

Neo
NeoNeo
Neo
 
Revista digital
Revista digitalRevista digital
Revista digital
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Introduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacionIntroduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacion
 
Informe nro1 ivestigacion_operativa ii
Informe nro1 ivestigacion_operativa iiInforme nro1 ivestigacion_operativa ii
Informe nro1 ivestigacion_operativa ii
 
Interpolacion de Polinomio
Interpolacion de PolinomioInterpolacion de Polinomio
Interpolacion de Polinomio
 
Programacion dinamica final
Programacion dinamica finalProgramacion dinamica final
Programacion dinamica final
 
Metodos Cuantitativos 1
Metodos Cuantitativos 1Metodos Cuantitativos 1
Metodos Cuantitativos 1
 
Compra y venta al mayoreo
Compra y venta al mayoreoCompra y venta al mayoreo
Compra y venta al mayoreo
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 
Metodos Cuantitativos
Metodos CuantitativosMetodos Cuantitativos
Metodos Cuantitativos
 
Programación dinámica
Programación  dinámicaProgramación  dinámica
Programación dinámica
 
Inventario forestal
Inventario forestalInventario forestal
Inventario forestal
 
solucionario Investigación de operaciones Hamdy a. Taha
 solucionario Investigación de operaciones Hamdy a. Taha solucionario Investigación de operaciones Hamdy a. Taha
solucionario Investigación de operaciones Hamdy a. Taha
 
Diapositiva de inventarios
Diapositiva de inventariosDiapositiva de inventarios
Diapositiva de inventarios
 
Investigación de Operaciones 1/2
Investigación de Operaciones 1/2Investigación de Operaciones 1/2
Investigación de Operaciones 1/2
 
Investigacion de operaciones taha opti3
Investigacion de operaciones   taha opti3Investigacion de operaciones   taha opti3
Investigacion de operaciones taha opti3
 
Gestión Moderna de Inventarios
Gestión Moderna de InventariosGestión Moderna de Inventarios
Gestión Moderna de Inventarios
 
PROBLEMA DE LA MOCHILA
PROBLEMA DE LA MOCHILAPROBLEMA DE LA MOCHILA
PROBLEMA DE LA MOCHILA
 

Similaire à Programacion dinamica 22

Programación lineal
Programación linealProgramación lineal
Programación lineal
danile889_l
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos Directos
Kike Prieto
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directo
rjvillon
 
Problemas & Soluciones De Ejercicios De Programacion Lineal
Problemas & Soluciones De Ejercicios De Programacion LinealProblemas & Soluciones De Ejercicios De Programacion Lineal
Problemas & Soluciones De Ejercicios De Programacion Lineal
Instituto Tecnologico De Pachuca
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
zygdiaz
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmos
marshalleitor
 

Similaire à Programacion dinamica 22 (20)

Pr dinamica2mochila
Pr dinamica2mochilaPr dinamica2mochila
Pr dinamica2mochila
 
Clase io3
Clase io3Clase io3
Clase io3
 
Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Divide y Venceras
Divide y VencerasDivide y Venceras
Divide y Venceras
 
Programación lineal
Programación linealProgramación lineal
Programación lineal
 
Informe
InformeInforme
Informe
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos Directos
 
Avarap
AvarapAvarap
Avarap
 
An 04 metodos-directos
An 04 metodos-directosAn 04 metodos-directos
An 04 metodos-directos
 
3.metodo directo
3.metodo directo3.metodo directo
3.metodo directo
 
Metodos iterativos
Metodos iterativosMetodos iterativos
Metodos iterativos
 
Investigacion Operativa Aspectos Generales
Investigacion Operativa Aspectos GeneralesInvestigacion Operativa Aspectos Generales
Investigacion Operativa Aspectos Generales
 
Problemas & Soluciones De Ejercicios De Programacion Lineal
Problemas & Soluciones De Ejercicios De Programacion LinealProblemas & Soluciones De Ejercicios De Programacion Lineal
Problemas & Soluciones De Ejercicios De Programacion Lineal
 
Paralela6
Paralela6Paralela6
Paralela6
 
Solución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlabSolución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlab
 
Unidad 1 y 2 pre
Unidad 1 y 2 preUnidad 1 y 2 pre
Unidad 1 y 2 pre
 
110105553 programacion-lineal
110105553 programacion-lineal110105553 programacion-lineal
110105553 programacion-lineal
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
 
Resumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de AlgoritmosResumen Complejidad Computacional y de Algoritmos
Resumen Complejidad Computacional y de Algoritmos
 
Oviedo mco nolineales
Oviedo mco nolinealesOviedo mco nolineales
Oviedo mco nolineales
 

Dernier

Rotafolio de la obesidad en adolecentes y adultos
Rotafolio de la obesidad en adolecentes y adultosRotafolio de la obesidad en adolecentes y adultos
Rotafolio de la obesidad en adolecentes y adultos
CelesteGomesLopes
 
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdfcomo me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
leonar947720602
 
2.-del-absolutismo-al-despotismo-ilustrado.ppt
2.-del-absolutismo-al-despotismo-ilustrado.ppt2.-del-absolutismo-al-despotismo-ilustrado.ppt
2.-del-absolutismo-al-despotismo-ilustrado.ppt
toribioCcanchillanos
 
planeacion de encuentros pedagogicos atencion primera infancia
planeacion de encuentros pedagogicos atencion primera infanciaplaneacion de encuentros pedagogicos atencion primera infancia
planeacion de encuentros pedagogicos atencion primera infancia
IbethRincon
 
teoriasymodelosdeenfermeria-190315005411.pptx
teoriasymodelosdeenfermeria-190315005411.pptxteoriasymodelosdeenfermeria-190315005411.pptx
teoriasymodelosdeenfermeria-190315005411.pptx
djosemagarino
 

Dernier (20)

EXPOSICION FOTOGRAFICA 1946-2024 Aniversario Conservatorio Carlos Valderrama ...
EXPOSICION FOTOGRAFICA 1946-2024 Aniversario Conservatorio Carlos Valderrama ...EXPOSICION FOTOGRAFICA 1946-2024 Aniversario Conservatorio Carlos Valderrama ...
EXPOSICION FOTOGRAFICA 1946-2024 Aniversario Conservatorio Carlos Valderrama ...
 
El Legado de Walter Gropius y Frank Lloyd Wright en la Arquitectura Moderna_c...
El Legado de Walter Gropius y Frank Lloyd Wright en la Arquitectura Moderna_c...El Legado de Walter Gropius y Frank Lloyd Wright en la Arquitectura Moderna_c...
El Legado de Walter Gropius y Frank Lloyd Wright en la Arquitectura Moderna_c...
 
música de la Región caribe colombiana .pptx
música de la Región caribe colombiana .pptxmúsica de la Región caribe colombiana .pptx
música de la Región caribe colombiana .pptx
 
Burger- la negación de la autonomia del arte en la vanguardia.pdf
Burger- la negación de la autonomia del arte en la vanguardia.pdfBurger- la negación de la autonomia del arte en la vanguardia.pdf
Burger- la negación de la autonomia del arte en la vanguardia.pdf
 
"Explorando la Pintura Costumbrista en la República Dominicana con E. Vidal"
"Explorando la Pintura Costumbrista en la República Dominicana con E. Vidal""Explorando la Pintura Costumbrista en la República Dominicana con E. Vidal"
"Explorando la Pintura Costumbrista en la República Dominicana con E. Vidal"
 
Módulo de teoría sobre fotografía pericial
Módulo de teoría sobre fotografía pericialMódulo de teoría sobre fotografía pericial
Módulo de teoría sobre fotografía pericial
 
Rotafolio de la obesidad en adolecentes y adultos
Rotafolio de la obesidad en adolecentes y adultosRotafolio de la obesidad en adolecentes y adultos
Rotafolio de la obesidad en adolecentes y adultos
 
Generalidades de las cámaras fotogr[aficas
Generalidades de las cámaras fotogr[aficasGeneralidades de las cámaras fotogr[aficas
Generalidades de las cámaras fotogr[aficas
 
Catálogo Mayo en Artelife Regalería Cristiana
Catálogo Mayo en Artelife Regalería CristianaCatálogo Mayo en Artelife Regalería Cristiana
Catálogo Mayo en Artelife Regalería Cristiana
 
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdfcomo me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
como me enamore de ti (1).pdf.pdf_20240401_120711_0000.pdf
 
El marinerismo y sus características en la arquitectura
El marinerismo y sus características en la arquitecturaEl marinerismo y sus características en la arquitectura
El marinerismo y sus características en la arquitectura
 
ODEBRECHT Y EL OSCE EN EL PERU Y SU PROBLEMATICAS
ODEBRECHT Y EL OSCE EN EL PERU Y SU PROBLEMATICASODEBRECHT Y EL OSCE EN EL PERU Y SU PROBLEMATICAS
ODEBRECHT Y EL OSCE EN EL PERU Y SU PROBLEMATICAS
 
Cuadernillobdjjdjdjdjjdjdkdkkdjdjfujfjfj
CuadernillobdjjdjdjdjjdjdkdkkdjdjfujfjfjCuadernillobdjjdjdjdjjdjdkdkkdjdjfujfjfj
Cuadernillobdjjdjdjdjjdjdkdkkdjdjfujfjfj
 
minierismo historia caracteristicas gabriel silva.pdf
minierismo historia caracteristicas gabriel silva.pdfminierismo historia caracteristicas gabriel silva.pdf
minierismo historia caracteristicas gabriel silva.pdf
 
2.-del-absolutismo-al-despotismo-ilustrado.ppt
2.-del-absolutismo-al-despotismo-ilustrado.ppt2.-del-absolutismo-al-despotismo-ilustrado.ppt
2.-del-absolutismo-al-despotismo-ilustrado.ppt
 
PRIMER EXAMEN_merged (3).pdfdsadsadasdasd
PRIMER EXAMEN_merged (3).pdfdsadsadasdasdPRIMER EXAMEN_merged (3).pdfdsadsadasdasd
PRIMER EXAMEN_merged (3).pdfdsadsadasdasd
 
planeacion de encuentros pedagogicos atencion primera infancia
planeacion de encuentros pedagogicos atencion primera infanciaplaneacion de encuentros pedagogicos atencion primera infancia
planeacion de encuentros pedagogicos atencion primera infancia
 
Arribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolArribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y español
 
teoriasymodelosdeenfermeria-190315005411.pptx
teoriasymodelosdeenfermeria-190315005411.pptxteoriasymodelosdeenfermeria-190315005411.pptx
teoriasymodelosdeenfermeria-190315005411.pptx
 
Resumen de generalidades de la fotografia.
Resumen de generalidades de la fotografia.Resumen de generalidades de la fotografia.
Resumen de generalidades de la fotografia.
 

Programacion dinamica 22

  • 1. República Bolivariana de Venezuela Instituto Universitario Politécnico “Santiago Mariño” Escuela de Ing. Industrial Autor: León G. Mariannys. C.I:23. 924. 004 Inv. Operaciones II Sección: E Profesora. Amelia Malavé Maturín Enero del 2015
  • 2. Una técnica que parte del principio de no calcular dos veces la misma información, por lo tanto se utilizan estructuras de almacenamiento como vectores, tablas, arreglos, archivos, con el fin de almacenarlos resultados parciales, que contribuyan a la solución final. Este algoritmo evita calcular dos veces la misma información, manteniendo una tabla de resultados conocidos, la cual se va llenando a medida que se resuelven los subcasos. ES: LA PROGRAMACION DINAMICA León Mariannys
  • 3. PROGRAMACIÓN DINAMICA Se utiliza para reducir el tiempo de ejecución de un algoritmo La programación hace uso de: Subproblemas Superpuestos Memoizacion León Mariannys
  • 4. LA PROGRAMACIÓN TOMA NORMALMENTE UNO DE LOS DOS SIGUIENTES ENFOQUES: TOP- DOWN: El problema se divide en subproblemas, y estos se resuelven recordando las soluciones por si fueran necesarias nuevamente. BOTTOM-UP: Este enfoque es ligeramente mejor en consumo de espacio y llamadas a funciones, pero a veces resulta poco intuitivo encontrar todos los subproblemas necesarios para resolver un problema dado. León Mariannys
  • 5. CARACTERISTICAS DE LA PROGRAMACION DINAMICA León Mariannys
  • 7. MODELO DE PROGRAMACION DINAMICA Existen tres modelos diferentes manejados por WINQSB.  Problema de la diligencia (Stagecoach Problem)  Problema de la mochila (Snapsack Problem)  Programación de producción e inventarios (Production and Inventory Scheduling) LEON MARIANNYS
  • 8. TÉCNICA DE PROGRAMACIÓN DINÁMICA  Se emplea típicamente para resolver problemas de optimización.  Permite resolver problemas mediante una secuencia de decisiones.  Como el esquema voraz  A diferencia del esquema voraz, se producen varias secuencias de decisiones y solamente al final se sabe cuál es la mejor de ellas.  Está basada en el principio de optimalidad de Bellman: “Cualquier secuencia de decisiones de una secuencia óptima de decisiones que resuelve un problema también debe ser óptima respecto al subproblema que resuelve.” León Mariannys
  • 9. PROGRAMACION DINAMICA: SUPUESTO Supongamos que un problema se resuelve tras tomar un secuencia d1, d2, …, dn de decisiones. Si hay d opciones posibles para cada una de las decisiones, una técnica de fuerza bruta exploraría un total de dn secuencias posibles de decisiones (explosión combinatoria). La técnica de programación dinámica evita explorar todas las secuencias posibles por medio de la resolución de subproblemas de tamaño creciente y almacenamiento en una tabla de las soluciones óptimas de esos subproblemas para facilitar la solución de los problemas más grandes. León Mariannys
  • 10. EL PROBLEMA DE LA MOCHILA 0-1 Sea mochila(k,l,P) el problema: El problema de la mochila 0-1 es mochila(1,n,C). El problema de la mochila 0-1 es mochila(1,n,C maximizar bixi i k l  sujeto a pixi i k l   P con xi {0,1}, k  i  l León Mariannys
  • 11. Ecuación de recurrencia hacia adelante: Si es el beneficio (o ganancia total) de una solución óptima de mochila(j,n,c), entonces dependiendo de que el objeto j-ésimo entre o no en la solución (nótese que sólo puede entrar si c-pj≥0). Ademas: v gn  1 (c)  0, para cualquier capacidad c Ambas ecuaciones permiten calcular , que es el valor de una solución óptima de mochila(1,n,C). (Nótese que la ecuación de recurrencia es hacia adelante pero el cálculo se realiza hacia atrás.) León Mariannys
  • 12. Ecuación de recurrencia hacia atrás: Si es el beneficio (o ganancia total) de una solución óptima de mochila(1,j,c), entonces Dependiendo de que el objeto j-ésimo entre o no en la solución (nótese que sólo puede entrar si c-pj≥0). Además: w gj(c)  max w gj1(c), w gj1(c  pj) bj  wg0(c)  0, para cualquier capacidad c Ambas ecuaciones permiten calcular , que es el valor de una solución óptima de mochila(1,n,C). (Ahora la recurrencia es hacia atrás pero el cálculo se realiza hacia adelante.) León Mariannys
  • 13.  Tanto la recurrencia hacia adelante como hacia atrás permiten escribir un algoritmo recursivo de forma inmediata. función mochila1(p,b:vector[1..n] de nat; C:nat) devuelve nat principio devuelve g(n,C) fin función g(j,c:nat) devuelve nat principio si j=0 entonces devuelve 0 sino si c<p[j] entonces devuelve g(j-1,c) sino si g(j-1,c)≥g(j-1,c-p[j])+b[j] entonces devuelve g(j-1,c) sino devuelve g(j-1,c-p[j])+b[j] fsi fsi fsi fin León Mariannys
  • 14. EL PROBLEMA DE LA MOCHILA  Problema: ineficiencia Un problema de tamaño n se reduce a dos subproblemas de tamaño (n-1). Cada uno de los dos subproblemas se reduce a otros dos…  Por tanto, se obtiene un algoritmo exponencial.  Sin embargo, el número total de sub-problemas a resolver no es tan grande: La función tiene dos parámetros: el primero puede tomar n valores distintos y el segundo, C valores.  ¡Luego sólo hay nC problemas diferentes!  Por tanto, la solución recursiva está generando y resolviendo el mismo problema muchas veces. León Mariannys
  • 15. Para evitar la repetición de cálculos, las soluciones de los subproblemas se deben almacenan en una tabla. Matriz n C cuyo elemento (j,c) almacena Para el ejemplo anterior: n=3 C=15 (b1,b2,b3)=(38,40,24) (p1,p2,p3)=(9,6,5) EL PROBLEMA DE LA MOCHILA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 p1  9 0 0 0 0 0 0 0 0 0 38 38 38 38 38 38 38 p2  6 0 0 0 0 0 0 40 40 40 40 40 40 40 40 40 78 p3  5 0 0 0 0 0 24 40 40 40 40 40 64 64 64 64 78 w gj(c)  max w gj1(c), w gj1(c  pj) bj  León Mariannys
  • 16. algoritmo mochila(ent p,b:vect[1..n]de nat; ent Cap:nat; sal g:vect[0..n,0..Cap]de nat) variables c,j:nat principio para c:=0 hasta Cap hacer g[0,c]:=0 fpara; para j:=1 hasta n hacer g[j,0]:=0 fpara; para j:=1 hasta n hacer para c:=1 hasta Cap hacer si c<p[j] entonces g[j,c]:=g[j- 1,c] sino si g[j- 1,c]≥g[j-1,c-p[j]]+b[j] entonces g[j,c]:=g[j-1,c] sino g[j,c]:=g[j-1,c- p[j]]+b[j] fsi fsi fpara EL PROBLEMA DE LA MOCHILA León Mariannys
  • 17. Cálculos posibles a partir de la tabla g: beneficio total: g[n,Cap] los objetos metidos en la mochila: algoritmo objetos(ent p,b:vect[1..n]de nat; ent Cap:nat; ent g:vect[0..n,0..Cap]de nat) principio test(n,Cap) fin algoritmo test(ent j,c:nat) principio si j>0 entonces si c<p[j] entonces test(j-1,c) sino si g[j-1,c-p[j]]+b[j]>g[j-1,c] entonces test(j-1,c-p[j]); escribir('meter ',j) sino test(j-1,c) fsi fsi fsi fin EL PROBLEMA DE LA MOCHILA León Mariannys
  • 18. CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d Grafo multietapa: Un grafo multietapa G=(V,A) es un grafo dirigido en el que se puede hacer una partición del conjunto V de vértices en k (k≥2) conjuntos distintos Vi, 1≤i≤k, tal que todo arco del grafo (u,v) es tal que u Vi y v Vi+1 para algún i, 1≤i<k. Los conjuntos V1 y Vk tienen un solo vértice que se llama vértice origen, o, y vértice destino, d, respectivamente. • Consideraremos grafos etiquetados. Denotamos por c(u,v) el coste del arco (u,v). León Mariannys
  • 19. CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA El problema: Encontrar un camino de coste mínimo que vaya de o a d. Todo camino de o a d tiene exactamente un vértice en cada Vi, por eso se dice que cada Vi define una etapa del grafo. 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d León Mariannys
  • 20. CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA Ejemplo de aplicación: Se tienen n unidades de un recurso que deben asignarse a r proyectos. Si se asignan j, 0≤j≤n, unidades al proyecto i se obtiene un beneficio Ni,j. El problema es asignar el recurso a los r proyectos maximizando el beneficio total León Mariannys
  • 21. Formulación como grafo multietapa: Número de etapas: r+1 La etapa i, 1≤i≤r, representa el proyecto i. Hay n+1 vértices vi,j, 0≤j≤n, en cada etapa i, 2≤i≤r. Las etapas 1 y r+1 tienen un vértice, o=v1,0 y d=vr+1,n, respectivamente. El vértice vi,j, 2≤i≤r, representa el estado en el que se asignan un total de j unidades del recurso a los proyectos 1, 2, …, i-1. Los arcos son de la forma (vi,j,vi+1,l) para todo j≤l y 1≤i<r. El arco (vi,j,vi+1,l), j≤l, tiene asignado un coste Ni,l-j que corresponde a asignar l-j unidades del recurso al proyecto i, 1≤i<r. Además hay arcos de la forma (vr,j,vr+1,n), que tienen asignado un coste CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA max 0p n j {Nr ,p }. León Mariannys
  • 22. Grafo resultante para r=3 y n=4. La asignación óptima está definida por un camino de coste máximo de o a d. Para convertirlo en un problema de camino de coste mínimo basta cambiar los signos de las etiquetas. o  v1,0 v2,1 v2,0 v2,2 v2,3 v2,4 v3,0 v3,1 v3,2 v3,3 v3,4 d  v4,4 N1,0 N1,1 N1,2 N1,3 N1,4 N2,0 N2,0 N2,1 N2,1 N2,2 N2,3 N2,4 N2,0 N2,0 N2,1 N2,0 N2,1 N2,2 N2,3 N2,2 N3,0 max i 0,1 {N3,i} max i 0,1,2 {N3,i} max i 0,1,2,3 {N3,i} max i 0,1,2,3,4 {N3,i} León Mariannys
  • 23. Solución de programación dinámica: 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d • Cada camino de o a d es el resultado de una secuencia de k-2 decisiones. Decisión i-ésima: determinar, a partir de un vértice vi de Vi, un arco que tenga a vi como origen y algún nodo de Vi+1 como destino. Principio de optimalidad: • El camino de coste mínimo debe contener subcaminos de coste mínimo entre otros nodos. Dem.: En otro caso, podrían sustituirse dichos subcaminos por otros mejores, resultando un camino total de coste menor León Mariannys
  • 24. Ecuación de recurrencia hacia adelante: Sea s(i,j) un camino de coste mínimo C*(i,j) desde el vértice j del conjunto Vi hasta el vértice destino d. Entonces: C(k  1, j)  c( j,d), si ( j,d) A , en otro caso    C(i, j)  min lVi1 ( j ,l)A c( j,l) C(i  1,l) , para 1  i  k  2 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA León Mariannys
  • 25. C (k  1, j)  c( j,d), si ( j,d) A , en otro caso    C(i, j)  min lVi1 ( j ,l)A c( j,l) C(i  1,l) , para 1  i  k  2 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d C(3,5)  min{8 C(4,7),11 C(4,8),6 C(4,9)}  13 C(3,6)  4 C(4,8)  13 C(2,2)  min{3 C(3,5),1 C(3,6)}  14 C(2,3)  4 C(3,5)  17 C(2,4)  min{5 C(3,5),9 C(3,6)}  18 C(1,1)  min{5 C(2,2),7 C(2,3),2 C(2,4)}  19 CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA León Mariannys
  • 26. Falta almacenar las decisiones hechas en cada etapa que minimizan el coste: Sea D(i,j) el valor de l que minimiza Entonces el camino de coste mínimo es v1=1; v2=D(1,1); v3=D(2,D(1,1)); etc. CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA c(j,l)C(i  1,l). 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d D(3,5)  7; D(3,6)  8 D(2,2)  6; D(2,3)  5; D(2,4)  5 D(1,1)  2 v1  1 v2  D(1,1)  2 v3  D(2,D(1,1))  6 v4  D(3,D(2,D(1,1)))  8
  • 27. algoritmo multietapa(ent G=(V,A,c):grafo; ent k,n:nat; sal P:vect[1..k]de 1..n) {Los vértices están numerados de forma que los índices de los vértices de una etapa son mayores que los índices de los de la etapa anterior. El primer índice de C* y D, que sólo identificaba la etapa, se ha suprimido.} variables C:vect[1..n]de real; D:vect[1..n]de 1..n; j,r:1..n principio C[n]:=0.0; {Cálculo de C* y D} para j:=n-1 descendiendo hasta 1 hacer r:=vértice t.q. (j,r) A 3 c(j,r)+C[r] es mínimo; C[j]:=c(j,r)+C[r]; D[j]:=r fpara; P[1]:=1; P[k]:=n; {Construcción del camino} para j:=2 hasta k-1 hacer P[j]:=D[P[j-1]] fpara fin León Mariannys
  • 28. Coste del algoritmo: Si G está representado mediante listas de adyacencia, entonces el cálculo de r en el interior del primer bucle lleva un tiempo proporcional al grado del vértice j. Por tanto, si a es el número de arcos del grafo, el coste total del algoritmo es (n+a). (El segundo bucle lleva un tiempo (k).) CAMINO DE COSTE MÍNIMO EN UN GRAFO MULTIETAPA León Mariannys
  • 29. Análogamente, se desarrolla la recurrencia hacia atrás. Ecuación de recurrencia hacia atrás: Sea s(i,j) un camino de coste mínimo C*(i,j) desde el vértice origen o hasta el vértice j del conjunto Vi. Entonces C(2, j)  c(o, j), si (o, j) A , en otro caso    C(i, j)  min lVi1 (l , j)A c(l, j) C(i  1,l) , para 3  i  k 101 2 3 4 5 6 7 8 9 5 7 2 3 1 4 5 9 8 11 6 4 5 9 12 V1 V2 V3 V4 V5 o d León Mariannys
  • 30. algoritmo multietapaB(ent G=(V,A,c):grafo; ent k,n:nat; sal P:vect[1..k]de 1..n) {Los vértices están numerados de forma que los índices de los vértices de una etapa son mayores que los índices de los de la etapa anterior. El primer índice de C* y D, que sólo identificaba la etapa, se ha suprimido.} variables C:vect[1..n]de real; D:vect[1..n]de 1..n; j,r:1..n principio C[1]:=0.0; {Cálculo de C* y D} para j:=2 hasta n hacer r:=vértice t.q. (r,j)A 3 c(r,j)+C[r] es mínimo; C[j]:=c(r,j)+C[r]; D[j]:=r fpara; P[1]:=1; P[k]:=n; {Construcción del camino} para j:=k-1 descendiendo hasta 2 hacer P[j]:=D[P[j+1]] fpara fin Nota: La eficiencia es la misma si G está representado mediante listas de adyacencia inversa. León Mariannys