Beruflich Dokumente
Kultur Dokumente
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:
Algoritmos Gulosos
Alternativamaispromissora?
Dependedoproblema,doquesequermaximizarou minimizar
Hqueseterummododeavaliarasdiferentesopes
Algoritmos Gulosos
Caractersticas:
Algoritmos Gulosos
Caractersticas:
Comoocomprimentodocaminhoconstrudo Noaparecedeformaexplicitanoalgoritmoguloso
Algoritmos Gulosos
Algoritmos Gulosos
Oalgoritmonuncamudadeidia:
Algoritmos Gulosos
Algoritmos Gulosos
Algoritmos Gulosos
Algoritmos Gulosos
Aidiabsicadaestratgiagulosaconstruirpor etapasumasoluotima.
Algoritmos Gulosos
Ingredienteschavesdeumalgoritmoguloso:
Subestruturatima
Seumasoluotimaparaoproblemacontm,dentrodele, soluestimasparaseussubproblemas
Caractersticagulosa:Soluotimaglobalpodeser produzidaapartirdeumaescolhatimalocal.
Daescolha,emumdadomomento,damelhoropodentreas existentes.
Exemplos
Seleodeatividades:
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.
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:
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:
Objetivo:
Exemplos
Problemadamochila:
Esteproblemasedivideemdoissubproblemasdistintos:
Ex:ouroemp
Ex:ouroembarras
Exemplos
Problemadamochilafracionada:
Qualseriaamelhorordenaodaentrada?
Exemplos
Problemadamochilafracionada:
Qualseriaamelhorordenaodaentrada?
ordenarpelovalor/peso Sim(demonstrvel)
Asoluogulosasertima?
Algoritmo:
Exemplos
Problemadamochilafracionada:
Qualseriaamelhorordenaodaentrada?
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?
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