On Time Versus Input Size
-
Upload
hilda-sawyer -
Category
Documents
-
view
28 -
download
0
description
Transcript of On Time Versus Input Size
![Page 1: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/1.jpg)
On Time Versus Input Size
Great Theoretical Ideas In Computer Science
Steven Rudich
CS 15-251 Spring 2004
Lecture 15 March 2, 2004 Carnegie Mellon University
# of bits
time
![Page 2: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/2.jpg)
How to add 2 n-bit numbers.
**
**
**
**
**
**
**
**
**
**
**
+
![Page 3: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/3.jpg)
How to add 2 n-bit numbers.
**
*
**
**
**
**
**
* **
**
**
**
**
+
![Page 4: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/4.jpg)
How to add 2 n-bit numbers.
**
*
**
**
**
**
* **
* **
*
**
**
**
**
+
![Page 5: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/5.jpg)
How to add 2 n-bit numbers.
**
*
**
**
**
* **
* **
*
* **
*
**
**
**
**
+
![Page 6: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/6.jpg)
How to add 2 n-bit numbers.
**
*
**
**
* **
* **
*
* **
*
* **
*
**
**
**
**
+
![Page 7: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/7.jpg)
How to add 2 n-bit numbers.
**
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
* **
*
***
*
+*
*
![Page 8: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/8.jpg)
Time complexity of grade school addition
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
+*
*
*
**
*
T(n) = The amount of time grade school addition uses to add two n-bit numbers
What do you mean by “time”?
![Page 9: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/9.jpg)
Roadblock ???
A given algorithm will take different amounts of time on the same inputs depending on such factors as:
– Processor speed
– Instruction set
– Disk speed
– Brand of compiler
![Page 10: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/10.jpg)
Our Goal
We want to define TIME in a sense that transcends implementation details and allows us to make assertions about grade school addition in a very general way.
![Page 11: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/11.jpg)
Hold on! You just admitted that it makes no sense to measure the time, T(n), taken by the method
of grade school addition since the time depends on the
implementation details. We will have to speak of the time taken
by a particular implementation, as opposed to the time taken by the
method in the abstract.
![Page 12: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/12.jpg)
Don’t jump to conclusions!Your objections are serious, but not insurmountable. There is a
very nice sense in which we can analyze grade school addition without ever having to worry about implementation details.
Here is how it works . . .
![Page 13: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/13.jpg)
On any reasonable computer adding 3 bits and writing down the two bit answer can be done in constant time. Pick any particular computer A and define c to be the time it takes to perform on that computer.
Total time to add two n-bit numbers using grade school
addition: cn[c time for each of n columns]
![Page 14: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/14.jpg)
Implemented on another computer B the running time will be c’n where c’ is the time it takes to perform on that computer.
Total time to add two n-bit numbers using grade school
addition: c’n[c’ time for each of n columns]
![Page 15: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/15.jpg)
The fact that we get a line is invariant under changes of implementations. Different
machines result in different slopes, but time grows linearly as input size
increases.
# of bits in numbers
time
Machine A
: cn
Machine B: c’n
![Page 16: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/16.jpg)
Thus we arrive at an implementation independent
insight: Grade School Addition is a linear time algorithm.
Determining the growth rate of the resource curve as the problem
size increases is one of the fundamental ideas of computer
science.
![Page 17: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/17.jpg)
I see! We can define away the details of the world that we do not wish to currently study, in order
to recognize the similarities between seemingly different
things..
AbstractionAbstraction: : Abstract away the inessential Abstract away the inessential
features of a problem or solutionfeatures of a problem or solution
=
![Page 18: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/18.jpg)
TIME vs INPUT SIZE
For any algorithm, define INPUT SIZE = # of bits to specify inputs,
Define TIMEn = the worst-case amount of time used on inputs of size n.
We Often Ask:
What is the GROWTH RATE of Timen ?
![Page 19: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/19.jpg)
How to multiply 2 n-bit numbers.
X* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
n2
![Page 20: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/20.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 21: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/21.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 22: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/22.jpg)
Ok, so…
How much time does it take to square the number
n using grade school multiplication?
![Page 23: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/23.jpg)
Grade School Multiplication:Quadratic time
(log n)2 time to square the number n
# of bits in numbers
time
![Page 24: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/24.jpg)
Time Versus Input Size
Input size is measured in bits, unless we say otherwise.
# of bits used to describe input
time
![Page 25: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/25.jpg)
How much time does it take?
Nursery School Addition INPUT: Two n-bit numbers, a and bOUTPUT: a + b
Start at a and add 1, b times
T(n) = ?
![Page 26: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/26.jpg)
What is T(n) ?
Nursery School Addition INPUT: Two n-bit numbers, a and bOUTPUT: a + b
Start at a and add 1, b times
If b=000.0000, then NSA takes almost no time. If b = 111111.11, then NSA takes c n2n time.
![Page 27: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/27.jpg)
What is T(n) ?
Nursery School Addition INPUT: Two n-bit numbers, a and bOUTPUT: a + b
Start at a and add 1, b times
Worst case time is c n2n Exponential!
![Page 28: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/28.jpg)
Worst-case Time T(n) for algorithm A means
that we define a measure of
input size n, and we define
T(n) = MAXall permissible inputs X of size n
running time of algorithm A on X.
![Page 29: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/29.jpg)
Worst-case Time Versus Input Size
Worst Case Time Complexity
# of bits used to describe input
time
![Page 30: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/30.jpg)
What is T(n)?
Kindergarden Multiplication INPUT: Two n-bit numbers, a and bOUTPUT: a * b
Start at a and add a, b-1 times
We always pick the WORST CASE for the input size n. Thus, T(n) = c n2n Exponential
![Page 31: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/31.jpg)
Thus, Nursery School adding and multiplication are exponential time. They
SCALE HORRIBLY as input size grows.
Grade school methods scale polynomially – just linear and quadratic. Thus, we can add
and multiply fairly large numbers.
![Page 32: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/32.jpg)
Multiplication is efficient, what about reverse
multiplication?
Let’s define FACTORING n to any method to produce a non-trivial factor of n, or to assert that n is prime.
![Page 33: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/33.jpg)
Factoring The Number n By Trial Division
Trial division up to n
for k = 2 to n doif k |n then
return n “has a non-trivial factor” k
return n “is prime”
O(n (logn)2) time if division is O((logn)2)
![Page 34: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/34.jpg)
On input n, trial factoring uses On input n, trial factoring uses O(n (logn)2) time. Is that efficient?
No! The input length is No! The input length is log(n).log(n). Let k = log n. In Let k = log n. In terms of k, we are using 2terms of k, we are using 2k/2k/2 kk22 time. time.
The time is EXPONENTIAL in The time is EXPONENTIAL in the input length.the input length.
![Page 35: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/35.jpg)
We know methods of FACTORING that are sub-exponential (about 2cube root of k),
but nothing efficient.
![Page 36: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/36.jpg)
Useful notation to discuss growth rates
For any monotonic function f from the positive integers to the positive integers, we say “f = O(n)” or “f is O(n)”if:
Some constant times n eventually dominates f
[There exists a constant c such that for all sufficiently large n: f(n) · cn ]
![Page 37: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/37.jpg)
# of bits in numbers
time
f = O(n) means that there is a line that can be drawn that stays
above f from some point on
![Page 38: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/38.jpg)
Useful notation to discuss growth rates
For any monotonic function f from the positive integers to the positive integers, we say “f = (n)” or “f is (n)”if:
f eventually dominates some constant times n
[There exists a constant c such that for all sufficiently large n: f(n) ¸ cn ]
![Page 39: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/39.jpg)
# of bits in numbers
time
f = (n) means that there is a line that can be drawn that stays
below f from some point on
![Page 40: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/40.jpg)
Useful notation to discuss growth rates
For any monotonic function f from the positive integers to the positive integers, we say
“f = (n)” or “f is (n)”if:
f = O(n) and f = (n)
![Page 41: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/41.jpg)
# of bits in numbers
time
f = (n) means that f can be sandwiched between two lines
![Page 42: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/42.jpg)
Useful notation to discuss growth rates
For any monotonic functions f and g from the positive integers to the positive integers, we say “f = O(g)” or “f is O(g)”if:
Some constant times g eventually dominates f
[There exists a constant c such that for all sufficiently large n: f(n) <= cg(n) ]
![Page 43: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/43.jpg)
Useful notation to discuss growth rates
For any monotonic functions f and g from the positive integers to the positive integers, we say “f = (g)” or “f is (g)”if:
f eventually dominates some constant times g
[There exists a constant c such that for all sufficiently large n: f(n) >= cg(n) ]
![Page 44: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/44.jpg)
Useful notation to discuss growth rates
For any monotonic functions f and g from the positive integers to the positive integers, we say
“f = (g)” or “f is (g)” if:
f = O(g) and f = (g)
![Page 45: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/45.jpg)
Quickies
• n = O(n2) ?– YES
• n = O(sqrt(n)) ?– NO
• 3n2 + 4n + = O(n2) ?– YES
• 3n2 + 4n + = (n2) ?– YES
• n2 = (nlogn) ?– YES
• n2logn = (n2)– NO
![Page 46: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/46.jpg)
Names For Some Growth Rates
Linear Time T(n) = O(n)Quadratic Time T(n) = O(n2)Cubic Time T(n) = O(n3)
Polynomial Time mean that for some constant k, T(n) = O(nk).Example: T(n) = 13n5
![Page 47: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/47.jpg)
Names For Some Growth Rates
Exponential Time means that for some constant k, T(n) = O(kn)Example: T(n) = n2n = O(3n)
Almost Exponential Time means that for some constant k, T(n) = 2kth root of n
![Page 48: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/48.jpg)
Names For Some Growth Rates
Logorithmic Time T(n) = O(logn)Example: T(n) = 15log2(n)
Polylogarithmic Time means that for some constant k, T(n) = O(logk(n))
Note: These kind of algorithms can’t possibly read all of their inputs.
![Page 49: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/49.jpg)
Binary Search
A very common example of logarithmic time is looking up a word in a sorted dictionary.
![Page 50: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/50.jpg)
Some Big Ones
Doubly Exponential Time means that for some constant k, T(n) = is 2 to the 2n
Triply Exponential.
And so forth.
![Page 51: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/51.jpg)
2STACK
2STACK(0) = 1
2STACK(n) = 22STACK(n-1)
2STACK(1) = 22STACK(2) = 42STACK(3) = 162STACK(4) = 65536 2STACK(5) ¸ 1080 = atoms in universe
![Page 52: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/52.jpg)
log*(n) = Inverse 2STACK(n)# of times you have to apply the log
function to n to get it ito 1
Log*(1) = 0Log*(2) = 1Log*(4) =2Log*(16) = 3Log*(65536) = 4Log*(way big) = 5
2STACK(0) = 1
2STACK(n) = 22STACK(n-1)
2STACK(1) = 22STACK(2) = 42STACK(3) = 162STACK(4) = 65536 2STACK(5) ¸ 1080 = atoms in universe
![Page 53: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/53.jpg)
So an algorithm that can be shown
to run in O( n log*(n) ) Time
isLINEAR TIME FOR ALL PRACTICAL
PURPOSES!
![Page 54: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/54.jpg)
Ackermann’s Function
A(0, n) = n + 1 for n ≥ 0 A(m, 0) = A(m - 1, 1) for m ≥ 1 A(m, n) = A(m - 1, A(m, n - 1)) for m, n ≥
1
A(4,2) > # of particles in universeA(5,2) can’t be written out in this
universe
![Page 55: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/55.jpg)
Inverse Ackermann
A(0, n) = n + 1 for n ≥ 0 A(m, 0) = A(m - 1, 1) for m ≥ 1 A(m, n) = A(m - 1, A(m, n - 1)) for m, n ≥ 1
A’(k) = A(k,k) Inverse Ackerman is the inverse of A’Practically speaking:
n*inverse-Ackermann(n) · 4n
![Page 56: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/56.jpg)
n*inverse-Ackermann(n)
arises in the seminal paper of
D. D. Sleator and R. E. Tarjan. A data structure
for dynamic trees. Journal of Computer
and System Sciences, 26(3):362-391, 1983.
![Page 57: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/57.jpg)
![Page 58: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/58.jpg)
One the last day of this
course we will define
the BUSYBEAVER
function – it makes
Akermann look like
dust.
![Page 59: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/59.jpg)
Let’s get back to our
original thinking…
![Page 60: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/60.jpg)
Time complexity of grade school addition
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
*
**
*
+*
*
*
**
*
T(n) = The amount of time grade school addition uses to add two n-bit numbers
We saw that T(n) was linear.
![Page 61: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/61.jpg)
Time complexity of grade school multiplication
T(n) = The amount of time grade school multiplication uses
to add two n-bit numbers
We saw that T(n) was quadratic.
-
X* * * * * * * * * * * * * * * *
* * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * ** * * * * * * * * * * * * * * *
n2
![Page 62: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/62.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 63: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/63.jpg)
Neat! We have demonstrated that as things scale multiplication is a
harder problem than addition.
Mathematical confirmation of our common sense.
![Page 64: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/64.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 “the best” addition algorithm is faster than “the best” multiplication algorithm.
![Page 65: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/65.jpg)
Grade school addition is linear time.
Is there a sub-linear time for addition?
![Page 66: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/66.jpg)
Any algorithm for addition must read all of the input bits
• Suppose there is a mystery algorithm A that does not examine each bit
• Give A a pair of numbers. There must be some unexamined bit position i in one of the numbers
• If the A is not correct on the numbers, we found a bug
• If A is correct, flip the bit at position i and give A the new pair of numbers. A give the same answer as before, which is now wrong.
![Page 67: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/67.jpg)
So any algorithm for addition must use time at least linear in
the size of the numbers.
Grade school addition can’t be improved upon by more than a
constant factor.
![Page 68: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/68.jpg)
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 69: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/69.jpg)
Grade School Addition: (n) timeFurthermore, it is optimal
Grade School Multiplication: (n2) time
Is there a clever algorithm to multiply two numbers
in linear time?
![Page 70: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/70.jpg)
Despite years of research, no one knows! If you resolve this question,
Carnegie Mellon will give you a PhD!
![Page 71: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/71.jpg)
Can we even brake the quadratic time barrier – in
other words can we do something very different
than grade school multiplication?
![Page 72: On Time Versus Input Size](https://reader035.fdocuments.in/reader035/viewer/2022062314/5681352f550346895d9c956a/html5/thumbnails/72.jpg)
Grade School Multiplication: (n2) timeKissing Intuition
Intuition: Let’s say that each time an algorithm has to multiply a digit from one
number with a digit from the other number, we call that a
“kiss”. It seems as if any correct algorithm must kiss at
least n2 times.