a job sequening problem-ben a cél az,hogy megtaláljuk a jobok sorrendjét, amely határidőkön belül befejeződik, és maximális nyereséget biztosít.
ha egy sor n munkahelyet adnak, amelyek kapcsolódnak a határidők és a nyereséget szerzett, és a munka befejeződött a határidő. Ezeket a munkákat úgy kell megrendelni, hogy maximális nyereség legyen.
Vegyünk egy példát. Amint az 1.1. ábrán látható, egy sor feladat van megadva, ahol minden feladatnak van határideje és kapcsolódó nyeresége, ha a feladat a határidő előtt befejeződött. Azt is figyelembe veszik, hogy minden munka egyetlen időegységet vesz igénybe, tehát bármely munka minimális lehetséges határideje 1. Hogyan lehet maximalizálni a teljes profitot, ha egyszerre csak egy munkát lehet ütemezni.
egy egyszerű megoldás az, hogy létrehoz minden részhalmaza adott halmaza munkahelyek és ellenőrizze az egyes részhalmaza megvalósíthatóságát munkahelyek abban részhalmaza. Kövesse nyomon a maximális profitot az összes megvalósítható részhalmaz között. A megoldás időbeli összetettsége exponenciális.Ezt a problémát kapzsi módszerrel is megoldhatjuk, amely optimálisabb, mint az egyszerű megoldás.Tehát lehetővé teszi, hogy megoldja ezt a problémát keresztül kapzsi módszer.
a feladatszekvenálási probléma greedy módszerrel történő megoldásához kövesse az alábbi lépéseket:
- rendezze az összes munkát a profit csökkenő sorrendjében.
- inicializálja az eredménysorozatot első feladatként a rendezett feladatokban.
- kövesse a fennmaradó n-1 feladatokat.
- ha az aktuális feladat belefér az aktuális eredménysorozatba a határidő elmulasztása nélkül, adja hozzá az aktuális feladatot az eredményhez. Figyelmen kívül hagyja az aktuális munkát.
mint látható az ábrán 1.1 a munkahelyek már csökkenő sorrendben profit.Itt az 1. feladatnak van a legnagyobb nyeresége, és a határidő 3, tehát állítsa be ezt a munkát 2-3 között, az 1.2.ábrán látható módon.A 2. feladat a második legnagyobb nyereséggel rendelkezik, a határidő pedig 4, tehát állítsa be ezt a munkát 3-4 között, és tegye ugyanezt mindenkivel jobs.So a végső sorrend J4-J3-J1-J2, a teljes nyereség pedig 110.
ennek az algoritmusnak a kódját a https://www.geeksforgeeks.org/job-sequencing-problem címen részesítheti előnyben.
idő összetettsége ez a megoldás O (n2). meg lehet optimalizálni diszjunkt adatstruktúra.
remélem tetszik a cikk.Köszönöm:)