Greedy Methods and Backtracking Dr. Marina Gavrilova Computer Science University of Calgary Canada. CPSC 319. Outline. Greedy Strategy Backtracking Technique Dynamic Programming. Goal.
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Greedy Methods and Backtracking
Dr. Marina Gavrilova
Computer Science
University of Calgary
Canada
CPSC 319
Dynamic programming
Greedy methods
Greedy algorithm always makes the choice that is the locally optimal (best) at the moment
It can reduce complex problem to linearly solvable time, and can be much easier to code
Greedy methods
Greedy methods
Problem: Stampede midway problem
» Buy a wristband that lets you onto any ride
» Lots of rides, each starting and ending at different times
» Your goal: ride as many rides as possible
• Alternative goal that we don’t solve here: maximize
time spent on rides
Greedy methods
Let A be an optimal solution of S and let k be the
minimum activity in A (i.e., the one with the
earliest finish time). Then A - {k} is an optimal
solution to S’ = {i ∈ S: si ≥ fk}
In words: once activity #1 is selected, the problem
reduces to finding an optimal solution for activity selection over activities in S compatible with #1
Greedy methods
The algorithm is following:
» Sort the activities by finish time
» Schedule the first activity
» Then schedule the next activity in sorted list which
starts after previous activity finishes
» Repeat until no more activities
Idea:
Always pick the shortest ride available at the time
Greedy-choice Property.
» A globally optimal solution can be arrived at by
making a locally optimal (greedy) choice.
Backtracking
Backtracking
are examples of backtracking method
Backtracking
Backtracking
Job scheduling problem
Dynamic programming
Dynamic programming
Dynamic programming
Dynamic programming
Dynamic programming
Dynamic programming
We determine the length of Longest Common Substring and at the same time record the substring as well. A has length m, B has lengths n
Define Ai, Bj to be the prefixes of A and B of length i and j respectively
Define L[i,j] to be the length of LCS of Ai and Aj
Then the length of LCS of A and B will be L[n,m]
We start with i = j = 0 (empty substrings of A and B)
LCS of empty string and any other string is empty, so for every i and j: c[0, j] = L[i,0] = 0
First case: A[i]=B[j]: one more symbol in strings A and B matches, so the length of LCS Ai and Aj equals to the length of LCS L [AXi-1, Bi-1]+1
Second case: As symbols don’t match, solution is not improved, and the length of L(Ai , Bj) is the same as before (i.e. maximum of L(Ai, Bj-1) and L(Ai-1,Bj))
Dynamic programming
in O(m*n) since each c[i,j] is calculated in
constant time, and there are m*n
elements in the array
Knapsack problem
Given some items, pack the knapsack to get the maximum total value. Each item has some size and some value. Total size of the knapsack is is no more than some constant C.
We must consider sizes of items as well as their value.
Item# Size Value
1 2 5
2 3 7
3 5 6
Knapsack problem
Given a knapsack with maximum capacity C, and
a set Uconsisting of n items {U1,U2,Un}
Each item j has some size sjand value vj
Problem: How to pack the knapsack to achieve
maximum total value of packed items?
Knapsack problem
There are two versions of the problem:
(1) “0-1 knapsack problem” and
(2) “Fractional knapsack problem”
(1) Items are single; you either take an item
or not. Solved with dynamic programming
(2) Items can be taken a number of times. Solved with a greedy algorithm
Knapsack problem
Knapsack problem
If items are labeled 1..n, then a subproblem
would be to find an optimal solution for Ui = {items labeled 1, 2, .. i}
However, the solution for U4 might not be part
of the solution for U5, so this definition of a subproblem is flawed.
Adding another parameter: j, which represents the exact size for each subset of items U, is the solution, woth the subproblem to be computed as V[i,j]
Knapsack problem
Now, the best subset of Ujthat has
total size Jis one of the two:
1) the best subset of Ui-1 that has total size s,
or
2) the best subset of Ui-1 that has total size (C-si)plus the item i
Knapsack problem
First case: si>C. Item i can’t be part of the
solution, since if it was, the total size would
be more than C, which is unacceptable
Second case: si <= C. Then the item ican be
in the solution, and we choose the case with
greater value benefit (whether it includes item i or not)
Review questions
Conclusions