SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Dise˜no de algoritmos
Algoritmos de Vuelta Atr´as
Jes´us Berm´udez de Andr´es
Universidad del Pa´ıs Vasco/Euskal Herriko Unibertsitatea (UPV/EHU)
Curso 2008-09
1 Algoritmos de vuelta atr´as
El coloreado de mapas
N´umero m´ınimo de monedas
Suma de subconjunto
El problema de la mochila
Algoritmos de vuelta atr´as (1/2)
Hay problemas para los que no se conoce mejor soluci´on que la que
consiste, b´asicamente, en una b´usqueda sistem´atica en un espacio de
propuestas posibles de soluci´on.
La t´ecnica de vuelta atr´as consiste en construir la soluci´on de un problema
mediante extensiones de ensayos parciales de soluci´on.
En general, se parte del ensayo neutro [ ] y en un estado intermedio del
proceso, tras haber construido el ensayo parcial [x1, . . . , xi ], se tantea
sistem´aticamente con cada posibilidad xi+1 de extender el ensayo:
si [x1, . . . , xi , xi+1] es un ensayo aceptable, se extiende [x1, . . . , xi ] a
[x1, . . . , xi , xi+1] y se contin´ua con este ´ultimo ensayo parcial.
si ninguna de las posibilidades para xi+1 hacen que [x1, . . . , xi , xi+1]
sea aceptable entonces significa que el ensayo [x1, . . . , xi ] no es
extensible a soluci´on, por consiguiente retiramos la ´ultima opci´on xi
a˜nadida a ese ensayo y continuamos con el ensayo parcial
[x1, . . . , xi−1] tanteando otra posible opci´on.
´Arbol de ensayos
Algoritmos de vuelta atr´as (2/2)
Esta estrategia equivale al recorrido en profundidad de un ´arbol impl´ıcito
(ya que ese ´arbol no est´a representado por ninguna estructura de datos)
comenzando desde la ra´ız, tal que cada nodo se corresponde con un
ensayo parcial y cada arista que parte de un nodo se corresponde con una
opci´on de tanteo.
Cuando un ensayo no es aceptable equivale a podar la posible rama del
´arbol que pudiera crecer desde ese nodo. Cuanto m´as “inteligente” sea la
poda m´as eficiente ser´a el algoritmo.
Las hojas de ese ´arbol impl´ıcito se corresponden con ensayos no extensibles
a soluci´on o bien con ensayos que son soluci´on.
Esquema de vuelta atr´as que calcula todas las soluciones
proc Ensayar (E)
if Soluci´on(E) then
“gestionar el E soluci´on”
{else }
for cada posibilidad p de extender E loop
if Es aceptable(E + p) then
Ensayar (E + p)
Debe retirarse la cl´ausula {else } en caso de que haya soluciones que sean
prefijos de otras soluciones.
Esquema de vuelta atr´as que calcula la primera soluci´on
proc Ensayar (E, ´exito)
if Soluci´on(E) then
“gestionar el E soluci´on”
´exito ← true
else
for cada posibilidad p de extender E loop
if Es aceptable(E + p) then
Ensayar (E + p, ´exito)
if ´exito then return
An´alisis de un algoritmo de vuelta atr´as
Un modo de aproximarse al an´alisis de la eficiencia de los algoritmos de
vuelta atr´as es analizar el ´arbol impl´ıcito de ensayos explorado por el
algoritmo:
1 contar el n´umero de ensayos explorados.
2 analizar el coste de calcular las posibilidades de extender cada ensayo
y el coste de generar cada nuevo ensayo.
3 analizar el coste de comprobaci´on de la aceptaci´on de un ensayo.
Hay que observar que el resultado es una cota superior.
El rendimiento real del algoritmo puede ser mucho mejor, ya que la funci´on
de aceptaci´on de ensayos puede podar una cantidad considerable de ramas
del ´arbol impl´ıcito. De hecho, la utilidad de los algoritmos de vuelta atr´as
depende principalmente de la capacidad de aplicaci´on de funciones de
aceptaci´on que poden convenientemente ramas del ´arbol de ensayos.
Evaluaci´on usando un M´etodo de Montecarlo.
El coloreado de mapas
Calcular todas las formas posibles de colorear los pa´ıses de un mapa
pol´ıtico, usando s´olo cuatro colores, de manera que ning´un par de pa´ıses
fronterizos est´e pintado del mismo color.
Representamos el mapa mediante un grafo no dirigido en el que los nodos
representan a los pa´ıses y cada arista representa que sus extremos son
pa´ıses fronterizos. En particular, representaremos un mapa con n pa´ıses
mediante una matriz de adyacencia F(1..n, 1..n) con valores booleanos.
´Arbol de ensayos para Cuatro colores
Un ensayo de longitud k consiste en la lista de colores (tomados de los
cuatro posibles) que se han asignado a los pa´ıses numerados con [1, . . . , k].
Representamos los ensayos con un vector color(1..n) con valores en el
conjunto {1, 2, 3, 4} que representa a los cuatro colores. En cada momento
del proceso s´olo son representativos los k primeros componentes del vector
color.
Cuando k llegue a ser n y se satisfaga la condici´on de aceptaci´on
tendremos una soluci´on del problema.
Una extensi´on de un ensayo de longitud k consiste en dar color al pa´ıs
n´umero k + 1. Supongamos que tenemos un ensayo de longitud k que
satisface las restricciones del problema, entonces una extensi´on de ese
ensayo es aceptable si el color asignado al pa´ıs n´umero k + 1 es distinto
del color asignado a sus adyacentes que est´en numerados del 1 al k.
Algoritmo Cuatro colores (1/2)
La llamada inicial debe ser Cuatro colores(0, F, color)
proc Cuatro colores(k, F(1..n, 1..n), color(1..n))
{k: n´umero de pa´ıses coloreados}
if k = n then
Imprimir(color(1..n))
else
for C in 1..,4 loop
color(k + 1) ← C
if Es aceptable(F, color, k + 1) then
Cuatro colores(k + 1, F, color)
Algoritmo Cuatro colores (2/2)
func Es aceptable(F, color, ´ultimo) return boolean
{´ultimo: ´ındice del ´ultimo pa´ıs coloreado}
acept ← true
pa´ıs ← 1
while pa´ıs < ´ultimo ∧ acept loop
if F(pa´ıs, ´ultimo) ∧ color(pa´ıs)=color(´ultimo) then
acept ← false
end if
pa´ıs ← pa´ıs + 1
end loop
return acept
N´umero m´ınimo de monedas (1/2)
Dadas n de monedas, de valores v1, . . . , vn respectivamente, determinar
cual es el n´umero m´ınimo de monedas que necesitamos para sumar una
determinada cantidad C.
Un ensayo ser´a una secuencia de los valores de esas monedas, que
denominaremos SEC. Para completar la representaci´on de un ensayo
tendremos: una variable suma que representa la suma de los valores
de SEC, una variable long que representa la longitud de SEC y una
variable k que representa el sub´ındice de la moneda que hay que
considerar a continuaci´on.
La parte del esquema de vuelta atr´as dedicada a “gestionar el ensayo
soluci´on” sirve para memorizar la mejor soluci´on encontrada hasta el
momento.
La soluci´on ´optima ser´a la que quede registrada en la secuencia OPT,
de longitud longOPT.
´Arbol de ensayos para N´umero m´ınimo de monedas
N´umero m´ınimo de monedas (2/2)
Suponemos ordenados los valores de monedas, de manera que
v1 ≤ v2 ≤ . . . ≤ vn
Ensayo: Un secuencia de valores de monedas
Las posibilidades de extender un ensayo [vi , . . . , vk−1] son vk . . . vn
El ensayo [vi , . . . , vk−1, vk] es aceptable si su longitud es menor que
longOPT y su suma menor o igual que C
Un ensayo es soluci´on si su suma es igual a C
Algoritmo MinMonedas
Para podar algunas ramas del ´arbol de ensayos, asumimos que tenemos
ordenadas las monedas de manera que v1 ≤ . . . ≤ vn.
proc MinMonedas(SEC, k, long, suma, OPT, longOPT)
if suma = C then
if long < longOPT then
OPT ← SEC
longOPT ← long
else
while (k ≤ n) ∧ (1 + long < longOPT) ∧ (suma + vk ≤ C) loop
SEC[1 + long] ← vk
MinMonedas(SEC, k + 1, 1 + long, suma + vk, OPT, longOPT)
k ← k + 1
La llamada inicial debe ser MinMonedas(SEC, 1, 0, 0, OPT, n + 1)
Variaci´on de N´umero m´ınimo de monedas
¿Qu´e modificaciones debemos hacer en el algoritmo MinMonedas si
disponemos de tantas monedas como se desee de cada valor v1, . . . , vn?
Una vez analizada la modificaci´on del ´arbol de ensayos, observamos que
basta con sustituir el valor de k + 1 por k en la llamada recursiva, es decir:
MinMonedas(SEC, k, 1 + long, suma + vk, OPT, longOPT)
Suma de subconjunto
Disponemos de valores V = {V1, . . . , Vn} enteros positivos y queremos
saber todas las formas posibles de sumar D con subconjuntos de V .
Un ensayo constar´a de un vector conjunto de ceros y unos, de manera
que conjunto[i] = 1 representa que Vi pertenece al subconjunto
seleccionado y conjunto[i] = 0 representa que no.
Tendremos dos variables: suma que representa la suma de los valores
del subconjunto seleccionado y resto que representa la suma de los
valores que quedan todav´ıa por considerar.
La variable j representa el sub´ındice del valor de V que hay que
considerar a continuaci´on.
Para podar m´as ramas es importante considerar los valores de V en
orden creciente: Suponemos que V1 ≤ . . . ≤ Vn.
Un ensayo es aceptable si suma + resto ≥ D (para que sea posible
llegar a sumar D) y suma ≤ D (para que la suma del ensayo no
exceda de la cantidad a sumar).
Algoritmo SumaSubconjunto
proc SumaSubconjunto(suma, resto, j, conjunto)
if suma = D then
Imprimir(conjunto[1..j − 1])
else
if suma + Vj ≤ D then
conjunto[j] ← 1
SumaSubconjunto(suma + Vj , resto − Vj , j + 1, conjunto)
if suma + resto − Vj ≥ D then
conjunto[j] ← 0
SumaSubconjunto(suma, resto − Vj , j + 1, conjunto)
La llamada inicial debe ser
SumaSubconjunto(0, n
i=1 Vi , 1, conjunto)
El problema de la mochila (1/2)
Dado M ≥ 0 y dados n objetos con valores unitarios (v1, . . . , vn) y pesos
(p1, . . . , pn) respectivamente, queremos calcular un vector (x1, . . . , xn) de
valores xi = 0, 1 tal que
se maximice
n
i=1
xi vi
restringido a que
n
i=1
xi pi ≤ M
El problema de la mochila (2/2)
Hay varias opciones para la definici´on de los ensayos.
Una posibilidad simple es la siguiente: los ensayos son vectores de longitud
i ≤ n con valores 0, 1 que representan las opciones tomadas con respecto a
los objetos numerados con {1, . . . , i}; xi = 0 representa la opci´on de no
poner el objeto i en la mochila y xi = 1 representa la opci´on de ponerlo.
Los ensayos se representan mediante un vector X(1..n) y una variable j; el
valor de la variable j representa el identificador del objeto que debe
estudiarse a continuaci´on para extender el ensayo.
Cuando j = n + 1 significa que tenemos un ensayo de longitud n
Algoritmo Mochila 0 1
{XOPT(1..n) y VOPT: mejor soluci´on encontrada hasta el momento y su
valor, repectivamente}
{SV y SP: valor y peso, respectivamente, del ensayo en curso X}
{M: capacidad de la mochila y V(1..n) y P(1..n) los valores y pesos
respectivos de los objetos}
{j: ´ındice del objeto que puede extender el ensayo}
proc Mochila 0 1(SP, SV, X, j, VOPT, XOPT)
if j = n+1 then
if SV > VOPT then
XOPT(1..n) ← X(1..n)
VOPT ← SV
end if
else
for k in 0..1 loop
if SP + k·P(j) ≤ M then
X(j) ← k
Mochila 0 1(SP + X(j)·P(j), SV + X(j)·V(j), X, j+1, VOPT, XOPT)
La llamada inicial deber´a ser Mochila 0 1(0, 0, X, 1, 0, XOPT)
Algoritmo alternativo a Mochila 0 1 (1/5)
1 En primer lugar, en vez de buscar soluciones de longitud n,
consideramos soluci´on cualquier ensayo cuyo peso no exceda la
capacidad de la mochila.
2 En este caso, tenemos soluciones que son prefijos de otras soluciones.
3 Para podar ramas que ya no son prometedoras, utilizaremos un
criterio que aprovecha lo que conocemos de este problema para el
caso de las fracciones de objetos (v´ease algoritmos voraces).
4 Diremos que la extensi´on de un ensayo es aceptable si cabe alguna
esperanza de que mejore el beneficio de la mejor carga de mochila
encontrada hasta el momento.
Algoritmo alternativo a Mochila 0 1 (2/5)
Asumimos que v1
p1
≥ v2
p2
≥ . . . ≥ vn
pn
Consideremos que tenemos el ensayo (x1, . . . , xi ) con
peso = i
j=1 xj pj y valor = i
j=1 xj vj .
Imaginemos que podemos a˜nadir al ensayo (x1, . . . , xi ) los objetos
completos siguientes numerados hasta el k − 1, y que excedemos la
capacidad M de la mochila si a˜nadimos el objeto n´umero k completo.
Entonces, el peso cota que podemos llevar en la mochila, partiendo del
ensayo (x1, . . . , xi ) es
peso cota = peso +
k−1
j=i+1
pj
y una cota superior del beneficio ser´ıa
valor cota = (valor +
k−1
j=i+1
vj ) + (M − peso cota)
vk
pk
Algoritmo alternativo a Mochila 0 1 (3/5)
Si valor OPT es el m´aximo valor conseguido hasta el momento, diremos
que (x1, . . . , xi ) es aceptable si:
1 peso ≤ M (su peso no excede la capacidad de la mochila) y
2 valor cota > valor OPT (y promete m´as que lo conocido)
Algoritmo alternativo a Mochila 0 1 (4/5)
{Precondici´on: v1
p1
≥ v2
p2
≥ . . . ≥ vn
pn
}
proc Mochila 0 1 V(X, SP, SV, i, VOPT, XOPT)
if SV > VOPT then
XOPT(1..i) ← X(1..i)
VOPT ← SV
end if
if i < n then
for s in 0..1 loop
if SP + s·P(i+1) ≤ M ∧
Es aceptable(X, i+1, s, SP, SV, VOPT) then
X(i+1) ← s
Mochila 0 1 V(X, SP + s·P(i+1), SV + s·V(i+1),
i+1, VOPT, XOPT)
La llamada inicial debe ser: Mochila 0 1 V(X, 0, 0, 0, 0, XOPT)
Algoritmo alternativo a Mochila 0 1 (5/5)
func Es aceptable(X, e, Xe, SP, SV, VOPT) return boolean
k ← e
peso cota ← SP + Xe·P(e)
SV ← SV + Xe·V(e)
while k < n ∧ peso cota ≤ M loop
k ← k + 1
peso cota ← peso cota + P(k)
SV ← SV + V(k)
end loop
if peso cota > M then
{k es el primer objeto que no cabe}
peso cota ← peso cota - P(k)
SV ← SV - V(k)
valor cota ← SV + (M - peso cota)·V(k)/P(k)
else {peso cota≤M y k=n}
valor cota ← SV
end if
return valor cota > VOPT

Más contenido relacionado

La actualidad más candente

Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)
Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)
Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)pedroperez683734
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial linealLuis Diaz
 
Método Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación AplicadaMétodo Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación Aplicadamarticalu001
 
Solución de ecuaciones diferenciales (1)
Solución de ecuaciones diferenciales (1)Solución de ecuaciones diferenciales (1)
Solución de ecuaciones diferenciales (1)Johana Martinez
 
Calculo ejercicios 01-resueltos
Calculo ejercicios 01-resueltosCalculo ejercicios 01-resueltos
Calculo ejercicios 01-resueltosAlejo Zapata
 
Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Kike Prieto
 
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIASDERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIASJaime Martínez Verdú
 
Aplicación e importancia de las funciones trigonométricas e hiperbólicas y s...
Aplicación e importancia  de las funciones trigonométricas e hiperbólicas y s...Aplicación e importancia  de las funciones trigonométricas e hiperbólicas y s...
Aplicación e importancia de las funciones trigonométricas e hiperbólicas y s...dinorkis
 
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias Recurso
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias RecursoSoluciones Numérica de Ecuaciones Diferenciales Ordinarias Recurso
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias Recursocareto12
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenJosé A. Alonso
 
LI2011-T7: Deducción natural en lógica de primer orden
LI2011-T7: Deducción natural en lógica de primer ordenLI2011-T7: Deducción natural en lógica de primer orden
LI2011-T7: Deducción natural en lógica de primer ordenJosé A. Alonso
 
Republica bolivariana de_venezuela[1] calculo.pptm
Republica bolivariana de_venezuela[1] calculo.pptmRepublica bolivariana de_venezuela[1] calculo.pptm
Republica bolivariana de_venezuela[1] calculo.pptmJoonser
 
Bitácora n° 6 (12 mar a 16 mar)
Bitácora n° 6 (12 mar a 16 mar)Bitácora n° 6 (12 mar a 16 mar)
Bitácora n° 6 (12 mar a 16 mar)MiriJaneth
 

La actualidad más candente (20)

Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)
Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)
Guia de estudio 5 (tema 5 ecuaciones diferenciales ordinarias)
 
Ecuacion diferencial lineal
Ecuacion diferencial linealEcuacion diferencial lineal
Ecuacion diferencial lineal
 
5.1.2
5.1.25.1.2
5.1.2
 
2011 runge kutta
2011 runge kutta2011 runge kutta
2011 runge kutta
 
Método Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación AplicadaMétodo Runge Kutta. Computación Aplicada
Método Runge Kutta. Computación Aplicada
 
Solución de ecuaciones diferenciales (1)
Solución de ecuaciones diferenciales (1)Solución de ecuaciones diferenciales (1)
Solución de ecuaciones diferenciales (1)
 
Calculo ejercicios 01-resueltos
Calculo ejercicios 01-resueltosCalculo ejercicios 01-resueltos
Calculo ejercicios 01-resueltos
 
Trabajo Range-Kutta
Trabajo Range-KuttaTrabajo Range-Kutta
Trabajo Range-Kutta
 
Tesis matematica
Tesis matematicaTesis matematica
Tesis matematica
 
Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales
 
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIASDERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
 
Aplicación e importancia de las funciones trigonométricas e hiperbólicas y s...
Aplicación e importancia  de las funciones trigonométricas e hiperbólicas y s...Aplicación e importancia  de las funciones trigonométricas e hiperbólicas y s...
Aplicación e importancia de las funciones trigonométricas e hiperbólicas y s...
 
Teorema de kantorovich
Teorema de kantorovichTeorema de kantorovich
Teorema de kantorovich
 
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias Recurso
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias RecursoSoluciones Numérica de Ecuaciones Diferenciales Ordinarias Recurso
Soluciones Numérica de Ecuaciones Diferenciales Ordinarias Recurso
 
Aplicaciones de-la-derivada
Aplicaciones de-la-derivadaAplicaciones de-la-derivada
Aplicaciones de-la-derivada
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer orden
 
LI2011-T7: Deducción natural en lógica de primer orden
LI2011-T7: Deducción natural en lógica de primer ordenLI2011-T7: Deducción natural en lógica de primer orden
LI2011-T7: Deducción natural en lógica de primer orden
 
Republica bolivariana de_venezuela[1] calculo.pptm
Republica bolivariana de_venezuela[1] calculo.pptmRepublica bolivariana de_venezuela[1] calculo.pptm
Republica bolivariana de_venezuela[1] calculo.pptm
 
Tema1
Tema1Tema1
Tema1
 
Bitácora n° 6 (12 mar a 16 mar)
Bitácora n° 6 (12 mar a 16 mar)Bitácora n° 6 (12 mar a 16 mar)
Bitácora n° 6 (12 mar a 16 mar)
 

Similar a Algoritmos de vuelta atrás

Similar a Algoritmos de vuelta atrás (20)

Back Tracking
Back TrackingBack Tracking
Back Tracking
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)Mpinning Gy Alg9(Conteo)
Mpinning Gy Alg9(Conteo)
 
Miercoles 6 de mayo del 2015 (1)
Miercoles 6 de mayo del 2015 (1)Miercoles 6 de mayo del 2015 (1)
Miercoles 6 de mayo del 2015 (1)
 
Miercoles 6 de mayo del 2015 (2)
Miercoles 6 de mayo del 2015 (2)Miercoles 6 de mayo del 2015 (2)
Miercoles 6 de mayo del 2015 (2)
 
Miercoles 6 de mayo del 2015
Miercoles 6 de mayo del 2015Miercoles 6 de mayo del 2015
Miercoles 6 de mayo del 2015
 
Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Estadisticadocx
EstadisticadocxEstadisticadocx
Estadisticadocx
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
40 diapositivas
40 diapositivas40 diapositivas
40 diapositivas
 
8. Raices de ecuaciones no lineales (Una variable).pptx
8. Raices de ecuaciones no lineales (Una variable).pptx8. Raices de ecuaciones no lineales (Una variable).pptx
8. Raices de ecuaciones no lineales (Una variable).pptx
 
Informe
InformeInforme
Informe
 
Avarap
AvarapAvarap
Avarap
 
Álgebra Lineal
Álgebra LinealÁlgebra Lineal
Álgebra Lineal
 
Sistema de ecuaciones
Sistema de ecuacionesSistema de ecuaciones
Sistema de ecuaciones
 
Distribuciones continuas
Distribuciones continuasDistribuciones continuas
Distribuciones continuas
 
ANALISIS NUMERICO UNIDAD III
ANALISIS NUMERICO UNIDAD IIIANALISIS NUMERICO UNIDAD III
ANALISIS NUMERICO UNIDAD III
 
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdfPRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
 
ECUACIONES NO LINEALES
ECUACIONES NO LINEALESECUACIONES NO LINEALES
ECUACIONES NO LINEALES
 
Historia metodo de newton
Historia metodo de newtonHistoria metodo de newton
Historia metodo de newton
 

Más de Beat Winehouse

Metodos numéricos (euler, euler modificado, rk)
Metodos numéricos (euler, euler modificado, rk)Metodos numéricos (euler, euler modificado, rk)
Metodos numéricos (euler, euler modificado, rk)Beat Winehouse
 
Parallel processing for linear programming
Parallel processing for linear programmingParallel processing for linear programming
Parallel processing for linear programmingBeat Winehouse
 
Improving Tree augmented Naive Bayes for class probability estimation
Improving Tree augmented Naive Bayes for class probability estimationImproving Tree augmented Naive Bayes for class probability estimation
Improving Tree augmented Naive Bayes for class probability estimationBeat Winehouse
 
Curso de edición fotográfica
Curso de edición fotográficaCurso de edición fotográfica
Curso de edición fotográficaBeat Winehouse
 
Cómo construir y validar redes bayesianas con netica
Cómo construir y validar redes bayesianas con neticaCómo construir y validar redes bayesianas con netica
Cómo construir y validar redes bayesianas con neticaBeat Winehouse
 
Modelizacion con curvas y superficies de bezier
Modelizacion con curvas y superficies de bezierModelizacion con curvas y superficies de bezier
Modelizacion con curvas y superficies de bezierBeat Winehouse
 
Problems on Algorithms
Problems on AlgorithmsProblems on Algorithms
Problems on AlgorithmsBeat Winehouse
 
Manual análisis de algoritmos
Manual análisis de algoritmosManual análisis de algoritmos
Manual análisis de algoritmosBeat Winehouse
 
The bayesian revolution in genetics
The bayesian revolution in geneticsThe bayesian revolution in genetics
The bayesian revolution in geneticsBeat Winehouse
 
Inducción matemática
Inducción matemáticaInducción matemática
Inducción matemáticaBeat Winehouse
 
Formulas para algoritmos
Formulas para algoritmosFormulas para algoritmos
Formulas para algoritmosBeat Winehouse
 
La eficiencia de los algoritmos
La eficiencia de los algoritmosLa eficiencia de los algoritmos
La eficiencia de los algoritmosBeat Winehouse
 
Algoritmos de ordenación
Algoritmos de ordenaciónAlgoritmos de ordenación
Algoritmos de ordenaciónBeat Winehouse
 

Más de Beat Winehouse (17)

Metodos numéricos (euler, euler modificado, rk)
Metodos numéricos (euler, euler modificado, rk)Metodos numéricos (euler, euler modificado, rk)
Metodos numéricos (euler, euler modificado, rk)
 
Gráficos en MATLAB
Gráficos en MATLABGráficos en MATLAB
Gráficos en MATLAB
 
Parallel processing for linear programming
Parallel processing for linear programmingParallel processing for linear programming
Parallel processing for linear programming
 
Improving Tree augmented Naive Bayes for class probability estimation
Improving Tree augmented Naive Bayes for class probability estimationImproving Tree augmented Naive Bayes for class probability estimation
Improving Tree augmented Naive Bayes for class probability estimation
 
Curso de edición fotográfica
Curso de edición fotográficaCurso de edición fotográfica
Curso de edición fotográfica
 
Redes bayesianas
Redes bayesianasRedes bayesianas
Redes bayesianas
 
Cómo construir y validar redes bayesianas con netica
Cómo construir y validar redes bayesianas con neticaCómo construir y validar redes bayesianas con netica
Cómo construir y validar redes bayesianas con netica
 
Modelizacion con curvas y superficies de bezier
Modelizacion con curvas y superficies de bezierModelizacion con curvas y superficies de bezier
Modelizacion con curvas y superficies de bezier
 
Taller de edicion
Taller de edicionTaller de edicion
Taller de edicion
 
Sums (Sumatorias)
Sums (Sumatorias)Sums (Sumatorias)
Sums (Sumatorias)
 
Problems on Algorithms
Problems on AlgorithmsProblems on Algorithms
Problems on Algorithms
 
Manual análisis de algoritmos
Manual análisis de algoritmosManual análisis de algoritmos
Manual análisis de algoritmos
 
The bayesian revolution in genetics
The bayesian revolution in geneticsThe bayesian revolution in genetics
The bayesian revolution in genetics
 
Inducción matemática
Inducción matemáticaInducción matemática
Inducción matemática
 
Formulas para algoritmos
Formulas para algoritmosFormulas para algoritmos
Formulas para algoritmos
 
La eficiencia de los algoritmos
La eficiencia de los algoritmosLa eficiencia de los algoritmos
La eficiencia de los algoritmos
 
Algoritmos de ordenación
Algoritmos de ordenaciónAlgoritmos de ordenación
Algoritmos de ordenación
 

Último

CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptx
CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptxCEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptx
CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptxfranciscofernandez106395
 
Tractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médulaTractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la méduladianymorales5
 
Campo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfCampo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfArturoDavilaObando
 
ESQUELETO HUMANO ARTICULADO PARA PRIMARIA
ESQUELETO HUMANO ARTICULADO PARA PRIMARIAESQUELETO HUMANO ARTICULADO PARA PRIMARIA
ESQUELETO HUMANO ARTICULADO PARA PRIMARIAjuliocesartolucarami
 
Presentación Laboratorio, métodos de separación
Presentación Laboratorio, métodos de separaciónPresentación Laboratorio, métodos de separación
Presentación Laboratorio, métodos de separaciónac3630500
 
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERA
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERATERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERA
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERAdheznolbert
 
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdf
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdfFritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdf
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdffrank0071
 
Tortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfTortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfGermán Tortosa
 
5. Célula animal y vegetal y sus diferencias.pptx
5. Célula animal y vegetal y sus diferencias.pptx5. Célula animal y vegetal y sus diferencias.pptx
5. Célula animal y vegetal y sus diferencias.pptxealva1
 
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdf
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdfEL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdf
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdfpedrodiaz974731
 
Procedimiento e interpretación de los coprocultivos.pdf
Procedimiento e interpretación de los coprocultivos.pdfProcedimiento e interpretación de los coprocultivos.pdf
Procedimiento e interpretación de los coprocultivos.pdfCarlaLSarita1
 
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIA
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIALOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIA
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIALozadaAcuaMonserratt
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...frank0071
 
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdfSESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdfkevingblassespinalor
 
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUA
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUANEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUA
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUAcelixfabiolacaleropa
 
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundaria
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundariaDiapositiva sobre el conflicto de Israel - Palestina para nivel secundaria
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundariaAgustin535878
 
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanica
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanicaproblemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanica
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanicaArturoDavilaObando
 
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...GloriaMeza12
 
Evangelismo los pasos para logar la sancion
Evangelismo los pasos para logar la sancionEvangelismo los pasos para logar la sancion
Evangelismo los pasos para logar la sancionniro13
 
PLAN DE TUTORÍA DEL AULA PARA SEGUNDO GRADO
PLAN DE TUTORÍA DEL AULA PARA  SEGUNDO GRADOPLAN DE TUTORÍA DEL AULA PARA  SEGUNDO GRADO
PLAN DE TUTORÍA DEL AULA PARA SEGUNDO GRADOunsaalfredo
 

Último (20)

CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptx
CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptxCEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptx
CEREBRO Y CONDUCTA ESPECIALIDAD GM_091358.pptx
 
Tractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médulaTractos ascendentes y descendentes de la médula
Tractos ascendentes y descendentes de la médula
 
Campo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdfCampo_magnético_y_fuerzas_magnéticas.pdf
Campo_magnético_y_fuerzas_magnéticas.pdf
 
ESQUELETO HUMANO ARTICULADO PARA PRIMARIA
ESQUELETO HUMANO ARTICULADO PARA PRIMARIAESQUELETO HUMANO ARTICULADO PARA PRIMARIA
ESQUELETO HUMANO ARTICULADO PARA PRIMARIA
 
Presentación Laboratorio, métodos de separación
Presentación Laboratorio, métodos de separaciónPresentación Laboratorio, métodos de separación
Presentación Laboratorio, métodos de separación
 
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERA
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERATERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERA
TERMODINAMICA UNIVERSIDAD NACIONAL DE INGENIERA
 
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdf
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdfFritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdf
Fritzsche, Peter. - Vida y muerte en el Tercer Reich [ocr] [2009].pdf
 
Tortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdfTortosa et al. 2º Simposio Internacional Composta.pdf
Tortosa et al. 2º Simposio Internacional Composta.pdf
 
5. Célula animal y vegetal y sus diferencias.pptx
5. Célula animal y vegetal y sus diferencias.pptx5. Célula animal y vegetal y sus diferencias.pptx
5. Célula animal y vegetal y sus diferencias.pptx
 
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdf
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdfEL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdf
EL ABDOMEN Y TODAS SUS CARACTERÍSTICAS.pdf
 
Procedimiento e interpretación de los coprocultivos.pdf
Procedimiento e interpretación de los coprocultivos.pdfProcedimiento e interpretación de los coprocultivos.pdf
Procedimiento e interpretación de los coprocultivos.pdf
 
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIA
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIALOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIA
LOS DISTINTOS MUNICIPIO_SALUDABLE DE BOLIVIA
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
 
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdfSESIÓN DE APRENDIZAJE N° 5  SEMANA 7 CYT  I BIMESTRE ESTUDIANTES.pdf
SESIÓN DE APRENDIZAJE N° 5 SEMANA 7 CYT I BIMESTRE ESTUDIANTES.pdf
 
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUA
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUANEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUA
NEMATODOS TISULARES-2020.pdf, DE LA UNAN MANAGUA
 
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundaria
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundariaDiapositiva sobre el conflicto de Israel - Palestina para nivel secundaria
Diapositiva sobre el conflicto de Israel - Palestina para nivel secundaria
 
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanica
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanicaproblemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanica
problemas_oscilaciones_amortiguadas.pdf aplicadas a la mecanica
 
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...
Sistema Endocrino, rol de los receptores hormonales, hormonas circulantes y l...
 
Evangelismo los pasos para logar la sancion
Evangelismo los pasos para logar la sancionEvangelismo los pasos para logar la sancion
Evangelismo los pasos para logar la sancion
 
PLAN DE TUTORÍA DEL AULA PARA SEGUNDO GRADO
PLAN DE TUTORÍA DEL AULA PARA  SEGUNDO GRADOPLAN DE TUTORÍA DEL AULA PARA  SEGUNDO GRADO
PLAN DE TUTORÍA DEL AULA PARA SEGUNDO GRADO
 

Algoritmos de vuelta atrás

  • 1. Dise˜no de algoritmos Algoritmos de Vuelta Atr´as Jes´us Berm´udez de Andr´es Universidad del Pa´ıs Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09
  • 2. 1 Algoritmos de vuelta atr´as El coloreado de mapas N´umero m´ınimo de monedas Suma de subconjunto El problema de la mochila
  • 3. Algoritmos de vuelta atr´as (1/2) Hay problemas para los que no se conoce mejor soluci´on que la que consiste, b´asicamente, en una b´usqueda sistem´atica en un espacio de propuestas posibles de soluci´on. La t´ecnica de vuelta atr´as consiste en construir la soluci´on de un problema mediante extensiones de ensayos parciales de soluci´on. En general, se parte del ensayo neutro [ ] y en un estado intermedio del proceso, tras haber construido el ensayo parcial [x1, . . . , xi ], se tantea sistem´aticamente con cada posibilidad xi+1 de extender el ensayo: si [x1, . . . , xi , xi+1] es un ensayo aceptable, se extiende [x1, . . . , xi ] a [x1, . . . , xi , xi+1] y se contin´ua con este ´ultimo ensayo parcial. si ninguna de las posibilidades para xi+1 hacen que [x1, . . . , xi , xi+1] sea aceptable entonces significa que el ensayo [x1, . . . , xi ] no es extensible a soluci´on, por consiguiente retiramos la ´ultima opci´on xi a˜nadida a ese ensayo y continuamos con el ensayo parcial [x1, . . . , xi−1] tanteando otra posible opci´on.
  • 5. Algoritmos de vuelta atr´as (2/2) Esta estrategia equivale al recorrido en profundidad de un ´arbol impl´ıcito (ya que ese ´arbol no est´a representado por ninguna estructura de datos) comenzando desde la ra´ız, tal que cada nodo se corresponde con un ensayo parcial y cada arista que parte de un nodo se corresponde con una opci´on de tanteo. Cuando un ensayo no es aceptable equivale a podar la posible rama del ´arbol que pudiera crecer desde ese nodo. Cuanto m´as “inteligente” sea la poda m´as eficiente ser´a el algoritmo. Las hojas de ese ´arbol impl´ıcito se corresponden con ensayos no extensibles a soluci´on o bien con ensayos que son soluci´on.
  • 6. Esquema de vuelta atr´as que calcula todas las soluciones proc Ensayar (E) if Soluci´on(E) then “gestionar el E soluci´on” {else } for cada posibilidad p de extender E loop if Es aceptable(E + p) then Ensayar (E + p) Debe retirarse la cl´ausula {else } en caso de que haya soluciones que sean prefijos de otras soluciones.
  • 7. Esquema de vuelta atr´as que calcula la primera soluci´on proc Ensayar (E, ´exito) if Soluci´on(E) then “gestionar el E soluci´on” ´exito ← true else for cada posibilidad p de extender E loop if Es aceptable(E + p) then Ensayar (E + p, ´exito) if ´exito then return
  • 8. An´alisis de un algoritmo de vuelta atr´as Un modo de aproximarse al an´alisis de la eficiencia de los algoritmos de vuelta atr´as es analizar el ´arbol impl´ıcito de ensayos explorado por el algoritmo: 1 contar el n´umero de ensayos explorados. 2 analizar el coste de calcular las posibilidades de extender cada ensayo y el coste de generar cada nuevo ensayo. 3 analizar el coste de comprobaci´on de la aceptaci´on de un ensayo. Hay que observar que el resultado es una cota superior. El rendimiento real del algoritmo puede ser mucho mejor, ya que la funci´on de aceptaci´on de ensayos puede podar una cantidad considerable de ramas del ´arbol impl´ıcito. De hecho, la utilidad de los algoritmos de vuelta atr´as depende principalmente de la capacidad de aplicaci´on de funciones de aceptaci´on que poden convenientemente ramas del ´arbol de ensayos. Evaluaci´on usando un M´etodo de Montecarlo.
  • 9. El coloreado de mapas Calcular todas las formas posibles de colorear los pa´ıses de un mapa pol´ıtico, usando s´olo cuatro colores, de manera que ning´un par de pa´ıses fronterizos est´e pintado del mismo color. Representamos el mapa mediante un grafo no dirigido en el que los nodos representan a los pa´ıses y cada arista representa que sus extremos son pa´ıses fronterizos. En particular, representaremos un mapa con n pa´ıses mediante una matriz de adyacencia F(1..n, 1..n) con valores booleanos.
  • 10. ´Arbol de ensayos para Cuatro colores Un ensayo de longitud k consiste en la lista de colores (tomados de los cuatro posibles) que se han asignado a los pa´ıses numerados con [1, . . . , k]. Representamos los ensayos con un vector color(1..n) con valores en el conjunto {1, 2, 3, 4} que representa a los cuatro colores. En cada momento del proceso s´olo son representativos los k primeros componentes del vector color. Cuando k llegue a ser n y se satisfaga la condici´on de aceptaci´on tendremos una soluci´on del problema. Una extensi´on de un ensayo de longitud k consiste en dar color al pa´ıs n´umero k + 1. Supongamos que tenemos un ensayo de longitud k que satisface las restricciones del problema, entonces una extensi´on de ese ensayo es aceptable si el color asignado al pa´ıs n´umero k + 1 es distinto del color asignado a sus adyacentes que est´en numerados del 1 al k.
  • 11. Algoritmo Cuatro colores (1/2) La llamada inicial debe ser Cuatro colores(0, F, color) proc Cuatro colores(k, F(1..n, 1..n), color(1..n)) {k: n´umero de pa´ıses coloreados} if k = n then Imprimir(color(1..n)) else for C in 1..,4 loop color(k + 1) ← C if Es aceptable(F, color, k + 1) then Cuatro colores(k + 1, F, color)
  • 12. Algoritmo Cuatro colores (2/2) func Es aceptable(F, color, ´ultimo) return boolean {´ultimo: ´ındice del ´ultimo pa´ıs coloreado} acept ← true pa´ıs ← 1 while pa´ıs < ´ultimo ∧ acept loop if F(pa´ıs, ´ultimo) ∧ color(pa´ıs)=color(´ultimo) then acept ← false end if pa´ıs ← pa´ıs + 1 end loop return acept
  • 13. N´umero m´ınimo de monedas (1/2) Dadas n de monedas, de valores v1, . . . , vn respectivamente, determinar cual es el n´umero m´ınimo de monedas que necesitamos para sumar una determinada cantidad C. Un ensayo ser´a una secuencia de los valores de esas monedas, que denominaremos SEC. Para completar la representaci´on de un ensayo tendremos: una variable suma que representa la suma de los valores de SEC, una variable long que representa la longitud de SEC y una variable k que representa el sub´ındice de la moneda que hay que considerar a continuaci´on. La parte del esquema de vuelta atr´as dedicada a “gestionar el ensayo soluci´on” sirve para memorizar la mejor soluci´on encontrada hasta el momento. La soluci´on ´optima ser´a la que quede registrada en la secuencia OPT, de longitud longOPT.
  • 14. ´Arbol de ensayos para N´umero m´ınimo de monedas
  • 15. N´umero m´ınimo de monedas (2/2) Suponemos ordenados los valores de monedas, de manera que v1 ≤ v2 ≤ . . . ≤ vn Ensayo: Un secuencia de valores de monedas Las posibilidades de extender un ensayo [vi , . . . , vk−1] son vk . . . vn El ensayo [vi , . . . , vk−1, vk] es aceptable si su longitud es menor que longOPT y su suma menor o igual que C Un ensayo es soluci´on si su suma es igual a C
  • 16. Algoritmo MinMonedas Para podar algunas ramas del ´arbol de ensayos, asumimos que tenemos ordenadas las monedas de manera que v1 ≤ . . . ≤ vn. proc MinMonedas(SEC, k, long, suma, OPT, longOPT) if suma = C then if long < longOPT then OPT ← SEC longOPT ← long else while (k ≤ n) ∧ (1 + long < longOPT) ∧ (suma + vk ≤ C) loop SEC[1 + long] ← vk MinMonedas(SEC, k + 1, 1 + long, suma + vk, OPT, longOPT) k ← k + 1 La llamada inicial debe ser MinMonedas(SEC, 1, 0, 0, OPT, n + 1)
  • 17. Variaci´on de N´umero m´ınimo de monedas ¿Qu´e modificaciones debemos hacer en el algoritmo MinMonedas si disponemos de tantas monedas como se desee de cada valor v1, . . . , vn? Una vez analizada la modificaci´on del ´arbol de ensayos, observamos que basta con sustituir el valor de k + 1 por k en la llamada recursiva, es decir: MinMonedas(SEC, k, 1 + long, suma + vk, OPT, longOPT)
  • 18. Suma de subconjunto Disponemos de valores V = {V1, . . . , Vn} enteros positivos y queremos saber todas las formas posibles de sumar D con subconjuntos de V . Un ensayo constar´a de un vector conjunto de ceros y unos, de manera que conjunto[i] = 1 representa que Vi pertenece al subconjunto seleccionado y conjunto[i] = 0 representa que no. Tendremos dos variables: suma que representa la suma de los valores del subconjunto seleccionado y resto que representa la suma de los valores que quedan todav´ıa por considerar. La variable j representa el sub´ındice del valor de V que hay que considerar a continuaci´on. Para podar m´as ramas es importante considerar los valores de V en orden creciente: Suponemos que V1 ≤ . . . ≤ Vn. Un ensayo es aceptable si suma + resto ≥ D (para que sea posible llegar a sumar D) y suma ≤ D (para que la suma del ensayo no exceda de la cantidad a sumar).
  • 19. Algoritmo SumaSubconjunto proc SumaSubconjunto(suma, resto, j, conjunto) if suma = D then Imprimir(conjunto[1..j − 1]) else if suma + Vj ≤ D then conjunto[j] ← 1 SumaSubconjunto(suma + Vj , resto − Vj , j + 1, conjunto) if suma + resto − Vj ≥ D then conjunto[j] ← 0 SumaSubconjunto(suma, resto − Vj , j + 1, conjunto) La llamada inicial debe ser SumaSubconjunto(0, n i=1 Vi , 1, conjunto)
  • 20. El problema de la mochila (1/2) Dado M ≥ 0 y dados n objetos con valores unitarios (v1, . . . , vn) y pesos (p1, . . . , pn) respectivamente, queremos calcular un vector (x1, . . . , xn) de valores xi = 0, 1 tal que se maximice n i=1 xi vi restringido a que n i=1 xi pi ≤ M
  • 21. El problema de la mochila (2/2) Hay varias opciones para la definici´on de los ensayos. Una posibilidad simple es la siguiente: los ensayos son vectores de longitud i ≤ n con valores 0, 1 que representan las opciones tomadas con respecto a los objetos numerados con {1, . . . , i}; xi = 0 representa la opci´on de no poner el objeto i en la mochila y xi = 1 representa la opci´on de ponerlo. Los ensayos se representan mediante un vector X(1..n) y una variable j; el valor de la variable j representa el identificador del objeto que debe estudiarse a continuaci´on para extender el ensayo. Cuando j = n + 1 significa que tenemos un ensayo de longitud n
  • 22. Algoritmo Mochila 0 1 {XOPT(1..n) y VOPT: mejor soluci´on encontrada hasta el momento y su valor, repectivamente} {SV y SP: valor y peso, respectivamente, del ensayo en curso X} {M: capacidad de la mochila y V(1..n) y P(1..n) los valores y pesos respectivos de los objetos} {j: ´ındice del objeto que puede extender el ensayo} proc Mochila 0 1(SP, SV, X, j, VOPT, XOPT) if j = n+1 then if SV > VOPT then XOPT(1..n) ← X(1..n) VOPT ← SV end if else for k in 0..1 loop if SP + k·P(j) ≤ M then X(j) ← k Mochila 0 1(SP + X(j)·P(j), SV + X(j)·V(j), X, j+1, VOPT, XOPT) La llamada inicial deber´a ser Mochila 0 1(0, 0, X, 1, 0, XOPT)
  • 23. Algoritmo alternativo a Mochila 0 1 (1/5) 1 En primer lugar, en vez de buscar soluciones de longitud n, consideramos soluci´on cualquier ensayo cuyo peso no exceda la capacidad de la mochila. 2 En este caso, tenemos soluciones que son prefijos de otras soluciones. 3 Para podar ramas que ya no son prometedoras, utilizaremos un criterio que aprovecha lo que conocemos de este problema para el caso de las fracciones de objetos (v´ease algoritmos voraces). 4 Diremos que la extensi´on de un ensayo es aceptable si cabe alguna esperanza de que mejore el beneficio de la mejor carga de mochila encontrada hasta el momento.
  • 24. Algoritmo alternativo a Mochila 0 1 (2/5) Asumimos que v1 p1 ≥ v2 p2 ≥ . . . ≥ vn pn Consideremos que tenemos el ensayo (x1, . . . , xi ) con peso = i j=1 xj pj y valor = i j=1 xj vj . Imaginemos que podemos a˜nadir al ensayo (x1, . . . , xi ) los objetos completos siguientes numerados hasta el k − 1, y que excedemos la capacidad M de la mochila si a˜nadimos el objeto n´umero k completo. Entonces, el peso cota que podemos llevar en la mochila, partiendo del ensayo (x1, . . . , xi ) es peso cota = peso + k−1 j=i+1 pj y una cota superior del beneficio ser´ıa valor cota = (valor + k−1 j=i+1 vj ) + (M − peso cota) vk pk
  • 25. Algoritmo alternativo a Mochila 0 1 (3/5) Si valor OPT es el m´aximo valor conseguido hasta el momento, diremos que (x1, . . . , xi ) es aceptable si: 1 peso ≤ M (su peso no excede la capacidad de la mochila) y 2 valor cota > valor OPT (y promete m´as que lo conocido)
  • 26. Algoritmo alternativo a Mochila 0 1 (4/5) {Precondici´on: v1 p1 ≥ v2 p2 ≥ . . . ≥ vn pn } proc Mochila 0 1 V(X, SP, SV, i, VOPT, XOPT) if SV > VOPT then XOPT(1..i) ← X(1..i) VOPT ← SV end if if i < n then for s in 0..1 loop if SP + s·P(i+1) ≤ M ∧ Es aceptable(X, i+1, s, SP, SV, VOPT) then X(i+1) ← s Mochila 0 1 V(X, SP + s·P(i+1), SV + s·V(i+1), i+1, VOPT, XOPT) La llamada inicial debe ser: Mochila 0 1 V(X, 0, 0, 0, 0, XOPT)
  • 27. Algoritmo alternativo a Mochila 0 1 (5/5) func Es aceptable(X, e, Xe, SP, SV, VOPT) return boolean k ← e peso cota ← SP + Xe·P(e) SV ← SV + Xe·V(e) while k < n ∧ peso cota ≤ M loop k ← k + 1 peso cota ← peso cota + P(k) SV ← SV + V(k) end loop if peso cota > M then {k es el primer objeto que no cabe} peso cota ← peso cota - P(k) SV ← SV - V(k) valor cota ← SV + (M - peso cota)·V(k)/P(k) else {peso cota≤M y k=n} valor cota ← SV end if return valor cota > VOPT