cs 4102: algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · looks like...
TRANSCRIPT
![Page 1: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/1.jpg)
CS 4102: AlgorithmsLecture 6: Closest Pair of Points
David WuFall 2019
![Page 2: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/2.jpg)
2
Warm Up
Given 5 points on the unit equilateral triangle, show there’s always a pair of distance ≤ "
#apart
1
1
1
![Page 3: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/3.jpg)
3
Warm Up
Given 5 points on the unit equilateral triangle, show there’s always a pair of distance ≤ "
#apart
If points 𝑝", 𝑝# in same quadrant,then 𝑑 𝑝", 𝑝# ≤ "
#
Given five points, two must share the same quadrant
Pigeonhole Principle!
1
1
1
![Page 4: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/4.jpg)
Today’s Keywords
Closest pair of points (HW2)Matrix multiplication (if we have time)
4
CLRS Readings: Chapter 4
![Page 5: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/5.jpg)
Homework
HW1 due Thursday, September 12 Saturday, September 14, 11pm• Start early!• Written (use LaTeX!) – Submit both zip and pdf!• Asymptotic notation• Recurrences• Divide and conquer
HW2 released today, due Thursday, September 19, 11pm• Programming assignment (Python or Java)• Divide and conquer (Closest pair of points)
5
![Page 6: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/6.jpg)
Recurrence Solving Techniques
6
Tree
? Guess/Check
“Cookbook”
Substitution
![Page 7: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/7.jpg)
Master Theorem
𝑇 𝑛 = 𝑎𝑇 ⁄𝑛 𝑏 + 𝑓(𝑛)𝛿 = log5 𝑎
Requirement on 𝒇 ImplicationCase 1 𝑓 𝑛 ∈ 𝑂 𝑛9:; for some constant 𝜀 > 0 𝑇 𝑛 ∈ Θ 𝑛9
Case 2 𝑓 𝑛 ∈ Θ 𝑛9 𝑇 𝑛 ∈ Θ 𝑛9 log 𝑛
Case 3
𝑓 𝑛 ∈ Ω 𝑛9A; for some constant 𝜀 > 0AND
𝑎𝑓 B5≤ 𝑐𝑓(𝑛) for constant 𝑐 < 1 and
sufficiently large 𝑛
𝑇 𝑛 ∈ Θ 𝑓 𝑛
![Page 8: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/8.jpg)
Three Cases
8
𝑇 𝑛 = 𝑓 𝑛 + 𝑎𝑓𝑛𝑏+ 𝑎#𝑓
𝑛𝑏#
+ 𝑎F𝑓𝑛𝑏F
+⋯+ 𝑎H𝑓𝑛𝑏H
Case 1:Most work happens
at the leaves
Case 2:Work happens
consistently throughout
Case 3:Most work happens
at top of tree
𝑘 = log5 𝑛
![Page 9: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/9.jpg)
Recurrence Solving Techniques
9
Tree
? Guess/Check
“Cookbook”
Substitution
![Page 10: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/10.jpg)
Substitution Method
Idea: Take a “difficult” recurrence and re-express it such that one of our other methods appliesExample:
𝑇 𝑛 = 2𝑇 𝑛 + log# 𝑛
Consider the following substitution: let 𝑛 = 2K (i.e.,𝑚 = log# 𝑛)
𝑆 𝑚 = 2𝑆𝑚2
+𝑚
𝑇 2K = 2𝑇 2K# + 𝑚 Rewrite recurrence in terms of 𝑚
Case 2 of Master Theorem⇒ 𝑆 𝑚 = Θ(𝑚 log𝑚)
Substitute back for 𝑇 and 𝑛⇒ 𝑇 𝑛 = Θ(log 𝑛 log log 𝑛)
Consider substitution 𝑆 𝑚 = 𝑇 2K
![Page 11: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/11.jpg)
Robbie’s Yard
11
![Page 12: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/12.jpg)
There Has to be an Easier Way!
12
![Page 13: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/13.jpg)
Constraints: Trees and Plants
How wide can the robot be?
Objective: find closest pair of trees
12
3
45
6
7
8
ROBO
Mulcher
3000
![Page 14: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/14.jpg)
Closest Pair of Points
14
12
3
45
6
7
8
Given: A list of points
Return: Pair of points with smallest distance apart
![Page 15: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/15.jpg)
Algorithm: Test every pair of points, return the closest
Closest Pair of Points: Naïve
15
12
3
45
6
7
8
Given: A list of points
Return: Pair of points with smallest distance apart
𝑂(𝑛#)Running Time:Goal: 𝑂 𝑛 log 𝑛
![Page 16: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/16.jpg)
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
Divide: How?At median 𝑥 coordinate
16
![Page 17: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/17.jpg)
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
Conquer:
LeftPoints RightPoints
Recursively find closest pairs from LeftPoints and RightPoints
17
Divide: At median 𝑥 coordinate
![Page 18: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/18.jpg)
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
LeftPoints RightPoints
Combine: Return smaller of left and right pairs Problem? ?
18
Conquer:
Divide: At median 𝑥 coordinate
Recursively find closest pairs from LeftPoints and RightPoints
![Page 19: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/19.jpg)
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
LeftPoints RightPoints
Combine:
?
Case 1: Closest pair is completely in LeftPoints or RightPoints
Case 2: Closest pair spans our “cut”
Need to test points across the cut
19
![Page 20: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/20.jpg)
Spanning the Cut
12
3
45
6
7
8
LeftPoints RightPoints
𝑑P
𝑑Q
2𝑑20
Case 2: Closest pair spans our “cut”
Need to test points across the cut
Compare all pairs of points within 𝑑 = min{𝑑P, 𝑑Q} of the cut
How many are there?
![Page 21: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/21.jpg)
Spanning the Cut
12
3
45
67
8
LeftPoints RightPoints
𝑑P
𝑑Q
2𝑑𝑇 𝑛 = 2𝑇
𝑛2+ Ω 𝑛# ∈ Ω 𝑛#
21
Compare all pairs of points within 𝑑 = min{𝑑P, 𝑑Q} of the cut
How many are there?
Case 2: Closest pair spans our “cut”
Need to test points across the cut
In the worst case, all of the points!
![Page 22: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/22.jpg)
Spanning the Cut
12
3
45
67
8
LeftPoints RightPoints
𝑑P
𝑑Q
2𝑑𝑇 𝑛 = 2𝑇
𝑛2+ Ω 𝑛# ∈ Ω 𝑛#
22
Compare all pairs of points within 𝑑 = min{𝑑P, 𝑑Q} of the cut
How many are there?
Case 2: Closest pair spans our “cut”
Need to test points across the cut
In the worst case, all of the points!
Do we need to test every pair of points in the boundary region?
![Page 23: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/23.jpg)
Spanning the Cut
12
3
45
67
8
LeftPoints RightPoints
𝑑P
𝑑Q
2𝑑23
Case 2: Closest pair spans our “cut”
Need to test points across the cut
Observation: We don’t need to test all pairs!
Only need to test points within distance 𝑑 of each another
![Page 24: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/24.jpg)
Reducing Search Space2 ⋅ 𝑑
𝑑2
𝑑2
Divide the boundary into squares with dimension ⁄𝑑 2
How many points can be in a square?
24
Case 2: Closest pair spans our “cut”
Need to test points across the cut
at most 1
𝑑2
![Page 25: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/25.jpg)
Reducing Search Space
Divide the boundary into squares with dimension ⁄𝑑 2
25
Case 2: Closest pair spans our “cut”
Need to test points across the cut
2 ⋅ 𝑑
71 2 3 4
5 6 7 8
9 10 11 12
13 14 15
How many squares can contain a point < 𝑑 away and with smaller 𝑦-coordinate?
at most 15
![Page 26: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/26.jpg)
Reducing Search Space
Divide the boundary into squares with dimension ⁄𝑑 2
26
Case 2: Closest pair spans our “cut”
Need to test points across the cut
2 ⋅ 𝑑
71 2 3 4
5 6 7 8
9 10 11 12
13 14 15
How many squares can contain a point < 𝑑 away and with smaller 𝒚-coordinate?
at most 15
Why only consider points with smaller 𝑦-coordinate?
![Page 27: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/27.jpg)
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
LeftPoints RightPoints
?
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Construct list of points in the boundary• Sort boundary points by 𝑦-coordinate• Compare each point in boundary to 15 points
above it and save the closest pair• Output closest pair among left, right, and
boundary points
![Page 28: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/28.jpg)
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Construct list of points in the boundary• Sort boundary points by 𝑦-coordinate• Compare each point in boundary to 15 points
above it and save the closest pair• Output closest pair among left, right, and
boundary points
Closest Pair of Points: Divide and Conquer
12
3
45
6
7
8
LeftPoints RightPoints
?
Looks like another 𝑂 𝑛 log 𝑛algorithm – combine step is still
too expensive
![Page 29: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/29.jpg)
Closest Pair of Points: Divide and Conquer
Solution: Maintain additional information in the recursion• Minimum distance among pairs of
points in the list• List of points sorted according to 𝑦-
coordinate
Sorting boundary points by 𝑦-coordinate now becomes a merge
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Construct list of points in the boundary• Sort boundary points by 𝑦-coordinate• Compare each point in boundary to 15 points
above it and save the closest pair• Output closest pair among left, right, and
boundary points
![Page 30: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/30.jpg)
Listing Points in the Boundary
12
3
45
6
7
8
30
LeftPoints:
LeftPoints RightPoints
Closest Pair: (1, 5), 𝑑",[Sorted Points: [3,7,5,1]
RightPoints:Closest Pair: (4,6), 𝑑b,cSorted Points: [8,6,4,2]
Merged Points: 8,3,7,6,4,5,1,2
Boundary Points: 8,7,6,5,2
Both of these lists can be computed by a single pass over the lists
![Page 31: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/31.jpg)
Closest Pair of Points: Divide and Conquer
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Construct list of points in the boundary• Sort boundary points by 𝑦-coordinate• Compare each point in boundary to 15 points
above it and save the closest pair• Output closest pair among left, right, and
boundary points
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Merge sorted list of points by 𝑦-coordinate
and construct list of points in the boundary (sorted by 𝑦-coordinate)
• Compare each point in boundary to 15 points above it and save the closest pair
• Output closest pair among left, right, and boundary points
![Page 32: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/32.jpg)
Closest Pair of Points: Divide and Conquer
Initialization: Sort points by 𝑥-coordinate
Divide: Partition points into two lists of points based on 𝑥-coordinate
Conquer: Recursively compute the closest pair of points in each list
Combine: • Merge sorted list of points by 𝑦-coordinate
and construct list of points in the boundary (sorted by 𝑦-coordinate)
• Compare each point in boundary to 15 points above it and save the closest pair
• Output closest pair among left, right, and boundary points
Θ 𝑛 log 𝑛
Θ 1
2𝑇(𝑛/2)
Θ 𝑛
Θ 𝑛
Θ 1
𝑇(𝑛) = 2𝑇(𝑛/2) + Θ(𝑛)
Case 2 of Master’s Theorem: 𝑇 𝑛 = Θ 𝑛 log 𝑛
What is the running time?
𝑇(𝑛)
Θ(𝑛 log 𝑛)
![Page 33: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/33.jpg)
Matrix Multiplication
33
1 2 34 5 67 8 9
×2 4 68 10 1214 16 18
=60 72 84132 162 192204 252 300
=2 + 16 + 42 4 + 20 + 48 6 + 24 + 54
⋅ ⋅ ⋅⋅ ⋅ ⋅
Run time? 𝑂(𝑛F)
𝑛
𝑛
![Page 34: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/34.jpg)
Matrix Multiplication Divide and Conquer
34
Multiply 𝑛×𝑛 matrices (𝐴 and 𝐵)
𝐴 =
𝑎" 𝑎# 𝑎F 𝑎b𝑎[ 𝑎c 𝑎j 𝑎k𝑎l 𝑎"m 𝑎"" 𝑎"#𝑎"F 𝑎"b 𝑎"[ 𝑎"c
𝐵 =
𝑏" 𝑏# 𝑏F 𝑏b𝑏[ 𝑏c 𝑏j 𝑏k𝑏l 𝑏"m 𝑏"" 𝑏"#𝑏"F 𝑏"b 𝑏"[ 𝑏"c
Divide:
![Page 35: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/35.jpg)
Matrix Multiplication Divide and Conquer
35
Multiply 𝑛×𝑛 matrices (𝐴 and 𝐵)
𝐴 =
𝑎" 𝑎# 𝑎F 𝑎b𝑎[ 𝑎c 𝑎j 𝑎k𝑎l 𝑎"m 𝑎"" 𝑎"#𝑎"F 𝑎"b 𝑎"[ 𝑎"c
𝐴"," 𝐴",#
𝐴#," 𝐴#,#
𝐴𝐵 =𝐴","𝐵"," + 𝐴",#𝐵#," 𝐴","𝐵",# + 𝐴",#𝐵#,#𝐴#,"𝐵"," + 𝐴#,#𝐵#," 𝐴#,"𝐵",# + 𝐴#,#𝐵#,#
𝐵 =
𝑏" 𝑏# 𝑏F 𝑏b𝑏[ 𝑏c 𝑏j 𝑏k𝑏l 𝑏"m 𝑏"" 𝑏"#𝑏"F 𝑏"b 𝑏"[ 𝑏"c
𝐵"," 𝐵",#
𝐵#," 𝐵#,#
Run time? 𝑇 𝑛 = 8𝑇𝑛2+ 4
𝑛2
# Cost of additions
Combine:
![Page 36: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/36.jpg)
Matrix Multiplication Divide and Conquer
36
𝑇 𝑛 = 8𝑇𝑛2+ 4
𝑛2
#
𝑇 𝑛 = 8𝑇𝑛2+ 𝑛#
𝑎 = 8, 𝑏 = 2, 𝑓 𝑛 = 𝑛#
𝑛nopq r = 𝑛nops k = 𝑛FCase 1!
𝑇 𝑛 = Θ(𝑛F)Can we do better?
![Page 37: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/37.jpg)
Matrix Multiplication D&C
37
Multiply 𝑛×𝑛 matrices (𝐴 and 𝐵)
𝐴 =
𝑎" 𝑎# 𝑎F 𝑎b𝑎[ 𝑎c 𝑎j 𝑎k𝑎l 𝑎"m 𝑎"" 𝑎"#𝑎"F 𝑎"b 𝑎"[ 𝑎"c
𝐴"," 𝐴",#
𝐴#," 𝐴#,#
𝐴𝐵 =𝐴","𝐵"," + 𝐴",#𝐵#," 𝐴","𝐵",# + 𝐴",#𝐵#,#𝐴#,"𝐵"," + 𝐴#,#𝐵#," 𝐴#,"𝐵",# + 𝐴#,#𝐵#,#
𝐵 =
𝑏" 𝑏# 𝑏F 𝑏b𝑏[ 𝑏c 𝑏j 𝑏k𝑏l 𝑏"m 𝑏"" 𝑏"#𝑏"F 𝑏"b 𝑏"[ 𝑏"c
𝐵"," 𝐵",#
𝐵#," 𝐵#,#
Idea: Use a Karatsuba-like technique on this
![Page 38: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/38.jpg)
Strassen’s Algorithm
38
Multiply 𝑛×𝑛 matrices (𝐴 and 𝐵)
𝐴 =
𝑎" 𝑎# 𝑎F 𝑎b𝑎[ 𝑎c 𝑎j 𝑎k𝑎l 𝑎"m 𝑎"" 𝑎"#𝑎"F 𝑎"b 𝑎"[ 𝑎"c
𝐴"," 𝐴",#
𝐴#," 𝐴#,#𝐵 =
𝑏" 𝑏# 𝑏F 𝑏b𝑏[ 𝑏c 𝑏j 𝑏k𝑏l 𝑏"m 𝑏"" 𝑏"#𝑏"F 𝑏"b 𝑏"[ 𝑏"c
𝐵"," 𝐵",#
𝐵#," 𝐵#,#Calculate:𝑄" = 𝐴"," + 𝐴#,# (𝐵"," + 𝐵#,#)𝑄# = 𝐴#," + 𝐴#,# 𝐵","𝑄F = 𝐴","(𝐵",# − 𝐵#,#)𝑄b = 𝐴#,#(𝐵#," − 𝐵",")
𝑄c = 𝐴#," − 𝐴"," (𝐵"," + 𝐵",#)𝑄[ = 𝐴"," + 𝐴",# 𝐵#,#
𝑄j = 𝐴",# − 𝐴#,# (𝐵#," + 𝐵#,#)
𝐴𝐵 = 𝑄" + 𝑄b − 𝑄[ + 𝑄j 𝑄F + 𝑄[𝑄# + 𝑄b 𝑄" − 𝑄# + 𝑄F + 𝑄c
Find 𝐴𝐵:
7 Multiplications 18 Additions
𝑇 𝑛 = 7𝑇𝑛2+ 18
𝑛#
4
![Page 39: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/39.jpg)
Strassen’s Algorithm
39
𝑇 𝑛 = 7𝑇𝑛2+92𝑛#
𝑎 = 7, 𝑏 = 2, 𝑓 𝑛 =92𝑛#
𝑛nopq r = 𝑛nops j ≈ 𝑛#.kmjCase 1!
𝑇 𝑛 = Θ 𝑛nops j ≈ Θ(𝑛#.kmj)
![Page 40: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/40.jpg)
40
𝑛F
𝑛nops j
![Page 41: CS 4102: Algorithms › ~jh2jf › courses › fall2019 › cs4102 › lect… · Looks like another 8(log(algorithm –combine step is still too expensive. Closest Pair of Points:](https://reader034.vdocuments.mx/reader034/viewer/2022042405/5f1f3cb8403c6f2a160f2f39/html5/thumbnails/41.jpg)
Is This the Fastest?
41
Best possible is still unknown
Trivial lower bound: Ω 𝑛#