What is the main idea behind the greedy algorithm approach?
A greedy algorithm makes the best choice at each step, hoping that these local best choices lead to a global best solution.
Click to reveal answer
intermediate
What does it mean for a problem to have the 'greedy choice property'?
It means that a locally optimal choice at each step leads to a globally optimal solution.
Click to reveal answer
intermediate
Why does the greedy algorithm fail in some problems?
Because some problems do not have the greedy choice property or optimal substructure, so local best choices do not guarantee a global best solution.
Click to reveal answer
beginner
Give an example of a problem where greedy algorithms work well.
The Activity Selection Problem, where choosing the earliest finishing activity leads to the maximum number of non-overlapping activities.
Click to reveal answer
intermediate
Give an example of a problem where greedy algorithms fail.
The Coin Change Problem with arbitrary coin denominations, where greedy choice does not always give the minimum number of coins.
Click to reveal answer
What property must a problem have for a greedy algorithm to guarantee an optimal solution?
ABrute force
BRandomness
CGreedy choice property
DBacktracking
✗ Incorrect
The greedy choice property ensures that making the best local choice leads to a global optimum.
Which of these problems is a classic example where greedy algorithms work perfectly?
AActivity Selection Problem
BTraveling Salesman Problem
CSubset Sum Problem
DKnapsack Problem (0/1)
✗ Incorrect
The Activity Selection Problem has the greedy choice property and optimal substructure, so greedy works well.
Why might a greedy algorithm fail on the Coin Change Problem with arbitrary coins?
ABecause it does not consider future choices
BBecause it uses recursion
CBecause it sorts coins incorrectly
DBecause it always picks the smallest coin
✗ Incorrect
Greedy picks the largest coin first without considering if smaller coins later could reduce total coins.
What is 'optimal substructure' in the context of greedy algorithms?
ASolution is always unique
BOptimal solution can be built from optimal solutions of subproblems
CSolution depends on random choices
DSolution requires brute force
✗ Incorrect
Optimal substructure means the problem can be broken into smaller problems whose optimal solutions combine to solve the bigger problem.
Which of these is NOT a reason greedy algorithms fail?
ALocal choices do not lead to global optimum
BLack of optimal substructure
CLack of greedy choice property
DProblem size is too large
✗ Incorrect
Problem size does not cause greedy failure; failure is due to problem properties, not size.
Explain in your own words why greedy algorithms work for some problems but fail for others.
Think about how making the best choice step-by-step might not always lead to the best overall solution.
You got /4 concepts.
Describe the difference between greedy algorithms and dynamic programming in terms of problem properties.
Consider how each approach builds the solution and what problem features they need.
You got /4 concepts.
Practice
(1/5)
1. What is the main reason a greedy algorithm works correctly for some problems?
easy
A. Because it sorts the input data before processing
B. Because it tries all possible solutions exhaustively
C. Because it uses recursion to explore all paths
D. Because making the best local choice leads to a globally optimal solution
Solution
Step 1: Understand greedy algorithm principle
A greedy algorithm makes the best choice at each step without reconsidering previous choices.
Step 2: Connect local choices to global optimum
For some problems, these local best choices add up to the best overall solution.
Final Answer:
Because making the best local choice leads to a globally optimal solution -> Option D
Quick Check:
Greedy = best local choice leads to global optimum [OK]
Hint: Greedy picks best now, works if global best follows [OK]
Common Mistakes:
Thinking greedy tries all solutions
Confusing greedy with recursion
Assuming sorting always means greedy
2. Which of the following is the correct syntax to pick the next item greedily from a sorted list items in Python?
easy
A. next_item = items.pop(0)
B. next_item = items[0]
C. next_item = items.pop()
D. next_item = items.remove(0)
Solution
Step 1: Understand list methods for greedy selection
To pick and remove the first item, pop(0) removes and returns it.
Step 2: Check other options
items[0] only accesses without removing; pop() removes last; remove(0) removes first occurrence of value 0, not index.
Final Answer:
next_item = items.pop(0) -> Option A
Quick Check:
pop(0) removes first item [OK]
Hint: pop(0) removes and returns first item [OK]
Common Mistakes:
Using items[0] without removing
Using pop() removes last item
Confusing remove() with pop()
3. Consider the following code that tries to select intervals greedily by earliest finish time:
intervals = [(1,4), (2,3), (3,5), (7,8)]
intervals.sort(key=lambda x: x[1])
selected = []
end = 0
for start, finish in intervals:
if start >= end:
selected.append((start, finish))
end = finish
print(selected)
What is the output?
medium
A. [(2, 3), (7, 8)]
B. [(1, 4), (7, 8)]
C. [(2, 3), (3, 5), (7, 8)]
D. [(1, 4), (3, 5), (7, 8)]
Solution
Step 1: Sort intervals by finish time
Sorted intervals: (2,3), (1,4), (3,5), (7,8)
Step 2: Select intervals greedily
Start with end=0. (2,3) start=2 >=0, select it, end=3. Next (1,4) start=1<3 skip. Next (3,5) start=3>=3 select, end=5. Next (7,8) start=7>=5 select, end=8.
Step 3: Final selected intervals
[(2,3), (3,5), (7,8)]
Final Answer:
[(2, 3), (3, 5), (7, 8)] -> Option C
Quick Check:
Greedy interval selection by finish time = [(2,3),(3,5),(7,8)] [OK]
Hint: Sort by finish time, pick intervals starting after last end [OK]
Common Mistakes:
Not sorting by finish time
Selecting overlapping intervals
Updating end incorrectly
4. The following code tries to solve the coin change problem greedily but has a bug:
coins = [25, 10, 5, 1]
amount = 30
result = []
for coin in coins:
while amount >= coin:
result.append(coin)
amount -= coin
print(result)
What is the bug in this greedy approach?
medium
A. It does not sort coins before using them
B. It fails for some coin sets where greedy is not optimal
C. It uses while instead of if
D. It does not handle zero amount correctly
Solution
Step 1: Understand greedy coin change approach
The code picks largest coin repeatedly until amount is zero.
Step 2: Identify when greedy fails
Greedy works for US coins but fails for some sets (e.g., coins=[10,6,1], amount=12 greedy picks 10+1+1=3 coins but optimal is 6+6=2 coins).
Final Answer:
It fails for some coin sets where greedy is not optimal -> Option B
Quick Check:
Greedy coin change fails on some coin sets [OK]
Hint: Greedy coin change fails if coin set is non-canonical [OK]
Common Mistakes:
Assuming greedy always gives minimum coins
Thinking sorting is missing
Confusing while and if usage
5. You want to select the minimum number of intervals to cover a timeline from 0 to 10. Intervals are: [(0,3), (2,6), (5,10), (7,10), (1,4)]. Which greedy strategy will fail to find the minimum set and why?
Options:
A) Always pick the interval with earliest start time
B) Always pick the interval with shortest length
C) Always pick the interval with earliest finish time
D) Always pick the interval covering the largest uncovered part
Choose the failing strategy and explain why.
hard
A. Always picking shortest length fails because it may need many intervals to cover timeline
B. Always picking earliest start fails because it may pick small intervals leaving gaps
C. Always picking earliest finish time works correctly here
D. Always picking largest uncovered part always finds minimum intervals
Solution
Step 1: Analyze shortest length strategy
Picking shortest intervals first may cover small parts, requiring many intervals to cover entire timeline.
Step 2: Compare with other strategies
Earliest finish time is classic greedy that works for interval covering. Largest uncovered part is a complex greedy that can work. Earliest start can fail but less obviously here.
Final Answer:
Always picking shortest length fails because it may need many intervals to cover timeline -> Option A
Quick Check:
Shortest length greedy fails for minimum interval cover [OK]
Hint: Shortest intervals first often leads to many intervals needed [OK]
Common Mistakes:
Assuming earliest start always works
Thinking largest uncovered part is always greedy
Confusing shortest length with earliest finish
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.