Table Of ContentBacktracking Programacio´nDina´mica AlgoritmosGreedy
Disen˜o II:
Backtracking
Programacio´n dina´mica
Algoritmos greedy
M. Andrea Rodr´ıguez-Tastets
Ayudante: Erick Elejalde
UniversidaddeConcepcio´n,Chile
www.inf.udec.cl\∼andrea
[email protected]
I Semestre - 2014
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Introduccio´n
Backtracking
Backtrackingesunaformasistema´ticadeiterarsobreTODASlasposibles
configuracionesdeunespaciodebu´squeda.Estasconfiguracionespuedenser
posiblespermutacionesosubconjuntosdelespacio.
EstosproblemasgenerancadaunadelasposiblesconfiguracionesUNAVEZ.
Backtrackingconstruyeuna´rboldesolucionesparciales,dondecadave´rtice
representaunasolucio´nparcial.Existeunarcodesdexay siesquey fue
creadoporunavanceoextensio´ndex.
Elprocesodeconstruirunasolucio´ncorrespondeexactamenteaunrecorridoen
profundidad(depth-first)dela´rbol.
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Backtracking(2)
Sepuedemodelarlabu´squedacombinatorialdelbacktrackingcomosigue:
Unasolucio´ndelabu´squedaesunvectora=(a1,...,an),dondecada
elementoa esseleccionadodeunconjuntofinitoyordenadoS.
i i
Acadapasodelbacktracking,setratadeextenderelvectora=(a ,...,a )
1 k
agregandounelementoalfinal.Siesunasolucio´n,entoncessedebereportar
comotal.
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Backtracking(3)
Algoritmo
Backtracking-DFS(A,k)
begin
ifA=(a ,...,a )esunasolucio´nthen
1 k
returnA
else
k =k+1
calcule(construya)S
k
whileS (cid:54)=0do
k
a =unelementoenS
k k
S =S −a
k k k
Backtracking−DFS(A,k)
endwhile
endif
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Backtracking:Ejemplo
Considereelproblemadeencontrartodoslossubconjuntodenelementosdeun
conjuntodemelementos.LoselementosealmacenanenunaarregloS[1...n].
Uncandidatoesunasolucio´nparcialquecontienealoma´sncandidatos.El
candidatoserepresentaporunvectorbinarioB[1...k],dondeB[i]=1siel
elementoS[i]esta´ enelconjunto,sinoB[i]=0.
Sepuedeentoncesextenderlasolucio´nagregandounelementoalvectorBcon
valor0o1.
Unacandidatoesunasolucio´nsi(cid:80)k B[i]=nyk =m.
i=1
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Backtracking:comentarios
Backtrackingaseguracorrectitudalenumerartodaslasposibilidades.
Sinembargo,puedesermuycostosoconstruirtodaslasposibilidades
(permutaciones)primeroyluegoanalizarlas.Asumaqueseparteporunnodo
n dela´rboldesolucionesyquenoexisteunarcoentrenodon yn .Entonces
1 1 2
laspro´ximas(n−2)!permutacionesquesiguende(n ,n )nosonsoluciones.
1 2
Otraformadeevitarunabu´squedaexhausticaesexplotarsimetr´ıadonde
solucionesparcialessonide´nticasparadistintoscaminosyevitarla
computacio´nrepetitivadesolucionesparciales(dynamicprogramming).
Otrate´cnicaespruning,lacualquecortaciertoscaminosdebu´squedaenel
a´rboldesolucio´n(estoesusadoengreedy).
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Programacio´n dina´mica
Introduccio´n
Laprogramacio´ndina´mica,aligualquelaestrategiadeDividirparaVencer,
resuelveproblemasporlacombinacio´ndesolucionesasubproblemas.
Sinembargo,adiferenciadeDividirparaVencer,laprogramacio´ndina´micaes
aplicablecuandolossubproblemascompartensubsubproblemas.
Laprogramacio´ndina´micaresuelvecadasubsubproblemasolounavezysalva
larespuestaenunatabla,evitandoeltrabajoderecalcularlarespuestacada
vezqueelsubsubproblemaseencuentra.
Laprogramacio´ndina´micaesusualmenteaplicadaaproblemasde
optimizacio´n,dondesenecesitanhacerciertasseleccionesparallegarauna
solucio´no´ptima,ydondealhacerunaseleccio´n,subproblemasdelamisma
formadebenresolverse.
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Introduccio´n(cont.)
Eldesarrollodeunalgoritmoqueuselate´cnicadeprogramacio´ndina´micapuedeser
desglosadoenlossiguientespasos
Caracterizacio´ndelaestructuradeunasolucio´no´ptima.
Definirrecursivamenteelvalordeunasolucio´no´ptima.
Calcularelvalordeunasolucio´no´ptimaenunesquemabottom-up
Construirunasolucio´no´ptimaapartirdelainformacio´ncalculada.Esteu´ltimo
pasopuedeseromitidosisoloelvalordeunasolucio´no´ptimaesrequerido.
Backtracking Programacio´nDina´mica AlgoritmosGreedy
Ejemplo1:L´ıneadeensamblaje
S1,1 S1,2 S1,3 S1,n-1 S1,n
línea 1 a1,1 a1,2 a1,3 a1,n-1 a1,n
e1 t1,1 t1,2 t1,3 t1,n.1 x1
Salida
enEsnatmrabdlaaje e2 t2,1 t2,2 t2,3 t2,n-1 x2 autos
a2,1 a2,2 a2,3 a2,n-1 a2,n
línea 2
S2,1 S2,2 S2,3 S2,n-1 S2,n
Hay2nformasdiferentesdeescogerestacionesenunal´ıneadeensamblaje,loqueesimposibleparaunnu´mero
muygrandeden.
Backtracking Programacio´nDina´mica AlgoritmosGreedy
L´ıneadeensamblaje:Estructuradeunasolucio´no´ptima
Paradeterminarlaformama´sra´pidadequeunchassislleguedesdelaentradaypase
porlaestacio´nS .
1,j
Sij =1,soloexisteunaformaposibleyeltiempoenconocido(e1,1+a1,1).
Sij >1,haydosformasposibles:
(i)Venirdelaestacio´nS ,conuntiemponegligentedepasardeS a
1,j−1 1,j−1
S .
1,j
(ii)Venirdeestacio´nS ytransferirsealal´ınea1conuntiempode
2,j−1
transferenciadet .
2,j−1
Enamboscasos,unasolucio´no´ptimaenS pasaporunasolucio´no´ptimadel
1,j
chassisdesdelaentradaalaestacio´nS oS .Delocontrario,sepodr´ıa
1,j−1 2,j−1
sustituirlaformama´sra´pidadellegaraS ,loqueesunacontradiccio´n.Aesto
1,j
selellamasubestructurao´ptima.
Description:árbol de solución (esto es usado en greedy) En este algoritmo a, t, e, x representan arreglos de valores de tiempo en una estación ai,j , tiempo de