Escolar Documentos
Profissional Documentos
Cultura Documentos
Norton T. Roman
???
Para onde ir
???
Algoritmos Gulosos
Tipicamentealgoritmosgulosossoutilizadospara
resolverproblemasdeotimizaoquefuncionem
atravsdeumaseqnciadepassos.
Nemsempredosoluestimas,emboramuitas
vezesofaam
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 12 13 14
1
2
3
4
5
6
7
8
9
10
11
Foiboaasoluo?
Exemplos
Seleodeatividades:
Tentativa2:
Escolherprimeiroasatividadesquedemorammenostempo
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: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 12 13 14
1
2
3
4
5
6
7
8
9
10
11
Foiboaasoluo?
Exemplos
Seleodeatividades:
Tentativa3:
Escolherprimeiroasatividadesterminamprimeiro.
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?
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;
Objetivo:
Selecionaroconjuntodeobjetosquecaibamdentrodamochila
deformaamaximizarovalortotaldentrodamochila.
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
Asoluogulosasertima?
Sim(demonstrvel)
Algoritmo:
Exemplos
Problemadamochilafracionada:
Qualseriaamelhorordenaodaentrada?
ordenarpelovalor/peso
Asoluogulosasertima?
Sim(demonstrvel)
Algoritmo:
PararesolveroProblemadaMochilaFracionadaordeneos
itensporvalor/pesodecrescentemente
Comeandoemi=1coloquenamochilaomximodoitemi
queestiverdisponveleforpossvel,esepuderlevarmais
passeparaoprximoitem.
Exemplos
Problemadamochilafracionada:
?
Exemplos
Problemadamochilafracionada:
valor/peso = 6 5 4
Exemplos
Problemadamochilafracionada:
valor/peso = 6 5 4
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
Algoritmo:
PararesolveroProblemadaMochilaFracionadaordeneos
itensporvalor/pesodecrescentemente
Comeandoemi=1coloquenamochilaomximodoitemi
queestiverdisponveleforpossvel,esepuderlevarmais
passeparaoprximoitem.
Asoluogulosasertima?
Exemplos
Problemadamochilabinria:
?
Exemplos
Problemadamochilabinria:
valor/peso = 6 5 4
Exemplos
Problemadamochilabinria:
valor/peso = 6 5 4
$160
Exemplos
Problemadamochilabinria:
Asoluogulosafoitima?
valor/peso = 6 5 4
$160
Exemplos
Problemadamochilabinria:
Asoluogulosafoitima?
Obviamenteno.Atimaseria:
valor/peso = 6 5 4