Transcript Document

Algorithms

Course website:
http://www.cs.uakron.edu/~zduan/class/435
Leigh Hall 409, 2:15-3:05pm

Instructor: Dr. Zhong-Hui Duan





Teaching assistant: Vasudha Lankireddy, [email protected]


Office hour: TBA (CAS 254)
Labs and Tutors


Office: 238 CAS
Phone: 330-972-6773
E-mail: [email protected]
Office Hours: MWF1:00-2:00 or appointment
https://www.uakron.edu/computer-science/current-students/lab-hours.dot
Course Goals:

To learn well-known algorithms as well as the design and analysis of these
algorithms.
Books

Textbook:
Algorithms by Dasgupta, et al.

An excellent reference:
Introduction to Algorithms, 3rd Edition,
by T.H. Cormen, C.E. Leiserson, R.L.
Rivest, and C. Stein, MIT, 2009.

Grading:





Two exams (15%, 30%).
Programs (30%).
Weekly homework problems (10%).
 neat, clear, precise, formal.
Quizzes & class participation (15%).
Grading Scale (+/- grades may be assigned at
instructor's discretion):

A 90-100
B 80-89 C 70-79 D 60-69 F
0-59
Program Submissions


All programs will be submitted using Springboard. A drop box
will be created for each program. You will also need to submit a
printed copy of your source code and a readme file. DO NOT
submit programs that are not reasonably correct! To be considered
reasonably correct, a program must be completely documented and
work correctly for sample data provided with the assignment.
Programs failing to meet these minimum standards will be
returned ungraded and a 30% penalty assessed. Late points will be
added on top of this penalty.
Ethics: All programming assignments must be your own work.
Duplicate or similar programs/reports, plagiarism, cheating, undue
collaboration, or other forms of academic dishonesty will be
reported to the Student Disciplinary Office as a violation of the
Student Honor Code.
Dates and Final Exam Time

Last Day: Drop: Jan. 26; Withdraw: Mar. 2, 2015

Final Exam: Given according to the University
Final Exam schedule.

MWF class : Monday, May 4, 2:30 - 4:30pm
Algorithm
A procedure for solving a computational problem
(ex: sorting a set of integers) in a finite number
of steps.
More specifically: a step-by-step procedure for
solving a problem or accomplishing something
(especially using a computer).
Solving a Computational Problem

Problem definition & specification


Algorithm analysis & design



specify input, output and constraints
devise a correct & efficient algorithm
Implementation planning
Coding, testing and verification
Input
Algorithm
Output
Examples

RSA.


Quicksort.


Data compression.
Network flow.


Signal processing.
Huffman codes.


Databases.
FFT.


Cryptography.
Routing Internet packets.
Linear programming.

Planning, decision-making.
What is CS435/535?

Learn well-known
algorithms and the
design and analysis of
algorithms.





Examine interesting
problems.
Devise algorithms for
solving them.
Data structures and core
algorithms.
Analyze running time of
programs.
Critical thinking.

Project 1 and final project
Ch 0: Big-O notation
Asymptotic Complexity

Running time of an algorithm as a function of input
size n for large n.

Expressed using only the highest-order term in the
expression for the exact running time.

Instead of exact running time, say Q(n2).

Describes behavior of function in the limit.

Written using Asymptotic Notation.
Asymptotic Notation




Q, O, W, o, w
Defined for functions over the natural numbers.
 Ex: f(n) = Q(n2).
 Describes how f(n) grows in comparison to n2.
Define a set of functions; in practice used to compare
two function sizes.
The notations (Q, O, W, o, w) describe different rate-ofgrowth relations between the defining function and the
defined set of functions.
O-notation
For function g(n), we define O(g(n)),
big-O of n, as the set:
O(g(n)) = {f(n) :
 positive constants c and n0,
such that n  n0,
we have 0  f(n)  cg(n) }
Intuitively: Set of all functions whose
rate of growth is the same as or lower
than that of g(n).
Technically, f(n)  O(g(n)).
Older usage, f(n) = O(g(n)).
g(n) is an asymptotic upper bound for f(n).
Examples
O(g(n)) = {f(n) :  positive constants c and n0,
such that n  n0, we have 0  f(n)  cg(n) }

O(n2)
n2 +1
 n2 +n
 1000n2 +1000n
 n1.999
 n2/log n
 n2/log log logn

W -notation
For function g(n), we define W(g(n)),
big-Omega of n, as the set:
W(g(n)) = {f(n) :
 positive constants c and n0,
such that n  n0,
we have 0  cg(n)  f(n)}
Intuitively: Set of all functions whose rate of growth is the
same as or higher than that of g(n).
g(n) is an asymptotic lower bound for f(n).
Example
W(g(n)) = {f(n) :  positive constants c and n0, such
that n  n0, we have 0  cg(n)  f(n)}







n = W(lg n). Choose c and n0.
1000n2 + 1000n
1000n2 − 1000n
n3
n2.00001
n2 log log log n
n
22
Q-notation
For function g(n), we define Q(g(n)),
big-Theta of n, as the set:
Q(g(n)) = {f(n) :
 positive constants c1, c2, and n0,
such that n  n0,
we have 0  c1g(n)  f(n)  c2g(n)
}
Intuitively: Set of all functions that have the same rate of
growth as g(n).
g(n) is an asymptotically tight bound for f(n).
Example
Q(g(n)) = {f(n) :  positive constants c1, c2, and n0,
such that n  n0, 0  c1g(n)  f(n)  c2g(n)}



10n2 - 3n = Q(n2)
To compare orders of growth, look at the
leading term.
Exercise: Prove that n2/2-3n= Q(n2)
Relations Between O, W, Q
Exercise
6
n-10
= Ω(n)
Example

Is 3n3 = Q(n4) ?

How about 22n= Q(2n)?

How about log2n = Q(log10n)?
Relations Between Q, W, O
Theorem : For any two functions g(n) and f(n),
f(n) = Q(g(n)) iff
f(n) = O(g(n)) and f(n) = W(g(n)).

i.e., Q(g(n)) = O(g(n))  W(g(n))
f(n) = Q(g(n))  f(n) = O(g(n)).
Q(g(n))  O(g(n)).

f(n) = Q(g(n))  f(n) = W(g(n)).
Q(g(n))  W(g(n)).
In practice, asymptotically tight bounds are obtained
from asymptotic upper and lower bounds.
Comparison of Functions
fg ~ ab
f (n) = O(g(n)) ~ a  b
f (n) = W(g(n)) ~ a  b
f (n) = Q(g(n)) ~ a = b
Properties

Transitivity
f(n) = Q(g(n)) and g(n) = Q(h(n))  f(n) = Q(h(n))
f(n) = O(g(n)) and g(n) = O(h(n))  f(n) = O(h(n))
f(n) = W(g(n)) and g(n) = W(h(n))  f(n) = W(h(n))
f(n) = o (g(n)) and g(n) = o (h(n))  f(n) = o (h(n))
f(n) = w(g(n)) and g(n) = w(h(n))  f(n) = w(h(n))

Reflexivity
f(n) = Q(f(n))
f(n) = O(f(n))
f(n) = W(f(n))
Properties

Symmetry
f(n) = Q(g(n)) iff g(n) = Q(f(n))

Complementarity
f(n) = O(g(n)) iff g(n) = W(f(n))
f(n) = o(g(n)) iff g(n) = w((f(n))
Limits

lim [f(n) / g(n)] <   f(n)  O(g(n))
n

0 < lim [f(n) / g(n)] <   f(n)  Q(g(n))
n

0 < lim [f(n) / g(n)]  f(n)  W(g(n))
n

lim [f(n) / g(n)] undefined  can’t say
n
complexity classes
adjective
constant
logarithmic
linear
nlogn
quadratic
cubic
exponential
exponential
etc.
Q-notation
Q(1)
Q(logn)
Q(n)
Q(nlogn)
Q(n2)
Q(n3)
Q(2n)
Q(10n)
Fibonacci Numbers
Fibonacci Numbers
Properties of a relation R={(a,b)}
Transitive
 Reflexive, irreflexive
 Symmetric, antisymmetric, asymmetric



Equivalence relation: reflexive, symmetric, and
transitive.
Partial order: reflexive, antisymmetric, and
transitive.
Relations





R={(f(n), g(n)) | f(n) = O(g(n))}
R={(f(n), g(n)) | f(n) = Ω(g(n))}
R={(f(n), g(n)) | f(n) = Θ(g(n))}
R={(f(n), g(n)) | f(n) = o(g(n))}
R={(f(n), g(n)) | f(n) = ω(g(n))}
Exercise
Express functions in A in asymptotic notation using functions in B.
A
5n2 + 100n
B
3n2 + 2
A  Q(B)
A  Q(n2), n2  Q(B)  A  Q(B)
log3(n2)
log2(n3)
A  Q(B)
logba = logca / logcb; A = 2logn / log3, B = 3logn, A/B =2/(3log3)
nlog24
3log2n
A  w(B)
alog b = blog a; B =3log n=nlog 3; A/B =nlog(4/3)   as n
A  o (B)
log2n
n1/2
lim ( loga n / nb ) = 0 (here a = 2 , b = 1/2)  A  o (B)
n

Ch1