Table Of ContentAAllggoorriittmmooss GGrreeeeddyy
AAnnáálliissiiss yy DDiisseeññoo ddee AAllggoorriittmmooss
AAllggoorriittmmooss GGrreeeeddyy
(cid:1)(cid:1) CCaarraacctteerrííssttiiccaass ggeenneerraalleess
(cid:1)(cid:1) EElleemmeennttooss ddee uunn aallggoorriittmmoo ggrreeeeddyy
(cid:1)(cid:1) EEssqquueemmaa ddee uunn aallggoorriittmmoo ggrreeeeddyy
(cid:1)(cid:1) EEjjeemmppllooss
(cid:1)(cid:1)(cid:1)(cid:1) SSSSeeeelllleeeecccccccciiiióóóónnnn ddddeeee aaaaccccttttiiiivvvviiiiddddaaaaddddeeeessss
(cid:1)(cid:1) AAllmmaacceennaammiieennttoo óóppttiimmoo eenn cciinnttaass
(cid:1)(cid:1) PPrroobblleemmaa ddee llaa mmoocchhiillaa ffrraacccciioonnaall
(cid:1)(cid:1) HHeeuurrííssttiiccaass ggrreeeeddyy
(cid:1)(cid:1) EEjjeemmpplloo:: EEll pprroobblleemmaa ddee llaa mmoocchhiillaa
(cid:1)(cid:1) AApplliiccaacciioonneess
11
CCaarraacctteerrííssttiiccaass ggeenneerraalleess
(cid:1)(cid:1) SSee uuttiilliizzaann ggeenneerraallmmeennttee ppaarraa rreessoollvveerr pprroobblleemmaass ddee
ooppttiimmiizzaacciióónn ((oobbtteenneerr eell mmááxxiimmoo oo eell mmíínniimmoo))..
(cid:1)(cid:1) TToommaann ddeecciissiioonneess eenn ffuunncciióónn ddee llaa iinnffoorrmmaacciióónn qquuee
eeeessssttttáááá ddddiiiissssppppoooonnnniiiibbbblllleeee eeeennnn ccccaaaaddddaaaa mmmmoooommmmeeeennnnttttoooo....
(cid:1)(cid:1) UUnnaa vveezz ttoommaaddaa llaa ddeecciissiióónn,, ééssttaa nnoo vvuueellvvee aa
rreeppllaanntteeaarrssee eenn eell ffuuttuurroo..
(cid:1)(cid:1) SSuueelleenn sseerr rrááppiiddooss yy ffáácciilleess ddee iimmpplleemmeennttaarr..
(cid:1)(cid:1) NNoo ssiieemmpprree ggaarraannttiizzaann aallccaannzzaarr llaa ssoolluucciióónn óóppttiimmaa..
22
CCaarraacctteerrííssttiiccaass ggeenneerraalleess
greedy (adj):
avaricioso, voraz, ávido, codicioso, glotón…
¡¡CCóómmeettee ssiieemmpprree ttooddoo
lo que tengas a mano!
33
CCaarraacctteerrííssttiiccaass ggeenneerraalleess
NNOOTTAA IIMMPPOORRTTAANNTTEE
EEll eennffooqquuee ““ggrreeeeddyy”” nnoo nnooss ggaarraannttiizzaa oobbtteenneerr
ssssoooolllluuuucccciiiioooonnnneeeessss óóóóppppttttiiiimmmmaaaassss....
PPoorr lloo ttaannttoo,, ssiieemmpprree hhaabbrráá qquuee eessttuuddiiaarr llaa
ccoorrrreecccciióónn ddeell aallggoorriittmmoo ppaarraa ddeemmoossttrraarr ssii llaass
ssoolluucciioonneess oobbtteenniiddaass ssoonn óóppttiimmaass oo nnoo..
44
EElleemmeennttooss
PPaarraa ppooddeerr rreessoollvveerr uunn pprroobblleemmaa uussaannddoo eell eennffooqquuee
ggrreeeeddyy,, tteennddrreemmooss qquuee ccoonnssiiddeerraarr 66 eelleemmeennttooss::
CCoonnjjuunnttoo ddee ccaannddiiddaattooss ((eelleemmeennttooss sseelleecccciioonnaabblleess))..
11..
SSoolluucciióónn ppaarrcciiaall ((ccaannddiiddaattooss sseelleecccciioonnaaddooss))..
22..
FFFFuuuunnnncccciiiióóóónnnn ddddeeee sssseeeelllleeeecccccccciiiióóóónnnn ((((ddddeeeetttteeeerrrrmmmmiiiinnnnaaaa eeeellll mmmmeeeejjjjoooorrrr ccccaaaannnnddddiiiiddddaaaattttoooo
33..
ddeell ccoonnjjuunnttoo ddee ccaannddiiddaattooss sseelleecccciioonnaabblleess))..
FFuunncciióónn ddee ffaaccttiibbiilliiddaadd ((ddeetteerrmmiinnaa ssii eess ppoossiibbllee
44..
ccoommpplleettaarr llaa ssoolluucciióónn ppaarrcciiaall ppaarraa aallccaannzzaarr uunnaa ssoolluucciióónn
ddeell pprroobblleemmaa))..
CCrriitteerriioo qquuee ddeeffiinnee lloo qquuee eess uunnaa ssoolluucciióónn ((iinnddiiccaa
55..
ssii llaa ssoolluucciióónn ppaarrcciiaall oobbtteenniiddaa rreessuueellvvee eell pprroobblleemmaa))..
66.. FFuunncciióónn oobbjjeettiivvoo ((vvaalloorr ddee llaa ssoolluucciióónn aallccaannzzaaddaa)).. 55
EEssqquueemmaa ggeenneerraall
(cid:1)(cid:1) SSee ppaarrttee ddee uunn ccoonnjjuunnttoo vvaaccííoo:: SS == ∅∅..
(cid:1)(cid:1) DDee llaa lliissttaa ddee ccaannddiiddaattooss,, ssee eelliiggee eell mmeejjoorr ((ddee
aaccuueerrddoo ccoonn llaa ffuunncciióónn ddee sseelleecccciióónn))..
(cid:1)(cid:1)(cid:1)(cid:1) CCCCoooommmmpppprrrroooobbbbaaaammmmoooossss ssssiiii sssseeee ppppuuuueeeeddddeeee lllllllleeeeggggaaaarrrr aaaa uuuunnnnaaaa ssssoooolllluuuucccciiiióóóónnnn ccccoooonnnn eeeellll
ccaannddiiddaattoo sseelleecccciioonnaaddoo ((ffuunncciióónn ddee ffaaccttiibbiilliiddaadd))..
SSii nnoo eess aassíí,, lloo eelliimmiinnaammooss ddee llaa lliissttaa ddee ccaannddiiddaattooss
ppoossiibblleess yy nnuunnccaa mmááss lloo ccoonnssiiddeerraarreemmooss..
(cid:1)(cid:1) SSii aaúúnn nnoo hheemmooss lllleeggaaddoo aa uunnaa ssoolluucciióónn,,
sseelleecccciioonnaammooss oottrroo ccaannddiiddaattoo yy rreeppeettiimmooss eell pprroocceessoo
hhaassttaa lllleeggaarr aa uunnaa ssoolluucciióónn [[oo qquueeddaarrnnooss ssiinn ppoossiibblleess
ccaannddiiddaattooss]]..
66
EEssqquueemmaa ggeenneerraall
GGrreeeeddyy ((ccoonnjjuunnttoo ddee ccaannddiiddaattooss CC)):: ssoolluucciióónn SS
SS == ØØ
wwhhiillee ((SS nnoo sseeaa uunnaa ssoolluucciióónn yy CC ≠≠ ØØ)) {{
xx == sseelleecccciióónn((CC))
CCCC ==== CCCC –––– {{{{xxxx}}}}
iiff ((SS∪∪∪∪∪∪∪∪{{xx}} eess ffaaccttiibbllee))
SS == SS∪∪∪∪∪∪∪∪{{xx}}
}}
iiff ((SS eess uunnaa ssoolluucciióónn))
rreettuurrnn SS;;
eellssee
rreettuurrnn ““NNoo ssee eennccoonnttrróó uunnaa ssoolluucciióónn””;;
77
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
TTeenneemmooss qquuee eelleeggiirr ddee eennttrree uunn ccoonnjjuunnttoo ddee aaccttiivviiddaaddeess::
(cid:1)(cid:1) PPaarraa ccaaddaa aaccttiivviiddaadd,, ccoonnoocceemmooss ssuu hhoorraa ddee ccoommiieennzzoo
yy ssuu hhoorraa ddee ffiinnaalliizzaacciióónn..
(cid:1)(cid:1)(cid:1)(cid:1) PPPPooooddddeeeemmmmoooossss aaaassssiiiissssttttiiiirrrr aaaa ttttooooddddaaaassss llllaaaassss aaaaccccttttiiiivvvviiiiddddaaaaddddeeeessss qqqquuuueeee qqqquuuueeeerrrraaaammmmoooossss....
(cid:1)(cid:1) SSiinn eemmbbaarrggoo,, hhaayy aaccttiivviiddaaddeess qquuee ssee ssoollaappaann eenn eell
ttiieemmppoo yy nnoo ppooddeemmooss eessttaarr eenn ddooss ssiittiiooss aa llaa vveezz..
PPoossiibblleess oobbjjeettiivvooss
AAssiissttiirr aall mmaayyoorr nnúúmmeerroo ddee aaccttiivviiddaaddeess ppoossiibbllee..
11..
MMiinniimmiizzaarr eell ttiieemmppoo qquuee eessttaammooss oocciioossooss..
22..
88
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
PPrroobblleemmaa ddee sseelleecccciióónn ddee aaccttiivviiddaaddeess
DDaaddoo uunn ccoonnjjuunnttoo CC ddee nn aaccttiivviiddaaddeess,, ccoonn
ss == ttiieemmppoo ddee ccoommiieennzzoo ddee llaa aaccttiivviiddaadd ii
ii
ff == ttiieemmppoo ddee ffiinnaalliizzaacciióónn ddee llaa aaccttiivviiddaadd ii
ii
eennccoonnttrraarr eell ssuubbccoonnjjuunnttoo SS ddee aaccttiivviiddaaddeess ccoommppaattiibblleess
ddee ttaammaaññoo mmááxxiimmoo ((eessttoo eess,, aaccttiivviiddaaddeess qquuee nnoo ssee
ssoollaappeenn eenn eell ttiieemmppoo))..
99
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
EElleemmeennttooss ddeell pprroobblleemmaa
(cid:1) Conjunto de candidatos: C = {actividades ofertadas}.
(cid:1)(cid:1) SSoolluucciióónn ppaarrcciiaall:: SS ((iinniicciiaallmmeennttee,, SS==∅∅))..
(cid:1) Función de selección: menor duración, menor
solapamiento, terminación más temprana…
(cid:1) Función de factibilidad: x es factible si es compatible
(esto es, no se solapa) con las actividades de S.
(cid:1) Criterio que define lo que es una solución: C=∅.
(cid:1) Función objetivo (lo que tratamos de optimizar):
El tamaño de S.
1100
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
EEssttrraatteeggiiaass ggrreeeeddyy aalltteerrnnaattiivvaass
OOrrddeenn eenn eell qquuee ssee ppuueeddeenn ccoonnssiiddeerraarr llaass aaccttiivviiddaaddeess::
(cid:1)(cid:1) OOrrddeenn ccrreecciieennttee ddee hhoorraa ddee ccoommiieennzzoo..
(cid:1) Orden creciente de hora de finalización.
(cid:1) Orden creciente de duración: ff -- ss
ii ii
(cid:1)(cid:1) OOrrddeenn ccrreecciieennttee ddee ccoonnfflliiccttooss ccoonn oottrraass aaccttiivviiddaaddeess
((ccoonn ccuuáánnttaass aaccttiivviiddaaddeess ssee ssoollaappaa))..
1111
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
EEssttrraatteeggiiaass ggrreeeeddyy aalltteerrnnaattiivvaass
CCoonnttrraaeejjeemmppllooss ((ppaarraa ddeessccaarrttaarr aalltteerrnnaattiivvaass))
(cid:1)(cid:1) OOrrddeenn ccrreecciieennttee ddee hhoorraa ddee ccoommiieennzzoo..
(cid:1) Orden creciente de duración: ff -- ss
ii ii
(cid:1)(cid:1) OOrrddeenn ccrreecciieennttee ddee ccoonnfflliiccttooss ccoonn oottrraass aaccttiivviiddaaddeess
1122
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
AAllggoorriittmmoo GGrreeeeddyy
SSeelleecccciióónnAAccttiivviiddaaddeess ((CC:: aaccttiivviiddaaddeess)):: SS
OOOOrrrrddddeeeennnnaaaarrrr CCCC eeeennnn oooorrrrddddeeeennnn ccccrrrreeeecccciiiieeeennnntttteeee ddddeeee ttttiiiieeeemmmmppppoooo ddddeeee ffffiiiinnnnaaaalllliiiizzzzaaaacccciiiióóóónnnn....
SSeelleecccciioonnaarr llaa pprriimmeerraa aaccttiivviiddaadd ddee CC
((eessttoo eess,, eexxttrraaeerrllaa ddeell ccoonnjjuunnttoo CC yy aaññaaddiirrllaa aa SS))..
RReeppeettiirr
EExxttrraaeerr llaa ssiigguuiieennttee aaccttiivviiddaadd ddeell ccoonnjjuunnttoo oorrddeennaaddoo::
SSii ccoommiieennzzaa ddeessppuuééss ddee qquuee llaa aaccttiivviiddaadd pprreevviiaa eenn SS
hhaayyaa tteerrmmiinnaaddoo,, sseelleecccciioonnaarrllaa ((aaññaaddiirrllaa aa SS))..
hhaassttaa qquuee CC eessttéé vvaaccííoo.. 1133
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
AAllggoorriittmmoo GGrreeeeddyy
SSeelleecccciióónnAAccttiivviiddaaddeess ((CC:: aaccttiivviiddaaddeess)):: SS
{{
ssssoooorrrrtttt((((CCCC))));;;; //////// oooorrrrddddeeeennnnaaaarrrr sssseeeeggggúúúúnnnn ttttiiiieeeemmmmppppoooo ddddeeee ffffiiiinnnnaaaalllliiiizzzzaaaacccciiiióóóónnnn
SS[[00]] == CC[[00]];; //// sseelleecccciioonnaarr llaa pprriimmeerraa aaccttiivviiddaadd
ii == 11;; pprreevv == 00;;
wwhhiillee ((ii<<CC..lleennggtthh)) {{ //// ¿¿ssoolluucciióónn((SS))??
xx == CC[[ii]];; //// sseelleecccciioonnaarr xx
iiff ((xx..iinniicciioo >>== SS[[pprreevv]]..ffiinn)) //// ¿¿ffaaccttiibbllee((xx))??
SS[[++++pprreevv]] == xx;; //// aaññaaddiirr xx aa SS
ii++++;;
}}
1144
}}
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
B
C
A
E
D
F
G
H
Tiempo
1155
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
B
C
A
E
D
F
G
H
Tiempo
B
1166
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
B
C
A
E
D
F
G
H
Tiempo
B C
1177
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
B
C
A
E
D
F
G
H
Tiempo
B A
1188
EEjjeemmpplloo
SSeelleecccciióónn ddee aaccttiivviiddaaddeess
B
C
A
E
D
F
G
H
Tiempo
B E
1199
Description:Orden creciente de conflictos con otras actividades . Scheduling: The greedy algorithm algorithm Fundamentals of Computer Algorithms, 1978. 30.