Title: Approaches to Problem Solving
1Approaches to Problem Solving
- greedy algorithms
- dynamic programming
- backtracking
- divide-and-conquer
2Interval Scheduling
Input Output Objective
a set of time-intervals a subset of
non-overlapping intervals maximize of selected
intervals
3Interval Scheduling
Input Output Objective
a set of time-intervals a subset of
non-overlapping intervals maximize of selected
intervals
Idea 1 Select interval that starts earliest,
remove overlapping intervals and recurse.
4Interval Scheduling
Input Output Objective
a set of time-intervals a subset of
non-overlapping intervals maximize of selected
intervals
Idea 2 Select the shortest interval, remove
overlapping intervals and recurse.
5Interval Scheduling
Input Output Objective
a set of time-intervals a subset of
non-overlapping intervals maximize of selected
intervals
Idea 3 Select the interval with the fewest
conflicts, remove overlapping intervals and
recurse.
6Interval Scheduling
Input Output Objective
a set of time-intervals a subset of
non-overlapping intervals maximize of selected
intervals
Idea 4 Select the earliest finishing interval,
remove overlapping intervals and recurse.
7Interval Scheduling
- INTERVAL-SCHEDULING( (s0,f0), , (sn-1,fn-1) )
- Remain 0,,n-1
- Selected
- while ( Remain gt 0 )
- k 2 Remain is such that fk mini2Remain fi
- Selected Selected k
- Remain Remain k
- for every i in Remain
- if (si lt fk) then Remain Remain i
-
-
- return Selected
Idea 4 Select the earliest finishing interval,
remove overlapping intervals and recurse.
8Interval Scheduling
- INTERVAL-SCHEDULING( (s0,f0), , (sn-1,fn-1) )
- Remain 0,,n-1
- Selected
- while ( Remain gt 0 )
- k 2 Remain is such that fk mini2Remain fi
- Selected Selected k
- Remain Remain k
- for every i in Remain
- if (si lt fk) then Remain Remain i
-
-
- return Selected
Running time
9Interval Scheduling
- INTERVAL-SCHEDULING( (s0,f0), , (sn-1,fn-1) )
- Remain 0,,n-1
- Selected
- while ( Remain gt 0 )
- k 2 Remain is such that fk mini2Remain fi
- Selected Selected k
- Remain Remain k
- for every i in Remain
- if (si lt fk) then Remain Remain i
-
-
- return Selected
Thm Algorithm works.
10Interval Scheduling
Thm Algorithm works.
Which type of algorithm did we use ?
11Schedule All Intervals
Input Output Objective
a set of time-intervals a partition of the
intervals, each part of the partition consists of
non-overlapping intervals minimize the number of
parts in the partition
12Schedule All Intervals
Input Output Objective
a set of time-intervals a partition of the
intervals, each part of the partition consists of
non-overlapping intervals minimize the number of
parts in the partition
max (over time t) number of intervals that are
active at time t
Def depth
13Schedule All Intervals
max (over time t) number of intervals that are
active at time t
Def depth
Observation 1 Need at least depth parts (labels).
- SCHEDULE-ALL_INTERVALS ( (s0,f0), , (sn-1,fn-1)
) - Sort intervals by their starting time
- for j0 to n-1 do
- Consider 1,,depth
- for every iltj that overlaps with j do
- Consider Consider Labeli
- if Consider gt 0 then
- Labelj anything from Consider
- else
- Labelj nothing
- return Label
14Schedule All Intervals
Thm Every interval gets a real label.
Corollary Algo returns an optimal solution (i.e.
it works!).
Running time
- SCHEDULE-ALL_INTERVALS ( (s0,f0), , (sn-1,fn-1)
) - Sort intervals by their starting time
- for j0 to n-1 do
- Consider 1,,depth
- for every iltj that overlaps with j do
- Consider Consider Labeli
- if Consider gt 0 then
- Labelj anything from Consider
- else
- Labelj nothing
- return Label
15Weighted Interval Scheduling
Input Output Objective
a set of time-intervals, each interval has a
cost a subset of non-overlapping
intervals maximize the sum of the costs in the
subset
6
3
4
2
10
5
1
16Weighted Interval Scheduling
Input Output Objective
a set of time-intervals, each interval has a
cost a subset of non-overlapping
intervals maximize the sum of the costs in the
subset
- WEIGHTED-SCHED-ATTEMPT((s0,f0,c0),,(sn-1,fn-1,cn-
1)) - sort intervals by their finishing time
- return WEIGHTED-SCHEDULING-RECURSIVE (n-1)
- WEIGHTED-SCHEDULING-RECURSIVE (j)
- if (jlt0) then RETURN 0
- kj
- while (interval k and j overlap) do k--
- return
- max(cj WEIGHTED-SCHEDULING-RECURSIVE(k),
- WEIGHTED-SCHEDULING-RECURSIVE(j-1))
17Weighted Interval Scheduling
Does the algorithm below work ?
- WEIGHTED-SCHED-ATTEMPT((s0,f0,c0),,(sn-1,fn-1,cn-
1)) - sort intervals by their finishing time
- return WEIGHTED-SCHEDULING-RECURSIVE (n-1)
- WEIGHTED-SCHEDULING-RECURSIVE (j)
- if (jlt0) then RETURN 0
- kj
- while (interval k and j overlap) do k--
- return
- max(cj WEIGHTED-SCHEDULING-RECURSIVE(k),
- WEIGHTED-SCHEDULING-RECURSIVE(j-1))
18Weighted Interval Scheduling
Dynamic programming ! I.e. memorize the solution
for j
- WEIGHTED-SCHED-ATTEMPT((s0,f0,c0),,(sn-1,fn-1,cn-
1)) - sort intervals by their finishing time
- return WEIGHTED-SCHEDULING-RECURSIVE (n-1)
- WEIGHTED-SCHEDULING-RECURSIVE (j)
- if (jlt0) then RETURN 0
- kj
- while (interval k and j overlap) do k--
- return
- max(cj WEIGHTED-SCHEDULING-RECURSIVE(k),
- WEIGHTED-SCHEDULING-RECURSIVE(j-1))
19Weighted Interval Scheduling
Heart of the solution
S j max cost of a set of non-overlapping
intervals selected from the first j
intervals
Another part of the heart how to compute Sj ?
Finally, what do we return ?
20Weighted Interval Scheduling
Heart of the solution
S j max cost of a set of non-overlapping
intervals selected from the first j
intervals
- WEIGHTED-SCHED ((s0,f0,c0), , (sn-1,fn-1,cn-1))
- Sort intervals by their finishing time
- Define S-1 0
- for j0 to n-1 do
- k j
- while (intervals k and j overlap) do k--
- Sj max( Sj-1, cj Sk )
- return Sn-1
21Weighted Interval Scheduling
Reconstructing the solution
- WEIGHTED-SCHED ((s0,f0,c0), , (sn-1,fn-1,cn-1))
- Sort intervals by their finishing time
- Define S-1 0
- for j0 to n-1 do
- k j
- while (intervals k and j overlap) do k--
- Sj max( Sj-1, cj Sk )
-
-
-
-
- RETURN Sn-1
22Longest Increasing Subsequence
Input Output Objective
a sequence of numbers an increasing
subsequence maximize length of the subsequence
Example
2 3 1 7 4 6 9 5
23Longest Increasing Subsequence
Input Output Objective
a sequence of numbers an increasing
subsequence maximize length of the subsequence
Heart of the solution
24Longest Increasing Subsequence
Input Output Objective
a sequence of numbers an increasing
subsequence maximize length of the subsequence
Heart of the solution
Sj
the maximum length of an increasing subsequence
of the first j numbers ending with the j-th number
25Longest Increasing Subsequence
Input Output Objective
a sequence of numbers a1, a2, , an an increasing
subsequence maximize length of the subsequence
Heart of the solution
Sj
the maximum length of an increasing subsequence
of the first j numbers ending with the j-th number
Sj 1 maximum Sk where k lt j and ak lt aj
What to return ?
26Longest Increasing Subsequence
- LONGEST-INCR-SUBSEQ (a0,,an-1)
- for j0 to n-1 do
- Sj 1
- for k0 to j-1 do
- if akltaj and SjltSk1 then
- Sj Sk1
- return maxj Sj