Instructor Neelima Gupta Ngupta@cs - Du.ac - in
Instructor Neelima Gupta Ngupta@cs - Du.ac - in
Neelima Gupta
ngupta@cs.du.ac.in
Instructor: Ms. Neelima Gupta
Interval/Job Scheduling –a
greedy approach
Weighted Interval Scheduling –
•Each jobi has (si , fi , pi)
starting time si ,
finishing time fi, and
profit pi
• Aim: Find an optimal schedule of job that makes
the maximum profit.
• Greedy approach : choose the job which finishes
first…..does not work.
P(1)=10
P(2)=3
P(3)=4
P(4)=20
P(5)=2
0 1 2 3 4 5 6 7 8 9 Time
P(1)=10
P(2)=3
P(4)=20
P(5)=2
0 1 2 3 4 5 6 7 8 9 Time
P(2)=3
Optimal
schedule
P(4)=20
Schedule
chosen by
P(5)=2 greedy app
0 1 2 3 4 5 6 7 8 9 Time
Greedy approach takes job 2, 3 and 5 as best schedule and makes profit of
7. While optimal schedule is job 1 and job4 making profit of 30 (10+20).
Hence greedy will not work
Thanks to Neha (16)
DP Solution for WIS
Let m[j]= optimal schedule solution from the first jth
jobs, (jobs are sorted in the increasing order of their
finishing times)
Thanks to :
Neha Mishra (roll no:18)
DP Solution for WIS
Either j is in the optimal solution or it is not.
Thus,
m[j]= max(pj + m[p(j)], m[j-1])
Recursive Paradigm
Write a recursive function to compute m[n]…afterall
we are only interested in that.
2 V3=4
3
V4=7
4
V5=2
5
V6=1
6
3
V4=7
4
V5=2
5
V6=1
6
3
V4=7
4
V5=2
5
V6=1
6
3 P[4]=
V4=7
0
4
V5=2
5
V6=1
6
3 P[4]=
V4=7
0
4
V5=2 P[5]=3
5
V6=1
6
3 P[4]=
V4=7
0
4
V5=2 P[5]=3
5
V6=1
P[6]=3
6
m 0 1 2 3 4
5 6
0
m 0 1 2 3 4
5 6
Max{0,0+2}
0 2
m 0 1 2 3 4
5 6
Max{0,0+2}
Max{2,0+4
}
0 2 4
m 0 1 2 3 4
5 6
Max{0,0+2}
Max{2,0+4
}
0 2 4 6
m 0 1 2 3 4
5 6
Max{4,2+4}
Thanks to : Nikita
) Khanna(19)
m[j] = max{m[j-1], m[p[j] ] + pj}
Max{0,0+2}
Max{2,0+4 Max{6,0+7}
}
0 2 4 6 7
m 0 1 2 3 4
5 6
Max{4,2+4}
Max{0,0+2}
Max{2,0+4 Max{6,0+7}
}
0 2 4 6 7 8
m 0 1 2 3 4
5 6
Max{7,6+2}
Max{4,2+4}
Max{0,0+2} Max{8,6+1}
Max{6,0+7}
Max{2,0+4
}
0 2 4 6 7 8 8
m 0 1 2 3 4
5 6
Max{7,6+2}
Max{4,2+4}
Aim: Pick items with maximum total value but with weight
at most W. You may choose fractions of items.
GREEDY APPROACH
Item 2 item 3
Item 1
30
20
10
● vi = 60 vi = 100 vi = 120
Thanks to:
Neha Katyal
Example
knapsack capacity 50
Item 2 item 3
30
● 20
●
10 60
vi = 100 vi = 120
vi/ wi = 5 vi/ wi = 4
Thanks to:
Neha
Katyal
Example
knapsack capacity 50
item 3
20
100
30
● +
●
10 60
vi = 120
vi/ wi = 4
Thanks to:
Neha Katyal
Example
knapsack capacity 50
$80
20/
30
+
20 100
10 60
= 240
Thanks to:
Neha Katyal
0-1 Kanpsack
example to show that the above greedy approach will not
work,
So, DP
GREEDY APPROACH DOESN’T WORK
FOR 0-1 KNAPSACK
Counter Example:
knapsack
Item 2 item 3
Item 1
20 30
10
● vi = $60 vi = $100 vi = $120
Thanks to:
Neha Katyal
Example
knapsack
Item 2 item 3
30
● 20
●
10 $60
vi = $100 vi = $120
vi/ wi = 5 vi/ wi = 4
Thanks to:
Neha Katyal
Example
knapsack
item 3
20
$100
30
● +
●
10 $60
vi = $120 = $160
vi/ wi = 4
suboptimal
Thanks to:
Neha Katyal
Fractional Knapsack –a greedy
approach
DP Solution for 0-1KS
Let m[I,w] be the optimal value obtained when
considering objects upto I and filling a knapsack of
capacity w
m[0,w] = 0
m[i,0] = 0
m[i,w] = m[i-1,w] if wi > w
m[i,w] = max{m[i-1, w-wi] + vi , m[i-1, w]} if wi <= w
Example
n=4
W=5
Elements (weight, value):
(2,3), (3,4), (4,5), (5,6)
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0
1
0
2
0
3
0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0
1
0
2
0
3
0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0
1
0 0
2
0
3
0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0
1
0 0
2
0 0
3
0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0
1
0 0
2
0 0
3
0 0
4
0 0 3
1
0 0
2
0 0
3
0 0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3
1
0 0 3
2
0 0
3
0 0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3
1
0 0 3
2
0 0 3
3
0 0
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3
1
0 0 3
2
0 0 3
3
0 0 3
4
0 0 3 3
1
0 0 3
2
0 0 3
3
0 0 3
4
0 0 3 3
1
0 0 3 4
2
0 0 3
3
0 0 3
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3 3
1
0 0 3 4
2
0 0 3 4
3
0 0 3
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3 3
1
0 0 3 4
2
0 0 3 4
3
0 0 3 4
4
0 0 3 3 3
1
0 0 3 4
2
0 0 3 4
3
0 0 3 4
4
0 0 3 3 3
1
0 0 3 4 4
2
0 0 3 4
3
0 0 3 4
4
0 0 3 3 3
1
0 0 3 4 4
2
0 0 3 4 5
3
0 0 3 4
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3 3 3
1
0 0 3 4 4
2
0 0 3 4 5
3
0 0 3 4 5
4
0 0 3 3 3 3
1
0 0 3 4 4
2
0 0 3 4 5
3
0 0 3 4 5
4
0 0 3 3 3 3
1
0 0 3 4 4 7
2
0 0 3 4 5
3
0 0 3 4 5
4
0 0 3 3 3 3
1
0 0 3 4 4 7
2
0 0 3 4 5 7
3
0 0 3 4 5
4
0 0 3 3 3 3
1
0 0 3 4 4 7
2
0 0 3 4 5 7
3
0 0 3 4 5 7
4
W 0 1 2 3 4 5
i
0 0 0 0 0 0
0
0 0 3 3 3 3
1
0 0 3 4 4 7
2
0 0 3 4 5 7
3
0 0 3 4 5 7
4