introduction
DESCRIPTION
Thinking about Algorithms Abstractly. Introduction. So you want to be a computer scientist? Grade School Revisited: How To Multiply Two Numbers. By Jeff Edmonds York University. Lecture 1. COSC 3101. So you want to be a computer scientist?. Is your goal to be a mundane programmer?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/1.jpg)
Introduction
By Jeff Edmonds
York University
COSC 3101LectureLecture 11
•So you want to be a computer scientist?
•Grade School Revisited: How To Multiply Two Numbers
![Page 2: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/2.jpg)
So you want to be a computer scientist?
![Page 3: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/3.jpg)
Is your goal to be a mundane programmer?
![Page 4: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/4.jpg)
Or a great leader and thinker?
![Page 5: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/5.jpg)
Original Thinking
![Page 6: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/6.jpg)
Boss assigns task:
– Given today’s prices of pork, grain, sawdust, …– Given constraints on what constitutes a hotdog.– Make the cheapest hotdog.
Everyday industry asks these questions.
![Page 7: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/7.jpg)
• Um? Tell me what to code.
With more suffocated software engineering systems,the demand for mundane programmers will diminish.
Your answer:
![Page 8: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/8.jpg)
Your answer:
• I learned this great algorithm that will work.
Soon all known algorithms will be available in libraries.
![Page 9: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/9.jpg)
Your answer:
• I can develop a new algorithm for you.
Great thinkers will always be needed.
![Page 10: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/10.jpg)
– Content: An up to date grasp of fundamental problems and solutions
– Method: Principles and techniques to solve the vast array of unfamiliar problems that arise in a rapidly changing field
The future belongs to the computer scientist who has
Rudich www.discretemath.com
![Page 11: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/11.jpg)
Course Content
• A list of algoirthms. – Learn their code.– Trace them until you are convenced that they
work.– Impliment them.
class InsertionSortAlgorithm extends SortAlgorithm {
void sort(int a[]) throws Exception {
for (int i = 1; i < a.length; i++) {
int j = i;
int B = a[i];
while ((j > 0) && (a[j-1] > B)) {
a[j] = a[j-1];
j--; }
a[j] = B;
}}
![Page 12: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/12.jpg)
Course Content• A survey of algorithmic design techniques.• Abstract thinking.• How to develop new algorithms for any
problem that may arise.
![Page 13: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/13.jpg)
Study:
• Many experienced programmers were asked to code up binary search.
![Page 14: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/14.jpg)
Study:
• Many experienced programmers were asked to code up binary search.
80% got it wrong
Good thing is was not for a nuclear power plant.
![Page 15: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/15.jpg)
What did they lack?
![Page 16: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/16.jpg)
What did they lack?
• Formal proof methods?
![Page 17: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/17.jpg)
What did they lack?
• Formal proof methods?
Yes, likely
Industry is starting to realize that formal methods
are important.
But even without formal methods …. ?
![Page 18: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/18.jpg)
What did they lack?• Fundamental understanding of the
algorithmic design techniques.
• Abstract thinking.
![Page 19: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/19.jpg)
Course Content
Notations, analogies, and abstractions
for developing,
thinking about,
and describing algorithms
so correctness is transparent
![Page 20: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/20.jpg)
A survey of fundamental ideas and algorithmic
design techniques
For example . . .
![Page 21: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/21.jpg)
Start With Some Math
Input Size
Tim
eClassifying Functions
f(i) = n(n)
Recurrence Relations
T(n) = a T(n/b) + f(n)
Adding Made Easy∑i=1 f(i).
Time Complexityt(n) = (n2)
![Page 22: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/22.jpg)
Iterative Algorithms Loop Invariants
i-1 i
ii0
T+1<preCond> codeA loop <loop-invariant> exit when <exit Cond> codeBcodeC<postCond>
9 km
5 km
Code Relay RaceOne step at a time
![Page 23: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/23.jpg)
Recursive Algorithms
?
?
![Page 24: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/24.jpg)
Graph Search Algorithms
![Page 25: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/25.jpg)
Network Flows
![Page 26: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/26.jpg)
Greedy Algorithms
![Page 27: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/27.jpg)
Dynamic Programing
![Page 28: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/28.jpg)
Reduction
=
Rudich www.discretemath.com
![Page 29: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/29.jpg)
Useful Learning Techniques
![Page 30: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/30.jpg)
Read Ahead
You are expected to read the lecture notes before the lecture.
This will facilitate more productive discussion during class.
Like in an English class
Also please proof readassignments & tests.
![Page 31: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/31.jpg)
Explaining
• We are going to test you on your ability to explain the material.
• Hence, the best way of studying is to explain the material over and over again out loud to yourself, to each other, and to your stuffed bear.
![Page 32: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/32.jpg)
Day Dream
Mathematics is not all linear thinking.
Allow the essence of the material to seep into your
subconscious
Pursue ideas that percolate up and flashes of
inspiration that appear.
While going along with your day
![Page 33: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/33.jpg)
Be Creative
•Ask questions.
• Why is it done this way and not that way?
![Page 34: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/34.jpg)
Guesses and Counter Examples
• Guess at potential algorithms for solving a problem.
• Look for input instances for which your algorithm gives the wrong answer.
• Treat it as a game between these two players.
![Page 35: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/35.jpg)
Refinement:The best solution comes from a
process of repeatedly refining and inventing alternative solutions
Rudich www.discretemath.com
![Page 36: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/36.jpg)
Grade School Revisited:How To Multiply Two
Numbers2 X 2 =
5
A Few Example A Few Example AlgorithmsAlgorithms
Rudich www.discretemath.com
![Page 37: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/37.jpg)
Slides in this next section produced by
Steven Rudich
from Carnegie Mellon University
Rudich www.discretemath.com
Individual Slides will be marked
![Page 38: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/38.jpg)
Complex Numbers•Remember how to multiply 2 complex numbers?
•(a+bi)(c+di) = [ac –bd] + [ad + bc] i
•Input: a,b,c,d Output: ac-bd, ad+bc
•If a real multiplication costs $1 and an addition cost a penny. What is the cheapest way to obtain the output from the input?
•Can you do better than $4.02?
![Page 39: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/39.jpg)
Gauss’ $3.05 Method:Input: a,b,c,d Output: ac-bd, ad+bc
• m1 = ac
• m2 = bd
• A1 = m1 – m2 = ac-bd
• m3 = (a+b)(c+d) = ac + ad + bc + bd
• A2 = m3 – m1 – m2 = ad+bc
![Page 40: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/40.jpg)
Question:•The Gauss “hack” saves one multiplication out of four. It requires 25% less work.
•Could there be a context where performing 3 multiplications for every 4 provides a more dramatic savings?
![Page 41: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/41.jpg)
Odette Bonzo
![Page 42: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/42.jpg)
How to add 2 n-bit numbers. **
**
**
**
**
**
**
**
**
**
**
+
![Page 43: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/43.jpg)
How to add 2 n-bit numbers. **
*
**
**
**
**
**
* **
**
**
**
**
+
![Page 44: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/44.jpg)
How to add 2 n-bit numbers. **
*
**
**
**
**
* **
* **
*
**
**
**
**
+
![Page 45: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/45.jpg)
How to add 2 n-bit numbers. **
*
**
**
**
* **
* **
*
* **
*
**
**
**
**
+
![Page 46: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/46.jpg)
How to add 2 n-bit numbers. **
*
**
**
* **
* **
*
* **
*
* **
*
**
**
**
**
+
![Page 47: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/47.jpg)
How to add 2 n-bit numbers. **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
***
*
+*
*
![Page 48: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/48.jpg)
Time complexity of grade school addition
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
+*
*
*
**
*
T(n) = The amount of time grade school addition uses to add two n-bit numbers
= θ(n) = linear time.
On any reasonable computer adding 3 bits can be done in constant time.
![Page 49: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/49.jpg)
# of bits in numbers
time
f = θ(n) means that f can be sandwiched between two lines
![Page 50: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/50.jpg)
Please feel free to ask questions!
Rudich www.discretemath.com
![Page 51: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/51.jpg)
Is there a faster way to add?
• QUESTION: Is there an algorithm to add two n-bit numbers whose time grows sub-linearly in n?
![Page 52: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/52.jpg)
Any algorithm for addition must read all of the input bits
– Suppose there is a mystery algorithm that does not examine each bit
– Give the algorithm a pair of numbers. There must be some unexamined bit position i in one of the numbers
– If the algorithm is not correct on the numbers, we found a bug
– If the algorithm is correct, flip the bit at position i and give the algorithm the new pair of numbers. It give the same answer as before so it must be wrong since the sum has changed
![Page 53: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/53.jpg)
So any algorithm for addition must use time at least linear in
the size of the numbers.
Grade school addition is essentially as good as it can be.
![Page 54: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/54.jpg)
How to multiply 2 n-bit numbers.
X* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
n2
![Page 55: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/55.jpg)
How to multiply 2 nHow to multiply 2 n--bit numbers.bit numbers.
X* * * * * * * * * * * * * * * *
* * * * * * * ** * * * * * * *
* * * * * * * ** * * * * * * *
* * * * * * * ** * * * * * * *
* * * * * * * ** * * * * * * *
* * * * * * * * * * * * * * * *
n2
I get it! The total time is bounded by
cn2.
![Page 56: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/56.jpg)
Grade School Addition: Linear timeGrade School Multiplication: Quadratic time
•No matter how dramatic the difference in the constants the quadratic curve will eventually dominate the linear curve
# of bits in numbers
time
![Page 57: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/57.jpg)
Neat! We have demonstrated that as things scale multiplication is a
harder problem than addition.
Mathematical confirmation of our common sense.
![Page 58: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/58.jpg)
Don’t jump to conclusions!We have argued that grade
school multiplication uses more time than grade school addition.
This is a comparison of the complexity of two algorithms.
To argue that multiplication is an inherently harder problem than addition we would have to show that no possible multiplication algorithm runs in linear time.
![Page 59: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/59.jpg)
Grade School Addition: θ(n) timeGrade School Multiplication: θ(n2) time
Is there a clever algorithm to multiply two numbers
in linear time?
![Page 60: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/60.jpg)
Despite years of research, no one knows! If you resolve this question,
York will give you a PhD!
![Page 61: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/61.jpg)
Is there a faster way to multiply two numbers
than the way you learned in grade school?
![Page 62: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/62.jpg)
Divide And Conquer(an approach to faster algorithms)
•DIVIDE my instance to the problem into smaller instances to the same problem.
•Have a friend (recursively) solve them.Do not worry about it yourself.
•GLUE the answers together so as to obtain the answer to your larger instance.
![Page 63: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/63.jpg)
Multiplication of 2 n-bit numbers• X =
• Y =
• X = a 2n/2 + b Y = c 2n/2 + d
• XY = ac 2n + (ad+bc) 2n/2 + bd
a b
c d
![Page 64: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/64.jpg)
Multiplication of 2 n-bit numbers
• X =
• Y =
• XY = ac 2n + (ad+bc) 2n/2 + bd
a b
c d
MULT(X,Y):
If |X| = |Y| = 1 then RETURN XY
Break X into a;b and Y into c;d
RETURN
MULT(a,c) 2n + (MULT(a,d) + MULT(b,c)) 2n/2 + MULT(b,d)
![Page 65: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/65.jpg)
Time required by MULT
• T(n) = time taken by MULT on two n-bit numbers
• What is T(n)? What is its growth rate? Is it θ(n2)?
![Page 66: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/66.jpg)
Recurrence Relation•T(1) = k for some constant k
•T(n) = 4 T(n/2) + k’ n + k’’ for some constants k’ and k’’
MULT(X,Y):
If |X| = |Y| = 1 then RETURN XY
Break X into a;b and Y into c;d
RETURN
MULT(a,c) 2n + (MULT(a,d) + MULT(b,c)) 2n/2 + MULT(b,d)
![Page 67: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/67.jpg)
Let’s be concrete
•T(1) = 1
•T(n) = 4 T(n/2) + n
•How do we unravel T(n) so that we can determine its growth rate?
![Page 68: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/68.jpg)
Technique 1Guess and Verify
•Recurrence Relation:
T(1) = 1 & T(n) = 4T(n/2) + n
•Guess: G(n) = 2n2 – n
•Verify: Left Hand Side Right Hand Side
T(1) = 2(1)2 – 1
T(n)
= 2n2 – n
1
4T(n/2) + n
= 4 [2(n/2)2 – (n/2)] + n
= 2n2 – n
![Page 69: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/69.jpg)
Technique 2: Decorate The Tree
• T(n) = n + 4 T(n/2)
n
T(n/2) T(n/2) T(n/2) T(n/2)
T(n) =
• T(n) = n + 4 T(n/2)
n
T(n/2) T(n/2) T(n/2) T(n/2)
T(n) =
T(1)
•T(1) = 1
1=
![Page 70: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/70.jpg)
n
T(n/2) T(n/2) T(n/2) T(n/2)
T(n) =
![Page 71: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/71.jpg)
n
T(n/2) T(n/2) T(n/2)
T(n) =
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
![Page 72: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/72.jpg)
nT(n) =
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
![Page 73: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/73.jpg)
nT(n) =
n/2 n/2 n/2n/2
11111111111111111111111111111111 . . . . . . 111111111111111111111111111111111
n/4 n/4 n/4n/4n/4n/4n/4n/4n/4n/4n/4n/4n/4n/4n/4 n/4
![Page 74: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/74.jpg)
n
n/2 + n/2 + n/2 + n/2
Level i is the sum of 4i copies of n/2i
. . . . . . . . . . . . . . . . . . . . . . . . . .
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4
0
1
2
i
log n2
![Page 75: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/75.jpg)
Level i is the sum of 4 i copies of n/ 2 i
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
. . . . . . . . . . . . . . . . . . . . . . . . . .
n/ 2 + n/ 2 + n/ 2 + n/ 2
n
n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4
0
1
2
i
lo g n2
=1n
= 4n/2
= 16n/4
= 4i n/2i
Total: θ(nlog4) = θ(n2)
= 4lognn/2logn
=nlog41
![Page 76: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/76.jpg)
Divide and Conquer MULT: θ(n2) time Grade School Multiplication: θ(n2) time
All that work for nothing!
![Page 77: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/77.jpg)
MULT revisited
• MULT calls itself 4 times. Can you see a way to reduce the number of calls?
MULT(X,Y):
If |X| = |Y| = 1 then RETURN XY
Break X into a;b and Y into c;d
RETURN
MULT(a,c) 2n + (MULT(a,d) + MULT(b,c)) 2n/2 + MULT(b,d)
![Page 78: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/78.jpg)
Gauss’ Hack:Input: a,b,c,d Output: ac, ad+bc, bd
• A1 = ac
• A3 = bd
• m3 = (a+b)(c+d) = ac + ad + bc + bd
• A2 = m3 – A1- A3 = ad + bc
![Page 79: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/79.jpg)
Gaussified MULT(Karatsuba 1962)
•T(n) = 3 T(n/2) + n
•Actually: T(n) = 2 T(n/2) + T(n/2 + 1) + kn
MULT(X,Y):
If |X| = |Y| = 1 then RETURN XY
Break X into a;b and Y into c;d
e = MULT(a,c) and f =MULT(b,d)
RETURN e2n + (MULT(a+b, c+d) – e - f) 2n/2 + f
![Page 80: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/80.jpg)
nT(n) =
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)T(n/4)
![Page 81: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/81.jpg)
n
T(n/2) T(n/2) T(n/2)
T(n) =
![Page 82: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/82.jpg)
n
T(n/2) T(n/2)
T(n) =
n/2
T(n/4)T(n/4)T(n/4)
![Page 83: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/83.jpg)
nT(n) =
n/2
T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)
n/2
T(n/4)T(n/4)T(n/4)
![Page 84: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/84.jpg)
n
n/2 + n/2 + n/2
Level i is the sum of 3i copies of n/2i
. . . . . . . . . . . . . . . . . . . . . . . . . .
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4 + n/4
0
1
2
i
log n2
![Page 85: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/85.jpg)
=1n
= 3n/2
= 9n/4
= 3i n/2i
Total: θ(nlog3) = θ(n1.58..)
Level i is the sum of 3 i copies of n/ 2 i
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
. . . . . . . . . . . . . . . . . . . . . . . . . .
n/ 2 + n/ 2 + n/ 2
n
n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4 + n/ 4
0
1
2
i
lo g n2 = 3lognn/2logn
=nlog31
![Page 86: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/86.jpg)
Dramatic improvement for large n
Not just a 25% savings!
θ(n2) vs θ(n1.58..)
![Page 87: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/87.jpg)
Multiplication Algorithms
Kindergarten ?n2n
Grade School n2
Karatsuba n1.58…
Fastest Known n logn loglogn
Homework
3*4=3+3+3+3
![Page 88: Introduction](https://reader036.vdocument.in/reader036/viewer/2022062422/568138b1550346895da070db/html5/thumbnails/88.jpg)
You’re cool! Are you free sometime this weekend?
Not interested, Bonzo. I took the initiative and asked out a guy in my
3101 class.
Studying done in groupsAssignments are done in pairs.