2. algoritmi so raspored

70
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО Алгоритми со распоред Алторитми и сложеност Аудиториски вежби 2 Бојан Илијоски

Upload: -

Post on 22-Dec-2015

39 views

Category:

Documents


6 download

DESCRIPTION

dfgfg

TRANSCRIPT

Page 1: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритми со распоред

Алторитми и сложеностАудиториски вежби 2

Бојан Илијоски

Page 2: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Дадено е множество на n интервали Секој од интервалите имаВреме на почеток si

Време на крај fiВредност vi

Да се најде подмножество на множеството интервали така што вредноста на овие интервали биде максимална и притоа да не се поклопуваат

Page 3: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Алчен пристапАко сите тежини се еднакви (пр.vi=1 , i=1..n)Интервалите се распоредени во растечки

редослед според времето на завршувањеДодади го интервалот во подмножеството

ако тој не се поклопува со претходно избраните

Page 4: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Ако имаме тежини алчниот пристап не

работи

Page 5: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Да претпоставиме дека сме

заинтересирани само за вредноста, не и за тоа кои интервали се вклучени

Типичен проблем на ДПТреба да најдеме решение кое оптимизира

одредена вредностСе фокусираме на тоа која треба да биде

оптималната вредност на подпроблемите

Page 6: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение со динамичко програмирање Интервалите се сортираат и се

обележуваат според времето на завршување f1≤f2 ≤… ≤fn

p(j) = најголемиот индекс i < j така што i не се поклопува со j

Page 7: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 8: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение со динамичко програмирање Случај 1: интервалот j влегува во

оптималното решениеМора да го вклучи оптималното решение на

подпроблемите кои ги содржат интервалите со кои не се преклопува 1, 2, ...,p(j)

Не може да ги користи интервалите со кои се преклопува p(j)+1, p(j)+2, …, j-1

Случај 2: интервалот ј не влегува во оптималното решениеМора да го вклучи оптималното решение од

останатите интервали со кои не се поклопува 1, 2, …, ј-1

Page 9: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение со динамичко програмирање OPT(j) = оптималното решение земајќи

ги во предвид интервалите 1, ..., ј

Page 10: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали

Page 11: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам со груба сила Груба сила – рекурзивен алгоритамInput: n, s1,…,sn , f1,…,fn , v1,…,vnSort jobs by finish times so that f1 ≤ f2 ≤ ... ≤ fn.Compute p(1), p(2), …, p(n)

Compute-Opt(j) {if (j = 0)

return 0else

return max(vj + Compute-Opt(p(j)), Compute-Opt(j-1))}

Page 12: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Вкупен број на јазли ≥ 2n/2

За извршување на секој јазол имаме константна сложеност Ω(2n)

Page 13: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Груба сила – рекурзивен алгоритамПроблем: постојано го пресметуваме

истиот подпроблемРешение: Зачувај го решението за секој

подпроблем кој си го пресметал

Page 14: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам со ДП Bottom-Up пристапInput: n, s1,…,sn , f1,…,fn , v1,…,vnSort jobs by finish times so that f1 ≤ f2 ≤ ... ≤ fn.Compute p(1), p(2), …, p(n)

Iterative-Compute-Opt {OPT[0] = 0for j = 1 to n

OPT[j] = max(vj + OPT[p(j)], OPT[j-1])}

Output OPT[n]

Page 15: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам со ДП Bottom-Up пристап OPT[j] e оптималното решение за

интервалите 1...j СложеностГлавната лупа О(n)Сортирање О(n log n)

Page 16: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 17: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 18: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Го имаме оптималното решение, како

да најдеме кои интервали се вклучени? Интервалот j e во оптималното решение

на подпроблемите на интервалите {1, 2, …, j} ако vj + OPT(p(j)) ≥ OPT(j - 1)

Откако ќе одредиме дали интервалот j е во решението или не го гледаме соодветниот подпроблем{1, 2, …, p(j)}{1, 2, …, j-1}

Page 19: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на тежински интервали Интервали во решениетоRun M-Compute-Opt(n)Run Find-Solution(n)Find-Solution(j) {

if (j = 0)output nothing

else if (vj + OPT[p(j)] > OPT[j-1])print jFind-Solution(p(j))

elseFind-Solution(j-1)

Број на рекурзивни повици < n → O(n)

Page 20: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 21: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали Дадени се n предавања Предавањето j почнува во sj, a

завршува во fj Да се одреди минималниот број на

предавални (училни) така што ќе се распоредат сите предавања и нема да има две (или повеќе) предавања во исто време, во иста предавална

Page 22: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 23: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали Имаме доволно ресурси да опслужиме

повеќе од едно барање одеднаш и сакаме да направиме распоред така што сите барања ќе бидат задоволени со што е можно помалку ресурси

Очигледно дека ќе ни требаат најмалку ресурси колку што е длабочината на множеството барања

Page 24: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали Длабочина на множество на интервали

е максималниот број на интервали кој се случуваат во дадено време

Клучно забелешка: Бројот на потребни предавални ≥ длабочината

Page 25: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали

Дали секогаш постои распоред каде бројот на предавални е еднаков на длабочината?

Page 26: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали – алчен алгоритамSort requests in increasing order of start times (s1,f1),…,(sn,fn)

For i=1 to nj←1While (request i not scheduled)

lastj ← finish time of the last request

currently scheduled on resource jif si≥lastj then schedule request i on

resource jj←j+1

End While

End For

Page 27: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали – алчен алгоритам Никогаш нема да бидат распоредени

две незавршени предавања во иста предавална

Теорема: Алчниот алгоритам е оптимален

Page 28: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали – алчен алгоритам Доказ

Нека d = број на предавални кои ги алоцира алчниот алгоритам

Предавалната d е отворена затоа што во неа треба да се распореди предавање, да речеме j, кое не е компатибилно со ниту една од останатите d-1 предавални

Бидејќи ги сортиравме по време на започнување, сите некомпатибилни предавални се зафатени од предавања кои започнуваат порано од sj

Значи имаме d предавања кои се прекопуваат во исто време со sj

Клучна забелешка ⇒ сите предавања корисат ≥ d предавални

Page 29: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали – алчен алгоритамSort requests in increasing order of start times (s1,f1),…,(sn,fn) О(n log n)

For i=1 to nj←1While (request i not scheduled)

lastj ← finish time of the last request

currently scheduled on resource jif si≥lastj then schedule request i on

resource jj←j+1

End While

End For поспоро од O (n * d), што може да биде Ω(n2)

Page 30: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Поделба на интервали – алчен алгоритамSort requests in increasing order of start times (s1,f1),…,(sn,fn) О(n log n)

d ← 1Schedule request 1 on resource 1last1 ← f1Insert 1 into priority queue Q with key = last1For i=2 to n

j ← findmin(Q)if si ≥ lastj then

schedule request i on resource jlastj ← fiIncreasekey(j,Q) to lastj

else

d ← d+1schedule request i on resource dlastd ← fiInsert d into priority queue Q with key = lastd

End For О(n log n)

Page 31: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Единствен ресурс како кај распределба

на интервали, но наместо почетно и крајно време секое од барањата i имаВреме на траење ti кое мора да биде

распоредено во непрекинат блокВреме на завршување (deadline) di до кое

барањето би требало да биде завршеноСевкупно време на почеток s

Page 32: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Барањата се распоредени од алгоритамот во

временски интервали [si, fi] така што ti=fi-si

Доцнењето во распоредот на барањето i eАко di < fi тогаш барањето i доцни Li=fi-di, во

спротивно Li=0 Максималното доцнење е L=maxiLi

Целта е да се најде распоред за сите барања (вредности за si и fi за секое барање i) така што ќе се минимизира вкупното доцнење L

Page 33: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример

Page 34: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Алчен пристап – сортирај ги барањата

во некаков редоследНајкратките прво – Сортирај ги барањата

во растечки редослед според времето на процесирање (извршување) tj

Најраниот рок (deadline) – Сортирај ги барањата во растечки редослед според посакуваното време на завршување dj

Најмал простор за работа – Сортирај ги барањата во растечки редослед според dj -tj

Page 35: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Најкратките прво – најкратко време за

работаКонтра пример

Најмал простор за работаКонтра пример

Page 36: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Алчен алгоритам – Најраниот рок

(deadline) првоПодреди ги барањата во растечки

редослед според нивниот рокРаспореди го барањето со најраниот рок

веднаш штом ресурсот ти стане достапен

Page 37: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Алчен алгоритам – Најраниот deadline

првоSort deadlines in increasing order

(d1 ≤ d2 ≤ … ≤ dn)f ← sfor i ← 1 to n to

si ← ffi ← si+tif ← fi

end for

Page 38: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба да се намали доцнење Доказ на алчниот алгоритам Ќе докажеме дека ако постои друг

распоред O (оптимален распоред)тогаш можеме постепено да го менуваме O така штоВо секој чекор максималното доцнење во

O нема да се влошиВсушност ќе има истo чинење со A

Page 39: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример Дали постои оптимален распоред без

време на чекање

Алчниот распоред нема време на чекање

Page 40: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алчен алгоритам Барање 1: Алгоритамот продуцира распоред

без инверзии и без време во мирување Барање 2: Сите распореди без инверзии и

без време на мирување имаат исто доцнење Барање 3: Постои оптимален распоред без

време на мирување Барање 4: Постои оптимален распоред без

инверзии и без време на мирување Барање 5: Алчниот алгоритам продуцира

оптимален распоред

Page 41: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алчен алгоритам Брање 4: Постои оптимален распоред без инверзии и без време

на мирување Пристап: Започни со оптимален распоред O и искористи

аргумент за да го претвориш О во распоред што го задоволува барањето 4 и нема поголемо доцнење од О. 1. Ако O има инверзија, тогаш постои пар од барања i и j така што j

е распореден веднаш после i и d(j) < d(i). 2. Нека i и j се последователни инвертирани барања во О. По

промената на местата на i и j, ние добиваме распоред O’ со една инверзија помалку

3. Максималното доцнење на O’ не е поголемо од максималното доцнење на О

Доволно е да покажеме дека по C(n, 2) размени, имаме распоред без инверзии чие што доцнење не е поголемо од она на О

Page 42: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Намалување на доцнење: инверзии Инверзија на распоредот S е парот од

барања i и j така што di < dj, но ј е распореден пред i

Заклучок: Алчниот распоред нема инверзии

Ако распоред (без време на чекање) има инверзија, тој има еден пар со инверзни барања распоредени последователно

Page 43: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Намалување на доцнење: инверзии

Менувањето на две соседни инверзни барања го намалува бројот на инверзии за еден и не го зголемува максималното доцнење

Page 44: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Намалување на доцнење: инверзии Ако dj > di но j е распореден во O веднаш

пред i тогаш преместувањето на барањата i иj за да се добие распоред O’ не го зголемува максималното доцнење Доцнењето Li’ ≤ Li се додека i е распореден порано во O’ од

O Барањата i и j заедно го зафаќаат истото време и во двата

распореди Сите останати барања k≠i,j имаат Lk’=Lk

fj’=fi според тоа Lj’= f’j-dj =fi-dj< fj-dj=Lj

Максималното доцнење не се зголемува

Page 45: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Оптимален распоред и инверзии Предпоставка: Постои оптимален

распоред без време на чекање и без инверзии

Доказ:Од претходно, постои оптимален распоред

за О без време на чекањеАко О има инверзија тогаш има

последователен пар од барања во неговиот распоред што има инверзија и може да биде резменет без зголемување на доцнењето

Page 46: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Оптимален распоред и инверзии Евентуално овие промени (менувања)

можат да продуцираат оптимален распоред без инверзииСекоја размена го намалува бројот на

инверзии за еденИма најмногу n(n-1)/2 инверзии

Page 47: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Време на чекање и инверзии Претпоставка: Сите распореди без инверзии и без

време на чекање имаат минимално доцнење Доказ:

Распоредите може да се разликуваат само во начинот на кој ги подредуваат барањата со исти рокови (deadlines)

Да претпоставиме дека сите времиња имаат ист рок Максималното доцнење на барањата е базирано само на

времето на завршување на последното барање, но множеството од барања завзема исто време во двата распореди Според тоа последното барање завршува во исто време во

било кој таков распоред

Page 48: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Оптималност на алчниот алгоритам Знаеме дека:

Има оптимален распоред без време на чекање и инверзии

Сите распореди без време на чекање и без инверзии имаат исто максимално време на доцнење

Алгоритамот со најпрво барањата со најран рок (deadline) продуцира распоред без чекање и инверзии

Според тоаОвој алчен алгоритам продуцира оптимален

распоред

Page 49: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на задачи Распределба на временски задачи со пожелно време

за завршување (рок, deadline) и казни на една машина

Дадено е: S = {1,2,3, …, n}, множество од n задачи {d1, d2, d3, …, dn}, множество од n цели броеви кои го

претставуваат пожелното време на завршување (роковите), така што 1<=di<=n и задачата i би требало да заврши до di.

{w1, w2, w3, …, wn}, множество на ненегативни тежини или казни така што казната wi е пресметува само ако задачата не се заврши до di, ако задачата се заврши пред di нема казна.

Проблем: Најди распоред за S така да се минимизира вкупната казна за промашени рокови.

Page 50: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на задачи За една задача велиме дека доцни ако заврши по

нејзиниот рок, во спротивно таа завршила порано (или точно на време)

Забелешка 1: Секој произволен распоред може да биде направен во форма најраните-први во кој раните задачи им претходат на подоцнежните. Ако некоја рана задача E се наоѓа по некоја доцна задачаL, тогаш можеме да ги смениме L и E без да влијаеме на тоа да E биде рано, а L доцна

Забелешка 2: Според забелешка 1 секој распоред може да биде направен во канонична форма во која сите рани задачи ќе им претходат на доцните задачи и раните задачи се во неопаѓаки редослед според нивните рокови.

Page 51: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на задачи Ова може да биде направено со поставување

на распоредот во форма раните задачи први. Потоа, се додека има задачи i и j кои завршуваат во време k и k+1 така што dj < di, можеме да им ги промениме местата на i и j без да влијаеме на ниту една од нив.

Ова е можно затоа што задачата ј е навремена пред промената k+1 < dj.

Од dj < di => k+1 < di од таму задачата i е сеуште на време по промената

Page 52: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам Сега наоѓањето на оптимален распоред се сведува на наоѓање

на множество од задачи А така што тие ќе бидат навремени во оптималниот распоред. Откако еднаш ќе се пресмета А можеме да го направиме распоредот со подредување на елементите од А во неопаѓачки редослед според рокот, a потоа подредување на задачите што доцнат во било кој редослед.

Множеството на задачи А е независно ако постои распоред на неговите задачи така што нема задачи кои што доцнат. Јасно е дека множеството од навремени задачи формира независно множество на задачи.

Нека I е множество од сите независни множества на задачи.

Page 53: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам За t=1, 2,…, n нека Nt(A) го претстаува

бројот на задачи во А кои имаат рокови ≤ t.

Лема: За секое множество на задачи А следниве својства се еквивалентни:1. Множеството А е независно2. За t=1, 2,…, n имаме дека Nt(A) < t3. Ако задачите во А се распоредени во

неопаѓачки редослед според роковите, тогаш нема задача што доцни

Page 54: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алгоритам Користејќи го својството 2 можеме

лесно да провериме дали А е независно Минимизирање на сумата на казните за

задачите кои доцнат = максимизирање на сумата на задачите кои се навремени

Ваквиот алгоритам го пресметува оптималното множество А со максимална сума на казни

Page 55: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Алчен алгоритамAlgorithm RT-Schedule (S, I, w)

A <- 0

Sort S into nonincreasing order by weight w

for each x ϵ S, taken in nonincreasing order by weight wx

do if A U {x} ϵ I

then A <- A U {x}

return A

Page 56: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

CDP

ECE 291 -- Spring 2000

Example:

Задача 1 2 3 4 5 6 7

di 4 2 4 3 1 4 6

wi 70 60 50 40 30 20 10

- Алгоритамот ги селектира задачите 1, 2, 3 и 4- Ги одбива задачите 5 и 6- Ја селектира задачата 7

Конечниот оптимален распоред е: <2, 4, 1, 3, 7, 5, 6>

Page 57: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа За дадени студенти (N) и нивното

знаење за во секоја категорија (M) да се одреди екипа од К студенти која би се пратила на натпревар така да знаењето им биде најголемо

Page 58: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа (пример) N = 3 M = 2 K = 2,Индекс на студент (знаење), ред =

категорија2 (3.0) 1 (0.2) 3 (0.1)3 (1.0) 2 (0.5) 1 (0.2)

Page 59: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа Секој студент може да учествува во

само една категорија, но повеќе студенти може да учествуваат во иста категорија

Ако еден студент може да учествува во сите категории, најдобро е да го земеме во категоријата во која има најмногу знаење

Page 60: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа Ако еден студент е избран во една

категорија, тоа не ги ограничува останатите студенти да бидат избрани во истата категорија

Од тука следи дека најдобро би било секој студент да биде избран во категоријата во која е најдобар

Page 61: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа (решение) За секој студент знаеме во која

категорија е најдобар Го земаме во таа категорија Си сортираме сите студенти Ги бираме k-те најдобри Сложеност O(N*M + N*logN)

Page 62: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа (решение) Бидејќи знаеме дека се сортирани по

знаење во секоја категорија, чувај покажувач кон најдобриот во таа категорија

Помини низ сите категории, избери го најдобриот студент

Итерирај ја повторно првата колона Сложеност O(N*M)

Page 63: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа (пример) N = 4 M = 4 K = 34 (5.0) 2 (4.0) 3 (2.0) 1 (1.0)2 (2.0) 3 (1.0) 1 (0.5) 4 (0.3)4 (6.0) 3 (5.0) 2 (2.0) 1 (0.0)1 (4.0) 2 (3.0) 4 (0.6) 3 (0.3)

Page 64: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Екипа#include <cstdio>#include <algorithm>#include <iostream>#include <cassert>#define MAXN 101using namespace std;double best[MAXN];int main() {

int n, m, k;scanf("%d%d%d", &n, &m, &k);for(int i = 0; i < m; ++i) {

for(int j = 0; j < n; ++j) {int s;double o;scanf("%d%lf", &s, &o);best[s-1] = max(best[s-1], o);

}}sort(best, best+n, greater<double>());double sol = 0.0;for(int i = 0; i < k; ++i)

sol += best[i];printf("%.1lf\n", sol);return 0;

}

Page 65: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на нафта Во M погони на фабрика треба да се

распределат N тони на нафта за неопходно производство. Ако на i-тиот погон му се доделат j тони нафта, тој погон остварува добивка од A(i,j) денари. Во секоја редица на матрицата А вредностите се во растечка низа (добивката расте со зголемување на количината на доделената нафта). Да се изврши распределба на нафтата така што да се оствари максимална вкупна добивка.

Page 66: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример М=2, N=4

A[1]={1, 6, 7, 8}A[2]={2, 5, 6, 7}

Алчно4l во 1 = заработка 83l во 1 и 1l во 2 = заработка 92l во 2 и 2l во 2 = заработка 11

Page 67: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пример М=2, N=3

A[1]={1, 2, 3}A[2]={1, 5, 7}

Алчно по просекA[1]={1, 1, 1}A[2]={1, 2.5, 2.3}2l во 2 и 1l во 1 = заработка 63l во 2 = заработка 7

Page 68: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на нафта Ако во оптималната распределба

последниот погон има k, тогаш останатите N-k тони мора да бидат оптимално распределени во првите М-1 погони

B(X,Y) максималната вкупна добивка за првите X погони и Y

Page 69: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на нафта Ако имаме пресметани B(P,Q) за сите

P<X, Q=1,N, за наоѓање на B(X,Y)доволно е да се испроба доделувањето на погонот со број X на секоја можна количина на нафта (од 0 до Y тони), а останатата нафта оптимално да се распредели на првите X-1 погони

Page 70: 2. Algoritmi So Raspored

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Распределба на нафтаB(1,Y) = A(1,Y)B(X,0) = 0B(X,Y) = {B(X-1,Y-k) + A(X,k)}