Introduction To Complexity Computational 2019
Introduction To Complexity Computational 2019
Introduction To Complexity Computational 2019
Computability
Quan Thanh Tho
[email protected]
Preliminary Concepts
• Pseudocode
• Abstract data type
• Algorithm efficiency
2
Pseudocode
• What is an algorithm?
3
Pseudocode
• What is an algorithm?
– The logical steps to solve a problem.
4
Pseudocode
• What is a program?
– Program = Data structures + Algorithms (Niklaus Wirth)
5
Pseudocode
• The most common tool to define algorithms.
• English-like representation of the code
required for an algorithm.
6
Pseudocode
• Pseudocode = English + Code
7
Pseudocode
Algorithm Header
Algorithm Body
8
Pseudocode
• Algorithm Header:
– Name
– Parameters and their types
– Purpose
• what the algorithm does
– Precondition
• precursor requirements for the parameters
– Postcondition
• taken action and status of the parameters
– Return condition
• returned value
9
Pseudocode
• Algorithm Body:
– Statements
– Statement numbers
• decimal notation to express levels
– Variables
• important data
– Algorithm analysis
• comments to explain salient points
– Statement constructs
• sequence, selection, iteration
10
Example
Algorithm average
Pre nothing
Post numbers read and their average printed
1 i=0
2 loop (all data not read)
1 i=i+1
2 read number
3 sum = sum + number
3 average = sum / i
4 print average
5 return
End average
11
Abstract Data Type
• What is a data type?
– Class of data objects that have the same properties
12
Abstract Data Type
• Development of programming concepts:
– GOTO programming
• control flow is like spaghetti on a plate
– Modular programming
• programs organized into subprograms
– Structured programming
• structured control statements (sequence, selection, iteration)
– Object-oriented programming
• encapsulation of data and operations
13
Abstract Data Type
• ADT = Data structures + Operations
14
Abstract Data Type
Interface
User knows what a data
type can do.
Implementation of
data and operations
How it is done is hidden.
15
Abstract Data Type
data structure
internal
function
data
function A
data
function B
16
Example: Variable Access
• Rectangle: r
– length: x
– width: y
• Rectangle: r
– length: x (hidden)
– width: y (hidden)
– get_length()
– get_width()
17
Example: List
• Interface:
– Data:
• sequence of components of a particular data type
– Operations:
• accessing
• insertion
• deletion
• Implementation:
– Array, or
– Linked list
18
Algorithm Efficiency
• How fast an algorithm is?
• How much memory does it cost?
• Computational complexity: measure of the
difficulty degree (time or space) of an
algorithm.
19
Algorithm Efficiency
• General format:
f(n)
n is the size of a problem (the key number that determines
the size of input data)
20
Linear Loops
1 i=1 1 i=1
2 loop (i <= 1000) 2 loop (i <= 1000)
1 application code 1 application code
2 i=i+1 2 i=i+2
The number of times the body The number of times the body
of the loop is replicated is of the loop is replicated is
1000 500
21
Linear Loops
time
f(n) = n.T
f(n) = (n/2).T
n 22
Logarithmic Loops
Multiply loops
1 i=1
2 loop (i <= 1000)
1 application code
2 i=i×2
23
Logarithmic Loops
Multiply loops Divide loops
1 i=1 1 i = 1000
2 loop (i <= 1000) 2 loop (i >= 1)
1 application code 1 application code
2 i=i×2 2 i=i/2
24
Logarithmic Loops
time
f(n) = (log2n).T
n 25
Nested Loops
26
Linear Logarithmic Loops
1 i=1
2 loop (i <= 10)
1 j=1
2 loop (j <= 10)
1 application code
2 j=j×2
3 i=i+1
27
Linear Logarithmic Loops
time f(n) = (nlog2n).T
n 28
Quadratic Loops
1 i=1
2 loop (i <= 10)
1 j=1
2 loop (j <= 10)
1 application code
2 j=j+1
3 i=i+1
29
Dependent Quadratic Loops
1 i=1
2 loop (i <= 10)
1 j=1
2 loop (j <= i)
1 application code
2 j=j+1
3 i=i+1
30
Quadratic Loops
time f(n) = n2.T
n 31
Asymtotic Complexity
• Algorithm efficiency is considered with only
big problem sizes.
• We are not concerned with an exact
measurement of an algorithm's efficiency.
• Terms that do not substabtially change the
function’s magnitude are eliminated.
32
Big-O Notation
• f(n) = c.n ⇒ f(n) = O(n).
• f(n) = n(n + 1)/2 = n2/2 + n/2 ⇒ f(n) = O(n2).
33
Big-O Notation
• Set the coefficient of the term to one.
• Keep the largest term and discard the
others.
log2n n nlog2n n2 n3 ... nk ... 2n n!
34
Standard Measures of Efficiency
Efficiency Big-O Iterations Est. Time
logarithmic O(log2n) 14 microseconds
linear O(n) 10,000 .1 seconds
linear logarithmic O(nlog2n) 140,000 2 seconds
quadratic O(n2) 10,0002 15-20 min.
polynomial O(nk) 10,000k hours
exponential O(2n) 210,000 intractable
factorial O(n!) 10,000! intractable
35
Standard Measures of Efficiency
O(n) n2 nlog2n n
log2n
n 36
Big-O Analysis Examples
Algorithm addMatrix (val matrix1 <matrix>, val matrix2 <matrix>,
val size <integer>, ref matrix3 <matrix>)
Add matrix1 to matrix2 and place results in matrix3
Pre matrix1 and matrix2 have data
size is number of columns and rows in matrix
Post matrices added - result in matrix3
1 r=1
2 loop (r <= size)
1 c=1
2 loop (c <= size)
1 matrix3[r, c] = matrix1[r, c] + matrix2[r, c]
2 c=c+1
3 r=r+1
3 return
End addMatrix
37
Big-O Analysis Examples
Algorithm addMatrix (val matrix1 <matrix>, val matrix2 <matrix>,
val size <integer>, ref matrix3 <matrix>)
Add matrix1 to matrix2 and place results in matrix3
Pre matrix1 and matrix2 have data
size is number of columns and rows in matrix
Post matrices added - result in matrix3
1 r=1
2 loop (r <= size)
1 c=1
2 loop (c <= size)
1 matrix3[r, c] = matrix1[r, c] + matrix2[r, c]
2 c=c+1
3 r=r+1
3 return Nested linear loop: f(size) = O(size 2)
End addMatrix
38
Time Costing Operations
• The most time consuming: data movement
to/from memory/storage.
• Operations under consideration:
– Comparions
– Arithmetic operations
– Assignments
39
Recurrence Equation
• An equation or inequality that describes a
function in terms of its value on smaller
input.
40
Recurrence Equation
• Example: binary search.
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12]
4 7 8 10 14 21 22 36 62 77 81 91
41
Recurrence Equation
• Example: binary search.
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12]
4 7 8 10 14 21 22 36 62 77 81 91
42
Best, Average, Worst Cases
• Best case: when the number of steps is
smallest.
• Worst case: when the number of steps is
largest.
• Average case: in between.
43
Best, Average, Worst Cases
• Example: sequential search.
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12]
4 8 7 10 21 14 22 36 62 91 77 81
44
Best, Average, Worst Cases
• Example: sequential search.
a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] a[11] a[12]
4 8 7 10 21 14 22 36 62 91 77 81
45
P and NP Problems
• P: Polynomial (can be solved in polynomial
time on a deterministic machine).
• NP: Nondeterministic Polynomial (can be
solved in polynomial time on a non-
deterministic machine).
46
P and NP Problems
Travelling Salesman Problem:
A salesman has a list of cities, each of which he must visit
exactly once. There are direct roads between each pair of
cities on the list.
Find the route the salesman should follow for the shortest
possible round trip that both starts and finishes at any one of
the cities.
A
1 10
B
D E
5 5
15 5
C
47
P and NP Problems
Travelling Salesman Problem:
Deterministic machine: f(n) = n(n-1)(n-2) … 1 = O(n!)
⇒ NP problem
A
1 10
B
D E
5 5
15 5
C
48
P and NP Problems
• NP-complete: NP and every other problem
in NP is polynomially reducible to it.
• Open question: P = NP?
P
NP
NP-complete
49
Class P
Example :
- input : integers a and b, in binary notation
- output : a * b
Examples :
- input : integers a, b, c
- decide whether a * b = c
F B
A
C C
A H
H D
D
B E
F
E
G G
is not optimal !
x
Verifier V if V(x,p) = true
p
then F(x) = true
G, k G is k-colourable
k-COLOUR
G,k
Verifier
a colour associated at most k different colours
with each vertex of G are used, and the ends of
every edge are of different
colours
- decide whether the function is satisfiable, i.e. whether there are values
of the variables such that f=1
SAT is NP
(proof : values of variables)
p
Verifier V V(y,p)
If G is in class NP, so is F
Advanced Algorithmics - Complexity
January 2008 62
NP-hardness and NP-completeness
Cook’s theorem : SAT is NP-hard,
i.e. ANY NP problem polynomially reduces to SAT
To prove that a problem F is NP-hard, it is sufficient to show that SAT (or any other
known NP-hard problem) polynomially reduces to F :
any NP problem G SAT F
3-COLOUR
HAMILTONIAN-PATH
- input : a graph G (directed or undirected)
- decide whether there is a path in G going exactly once through each vertex
SUBSET-SUM
- input : a set I of integers, and a number S
- decide whether there is a subset of I whose sum is exactly S
Heuristics + Backtracking
Apply empirical means to guess a solution : e.g. use a greedy algorithm to 4-colour a
planar graph. If the result is not satisfactory (more than 4 colours), change your last
choice. The algorithm is exponential, but it could be efficient in most cases.
Optimization
Solve a weaker problem (e.g. use more than 4 colours to colour a map), and modify the
solution so that it fits the constraints of the original problem.
COMPOSITE is NP
Proof : a non-trivial divisor
2002 : PRIME is P
AKS primality test (Agrawal, Kayal and Saxena)
Examples :
- input : integers a, b, c
- decide whether a * b = c
F B
A
C C
A H
H D
D
B E
F
E
G G
is not optimal !
x
Verifier V if V(x,p) = true
p
then F(x) = true
G, k G is k-colourable
k-COLOUR
G,k
Verifier
a colour associated at most k different colours
with each vertex of G are used, and the ends of
every edge are of different
colours
- decide whether the function is satisfiable, i.e. whether there are values
of the variables such that f=1
SAT is NP
(proof : values of variables)
p
Verifier V V(y,p)
If G is in class NP, so is F
Advanced Algorithmics - Complexity
January 2008 78
NP-hardness and NP-completeness
Cook’s theorem : SAT is NP-hard,
i.e. ANY NP problem polynomially reduces to SAT
To prove that a problem F is NP-hard, it is sufficient to show that SAT (or any other
known NP-hard problem) polynomially reduces to F :
any NP problem G SAT F
3-COLOUR
HAMILTONIAN-PATH
- input : a graph G (directed or undirected)
- decide whether there is a path in G going exactly once through each vertex
SUBSET-SUM
- input : a set I of integers, and a number S
- decide whether there is a subset of I whose sum is exactly S
Heuristics + Backtracking
Apply empirical means to guess a solution : e.g. use a greedy algorithm to 4-colour a
planar graph. If the result is not satisfactory (more than 4 colours), change your last
choice. The algorithm is exponential, but it could be efficient in most cases.
Optimization
Solve a weaker problem (e.g. use more than 4 colours to colour a map), and modify the
solution so that it fits the constraints of the original problem.
COMPOSITE is NP
Proof : a non-trivial divisor
2002 : PRIME is P
AKS primality test (Agrawal, Kayal and Saxena)
is computable.
int f(int n) ;
// returns 1 if there is life on some other
planet
// and 0 otherwise
f is computable :
int f(int n) { int f(int n) {
return 1 ; return 0 ;
either } or }
HALT is semi-decidable
but is not decidable
input x output
Problem F
F(x)
computable reduction R
input output
y
Problem G
such that if y = R(x) G(y) G(y) = F(x)
then
F reduces to G : if G is decidable, so is F
if F is undecidable, so is G
January
2008
Advanced
Algorithmics
-‐
Computability
93
Unreachable Code II
$ cat -n unreachable.c
1 int f(int n) {
2 if (n > 0)
3 return 42 ;
4 else {
5 while(n <= 0)
6 ;
7 }
8 return 0 ;
9 }
$ gcc -c -Wunreachable-code unreachable.c
no warning !
January
2008
Advanced
Algorithmics
-‐
Computability
94