Está en la página 1de 19

Rod

Rod cutting
cutting
Programacin
Programacin Dinmica
Dinmica

Alex Ticona Bejarrano


Nicolas Herencia Castro
Suma Paucara Miguel Angel

Universidad Nacional de San Agustn


Escuela Profesional Ingeniera de Sistemas

RodDEL
22 DEL FEBRERO Cutting
2017 1/11
Rod Cutting

ndice
Explicacin del problema
Introduccin al problema
Enunciado
Algoritmo Recursivo
Anlisis
Formulacin Recursiva
Hallmark #1: Subestructuras
ptimas
Demostracin
Implementacin
Anlisis del tiempo de Ejecucin
Hallmark #2: Subproblemas
repetidos
Top-Down Memoization
Rod Cutting 2/11
Rod Cutting
Explicacin del Problema
Introduccin

Introduccin
Serling Enterprises compra varillas largas de acero y las
corta en varillas mas pequeas, las cuales
posteriormente las vende obteniendo ingresos. Se desea
saber la mejor forma de cortar las varillas.

Asumimos que sabemos el precio pi que la empresa


cobra por una varilla de longitud i pulgadas.

Longitu 1 2 3 4 5 6 7
di
Precio 1 5 8 9 10 16 17
pi
Rod Cutting 3/11
Rod Cutting
Explicacin del Problema
Enunciado

Enunciado del problema

Dada una varilla de longitud n pulgadas y una


tabla de precios pi (donde i = 1, 2, ..., n),
determinar el mximo ingreso rn que se puede
obtener cortando la varilla y vendiendo las
piezas.
10 1 1

rn =
Longitu 1 2 3 4 5 6 7 12
di
Precio 1 5 8 9 10 16 17
pi
Rod Cutting 4/11
Rod Cutting
Explicacin del Problema
Enunciado

Enunciado del problema

Dada una varilla de longitud n pulgadas y una


tabla de precios pi (donde i = 1, 2, ..., n),
determinar el mximo ingreso rn que se puede
obtener cortando la varilla y vendiendo las
piezas.
1 8 1 5

rn =
Longitu 1 2 3 4 5 6 7 15
di
Precio 1 5 8 9 10 16 17
pi
Rod Cutting 4/11
Rod Cutting
Explicacin del Problema
Enunciado

Enunciado del problema

Dada una varilla de longitud n pulgadas y una


tabla de precios pi (donde i = 1, 2, ..., n),
determinar el mximo ingreso rn que se puede
obtener cortando la varilla y vendiendo las
piezas. 17

rn =
Longitu 1 2 3 4 5 6 7 17
di
Precio 1 5 8 9 10 16 17
pi
Rod Cutting 4/11
Rod Cutting
Explicacin del Problema
Enunciado

Enunciado del problema

Dada una varilla de longitud n pulgadas y una


tabla de precios pi (donde i = 1, 2, ..., n),
determinar el mximo ingreso rn que se puede
obtener cortando la varilla y vendiendo las
piezas. 5 5 8

rn =
Longitu 1 2 3 4 5 6 7 18
di
Precio 1 5 8 9 10 16 17
pi
Rod Cutting 4/11
Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4

a) b) c) d)

e) f) g) h)

Hay posiciones de corte, y se debe escoger cortes


Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4 0
cortes
a) b) c) d)

e) f) g) h)

Hay posiciones de corte, y se debe escoger cortes


Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4 1 corte

a) b) c) d)

e) f) g) h)

Hay posiciones de corte, y se debe escoger cortes


Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4

a) b) c) d)

e) f) g) h)

2
cortes
Hay posiciones de corte, y se debe escoger cortes

Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4

a) b) c) d)

e) f) g) h)

3
cortes
Hay posiciones de corte, y se debe escoger cortes

Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Anlisis

En cuntas formas distintas podemos cortar una varilla


de longitud n?
Rpta. : 2n-1

Ej. n = 4

a) b) c) d)

e) f) g) h)

Hay posiciones de corte, y se debe escoger cortes


Yuliana G. Apaza Yllachura Rod Cutting 5/11


Rod Cutting
Algoritmo Recursivo
Formulacin Recursiva

Formulacin Recursiva
Notacin Aditiva:

Si una solucin ptima corta la varilla en k piezas, donde


, entonces su descomposicin sera:

Rod Cutting 6/11


Rod Cutting
Hallmark #1
Demostracin

Hallmark #1: Subestructuras ptimas


Demostracin:

Sea el ingreso mximo obtenido, es decir:

con a =

debe ser ptimo?


Supongamos que existe un b > a, entonces

Pero esto es contradictorio.

Rod Cutting 7/11


Rod Cutting
Hallmark #1
Implementacin

Implementacin

Cut-Rod(p, n)
1 if n == 0
2 return 0
3 q = -inf
4 for i = 1 to n
5 q = max(q, p[i] + Cut-Rod(p, n - i))
6 return q

Cada vez que el tamao de entrada se hace ms


grande, su tiempo de ejecucin ir duplicndose
aproximadamente.

Rod Cutting 8/11


Rod Cutting
Hallmark #1
Anlisis del tiempo de ejecucin

Por qu es ineficiente?
Cut-Rod(p, n) Cut-Rod(p, n-i) , i = 1,2, ... n
n

n1 n-2 ... 1 0

n2 n-3 ... 1 0 n3 n-4 ... 1 0 0

... ... 0 ... ... 0

Tiempo Exponencial !

Yuliana G. Apaza Yllachura Rod Cutting 9/11


Rod Cutting
Hallmark #2

Hallmark #2: Subproblemas repetidos

Mtodos

- Top-down con
Memoization

Una solucin de tiempo exponencial puede ser


transformada a tiempo polinomial.

Rod Cutting 10/11


Rod Cutting
Hallmark #2
Memoization

Memorization
Memoized-Cut-Rod (p, n)
1 let r[0...n] be a new array -inf -inf -inf ... -inf -inf -inf
2 for i = 0 to n
3 r[i] = -inf
4 return Memoized-Cut-Rod-Aux(p, n,
r)
Memoized-Cut-Rod-Aux(p, n, r)
1 if r[n] 0
2 return r[n]
3 if n == 0 n
4 q = 0
-inf -inf -inf ... q -inf -inf
5 else q = -inf
6 for i = 1 to n
7 q = max(q, p[i] + Memoized-Cut-Rod-Aux(p, n - i,
8 r))
9 r[n] = q
return q
Rod Cutting 11/11

También podría gustarte