Sie sind auf Seite 1von 44

Algoritmos Gulosos

Norton T. Roman

Apostila baseada no trabalho de Delano M. Beder, Luciano Digianpietri, David Matuszek, Marco Aurelio Stefanes e Nivio Ziviani

Algoritmos Gulosos

Soaquelesque,acadadeciso:

Sempreescolhemaalternativaqueparecemais promissoranaqueleinstante Nuncareconsideramessa deciso

Umaescolhaquefoifeitanunca revista Nohbacktracking Comeenuncavomita(argh!)

Algoritmos Gulosos

Alternativamaispromissora?

Dependedoproblema,doquesequermaximizarou minimizar

Ex:caminhomaiscurto,menornmerodejogadasetc Umafunoquedigaqualdelasvalemais,diantedoquese consideraimportanteparaoproblema

Hqueseterummododeavaliarasdiferentesopes

Porfazeraescolhaquepareceseramelhoracada iterao,dizsequeaescolhafeitadeacordocom umcritriogulosodecisolocalmentetima!

Algoritmos Gulosos

Caractersticas:

Paraconstruirasoluotimaexisteumconjuntoou listadecandidatos. Soacumuladosumconjuntodecandidatosconsiderados eescolhidos,eooutrodecandidatosconsideradose rejeitados. Existefunoqueverificaseumconjuntoparticularde candidatosproduzumasoluo(semconsiderar otimalidadenomomento).

Algoritmos Gulosos

Caractersticas:

Outrafunoverificaseumconjuntodecandidatos vivel(tambmsempreocuparcomaotimalidade). Umafunodeseleoindicaaqualquermomentoquais doscandidatosrestantesomaispromissor. Umafunoobjetivoforneceovalordasoluo encontrada


Comoocomprimentodocaminhoconstrudo Noaparecedeformaexplicitanoalgoritmoguloso

Algoritmos Gulosos

Afunodeseleogeralmenterelacionadacoma funoobjetivo. Seoobjetivo:

maximizarprovavelmenteescolherocandidato restantequeproporcioneomaiorganhoindividual. minimizarentoserescolhidoocandidatorestantede menorcusto. Tipicamente,umdossegredosdosalgoritmosgulosos aescolhadecomooconjuntodeentradaserordenado.

Algoritmos Gulosos

Oalgoritmonuncamudadeidia:

Umavezqueumcandidatoescolhidoeadicionado soluoelelpermaneceparasempre. Umavezqueumcandidatoexcludodoconjunto soluo,elenuncamaisreconsiderado.

Algoritmos Gulosos

Tipicamentealgoritmosgulosossoutilizadospara resolverproblemasdeotimizaoquefuncionem atravsdeumaseqnciadepassos. Nemsempredosoluestimas,emboramuitas vezesofaam

??? Para onde ir ???

Algoritmos Gulosos

Tipicamentealgoritmosgulosossoutilizadospara resolverproblemasdeotimizaoquefuncionem atravsdeumaseqnciadepassos. Nemsempredosoluestimas,emboramuitas vezesofaam

Ficaria mais fcil decidir se tivssemos mais informao

Algoritmos Gulosos

Tipicamentealgoritmosgulosossoutilizadospara resolverproblemasdeotimizaoquefuncionem atravsdeumaseqnciadepassos. Nemsempredosoluestimas,emboramuitas vezesofaam

Sepudermosprovarquea escolhagulosa,combinada comasescolhasfeitasat ento,tima,entoele dararespostatima

Ficaria mais fcil decidir se tivssemos mais informao

Algoritmos Gulosos

Aidiabsicadaestratgiagulosaconstruirpor etapasumasoluotima.

Emcadapasso,apsselecionarumelementodaentrada (omelhor),decideseseelevivel(casoemquevira fazerpartedasoluo)ouno. Apsumaseqnciadedecises,umasoluoparao problemaalcanada. Nessaseqnciadedecises,nenhumelemento examinadomaisdeumavez:ouelefarpartedasoluo, ouserdescartado.

Algoritmos Gulosos

Ingredienteschavesdeumalgoritmoguloso:

Subestruturatima

Seumasoluotimaparaoproblemacontm,dentrodele, soluestimasparaseussubproblemas

Caractersticagulosa:Soluotimaglobalpodeser produzidaapartirdeumaescolhatimalocal.

Daescolha,emumdadomomento,damelhoropodentreas existentes.

Exemplos

Seleodeatividades:

Existemdiversasatividades(porexemploaulas)que queremusarummesmorecurso(porexemploumasala deaulas). Cadaatividadetemumhorriodeincioeumhorriode fim. Sexisteumasaladisponvel. Duasaulasnopodempodemserministradasnamesma salaaomesmotempo.

Exemplos

Seleodeatividades:

11atividades,em14unidadesdetempo
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 9 10 11

Exemplos

Seleodeatividades:

Objetivo:selecionarumconjuntomximodeatividades compatveis.

Atividadescompatveissoatividadesquenotm sobreposiodetempo. Ento,criaromaiorgrupodeatividadessemquehaja sobreposiodetempo

Exemplos

Seleodeatividades:

Comoprocederamos? Oquefardeumaatividademaispromissoraqueoutra?

Exemplos

Seleodeatividades:

Tentativa1:

Escolherprimeiroasatividadescomeamprimeiro. Comofica?

Exemplos

Seleodeatividades:

Tentativa1:

Escolherprimeiroasatividadescomeamprimeiro.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 9 10 11

Foiboaasoluo?

Exemplos

Seleodeatividades:

Tentativa1:

Escolherprimeiroasatividadescomeamprimeiro.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 9 10 11

Foiboaasoluo?

Nofoimuitobom:escolheuapenasasatividades3,8e11,quando poderiaterescolhidoquatro(1,4,8e11).

Exemplos

Seleodeatividades:

Tentativa2:

Escolherprimeiroasatividadesquedemorammenostempo Comofica?

Exemplos

Seleodeatividades:

Tentativa2:

Escolherprimeiroasatividadesquedemorammenostempo
0 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Foiboaasoluo?

Exemplos

Seleodeatividades:

Tentativa2:

Escolherprimeiroasatividadesquedemorammenostempo
0 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Foiboaasoluo?

Nofoimuitobom:escolheuapenasasatividades2,8e11,quando poderiaterescolhidoquatro(1,4,8e11).

Exemplos

Seleodeatividades:

Tentativa3:

Escolherprimeiroasatividadesterminamprimeiro. Comofica?

Exemplos

Seleodeatividades:

Tentativa3:

Escolherprimeiroasatividadesterminamprimeiro.
0 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Foiboaasoluo?

Exemplos

Seleodeatividades:

Tentativa3:

Escolherprimeiroasatividadesterminamprimeiro.
0 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Foiboaasoluo?

Agorasim.possveldemonstrarqueessasoluotima.

Exemplos

Seleodeatividadesfuncionamentodoalgoritmo guloso:

Recebealistadeatividadesordenadaspelohorriode trmino. Acadaiteraoverificaseaatividadeatualpodeser includanalistadeatividades

Notequeaatividadeatualaqueterminaprimeiro,dentreas atividadesrestantes

Exemplos

Seleodeatividades:
publicclassSelecaoDeAtividadesGuloso{ staticintselecaoGulosa(int[]ini,int[]fim,intn){ intultimaSelecionada=0; intselecionadas=0; if(n==0)return0; //aprimeiraatividadesempreselecionada System.out.print("a"+0+""); selecionadas++; for(inti=1;i<n;i++) if(ini[i]>=fim[ultimaSelecionada]){ System.out.print("a"+i+""); selecionadas++; ultimaSelecionada=i; } System.out.println(); returnselecionadas; } ...

Exemplos

Seleodeatividades:
... //asatividadesdevemserordenadaspelocampofim //ouseja,asatividadesqueacabamprimeiroficamnafrente privatestaticint[]inicio={1,3,0,5,3,5,6,8,8,2,12}; privatestaticint[]fim={4,5,6,7,8,9,10,11,12,13,14}; privatestaticintnumeroDeAtividades=11; publicstaticvoidmain(String[]args){ inttotal=selecaoGulosa(inicio,fim,numeroDeAtividades); System.out.println("Foramselecionadas"+total+" atividades."); }

Exemplos

Problemadamochila:

Dados:

Umamochilaqueadmiteumcertopeso; Umconjuntodeobjetos,cadaumcomumvaloreumpeso; Selecionaroconjuntodeobjetosquecaibamdentrodamochila deformaamaximizarovalortotaldentrodamochila.

Objetivo:

Exemplos

Problemadamochila:

Esteproblemasedivideemdoissubproblemasdistintos:

Osobjetospodemserparticionados(eovalorser proporcionalfraodoobjeto),ouseja,vocpodecolocar umpedaodoobjetodentrodamochila;

Ex:ouroemp

Osobjetosnopodemserparticionados(ouestarodentroda mochilaoufora).ProblemaconhecidocomoProblemada MochilaBinriaou01

Ex:ouroembarras

Exemplos

Problemadamochilafracionada:

Qualseriaamelhorordenaodaentrada?

Exemplos

Problemadamochilafracionada:

Qualseriaamelhorordenaodaentrada?

ordenarpelovalor/peso Sim(demonstrvel)

Asoluogulosasertima?

Algoritmo:

Exemplos

Problemadamochilafracionada:

Qualseriaamelhorordenaodaentrada?

ordenarpelovalor/peso Sim(demonstrvel) PararesolveroProblemadaMochilaFracionadaordeneos itensporvalor/pesodecrescentemente Comeandoemi=1coloquenamochilaomximodoitemi queestiverdisponveleforpossvel,esepuderlevarmais passeparaoprximoitem.

Asoluogulosasertima?

Algoritmo:

Exemplos

Problemadamochilafracionada:

Exemplos

Problemadamochilafracionada:

valor/peso = 6

Exemplos

Problemadamochilafracionada:

valor/peso = 6

Exemplos

Problemadamochilafracionada:
//W=capacidademximadamochila load=0//carganamochila i=1 while(load<W)and(i<=n)do{ if(wi<=(Wload) Peguetodooitemi else Pegue(Wload)/widoitemi Adicionealoadopesoquefoipego i++ }

Exemplos

Problemadamochilabinria:

Qualseriaamelhorordenaodaentrada?

Exemplos

Problemadamochilabinria:

Qualseriaamelhorordenaodaentrada?

ordenarpelovalor/peso PararesolveroProblemadaMochilaFracionadaordeneos itensporvalor/pesodecrescentemente Comeandoemi=1coloquenamochilaomximodoitemi queestiverdisponveleforpossvel,esepuderlevarmais passeparaoprximoitem.

Algoritmo:

Asoluogulosasertima?

Exemplos

Problemadamochilabinria:

Exemplos

Problemadamochilabinria:

valor/peso = 6

Exemplos

Problemadamochilabinria:

valor/peso = 6

$160

Exemplos

Problemadamochilabinria:

Asoluogulosafoitima?
?

valor/peso = 6

$160

Exemplos

Problemadamochilabinria:

Asoluogulosafoitima?

Obviamenteno.Atimaseria:

valor/peso = 6

Das könnte Ihnen auch gefallen