Razvrščanje poslov na stroju
Iz MaFiRaWiki
UVOD:
n poslov
za i-ti posel poznamo vrednost vi in čas izgotovitve ti
na voljo imamo le en stroj
za vsak posel potrebuje stroj enoto časa
NALOGA:
Iščemo podmnožico poslov in vrstni red njihovega izvajanja , ki je pravočasno končano in maksimira vrednost
končanih poslov.
OPOMBA:
Množica J je dopustna, če jo je možno končati v vsaj enem vrstnem redu.
Ali moramo prevriti vsa možna zaporedja v J?
Ne, zadošča da preverimo "požrešno" zaporedje.
"Požrešno" zaporedje poslov iz je permutacija
teh poslov za katero je
.
Množica poslov iz J je torej dopustna natanko tedaj, ko je "požrešno" zaporedje teh poslov dopustno.
IDEJA:
Optimalno množico I dobimo tako (na začetku je , da ji v vsakem koraku dodamo posel z največjo vrednostjo med preostalimi posli, pri čemer mora I ostati dopustna.
ALGORITEM
Vhod: Množica poslov 1,2,...n in vi,ti za vsak i.
Izhod: Množica J poslov, ki je dopustna in ima maksimalno vrednost.
(p1, p2, ..., pn)=UrediPoslePoVelikosti; J=0;V=0; for k=1 to n do if dopustna (J unija {pk}) then J=J unija {pk}; V=V+V*pk end if end for