Algorithms Books

Algorithms


Course web site:
http://www.cs.uakron.edu/~zduan/class/435

Office: 238 CAS
Phone: 330330-972972-6773
E-mail: [email protected]
Office Hours: MWF12:00MWF12:00-1:00, MW6:25MW6:25-6:40, or appointment

Office hour: TBA (CAS 254),F5:00254),F5:00-7:00pm(CAS 241)





Teaching assistant: Vasudha Lankireddy

Tutors:
 Aaron Battershell and Michael Wilder
Course Goals:

Textbook:
Algorithms by Dasgupta
Dasgupta,, et al.
Instructor: Dr. ZhongZhong-Hui Duan


Books
An excellent reference:
Introduction to Algorithms, 3rd Edition,
by T.H. Cormen
Cormen,, C.E. Leiserson
Leiserson,, R.L.
Rivest,, and C. Stein, MIT, 2009.
Rivest
To learn well
well--known algorithms as well as the design and
analysis of these algorithms.
Program Submissions

Grading:





Weekly homework problems (15%).
 neat, clear, precise, formal.
Two exams (15%, 30%).
Programs (30%).
Quizzes & class participation (10%).
Grading Scale (+/(+/- grades may be assigned at
instructor's discretion):

A 9090-100 B 80
80--89 C 70
70--79 D 60
60--69 F 00-59
Dates and Final Exam Time


Last Day: Drop
Drop:: Sept 8; Withdraw
Withdraw:: Oct 13
Final Exam:
Exam: Given according to the University
Final Exam schedule.



MWF class : Thursday, Dec 11, 12:1512:15-2:15pm;
MW class : Wednesday, December 10, 4:45 - 6:45pm.

All programs will be submitted using Springboard
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!
correct! To be considered
reasonably correct,
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.
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.
Algorithm
A procedure for solving a computational problem
(ex: sorting a set of integers) in a finite number
of steps.
More specifically: a stepstep-byby-step procedure for
solving a problem or accomplishing something
(especially using a computer).
1
Solving a Computational Problem

Problem definition & specification





RSA.

Quicksort..
Quicksort

FFT.

Huffman codes.

Network flow.

Linear programming.

specify input, output and constraints
Algorithm analysis & design

Examples

devise a correct & efficient algorithm

Implementation planning
Coding, testing and verification


Input
Algorithm
Output

Cryptography.
Databases.
Signal processing.
Data compression.
Routing Internet packets.
Planning, decisiondecision-making.
What is CS435/535?

Learn wellwell-known
algorithms and the
design and analysis of
algorithms..
algorithms





Big--O notation
Big
Examine interesting
problems.
Devise algorithms for
solving them.
Data structures and core
algorithms.
Analyze running time of
programs.
Critical thinking.
thinking.
Asymptotic Complexity


Running time of an algorithm as a function of input
size n for large n.
Asymptotic Notation


Expressed using only the highest
highest--order term in the
expression for the exact running time.

Instead of exact running time, say Θ(n2).

Describes behavior of function in the limit.

Written using Asymptotic Notation.


Θ, O, Ω, o, ω
Defined for functions over the natural numbers.
numbers.
 Ex: f(n) = Θ(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 (Θ, O, Ω, o, ω) describe different rate
rate--ofofgrowth relations between the defining function and the
defined set of functions.
2
O-notation
Examples
O(g(n)) = {f(n) : ∃ positive constants c and n0,
such that ∀n ≥ n0, we have 0 ≤ f(n) ≤ cg(n) }
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,

n2 +1
 n2 +n
 1000
1000nn2 +1000n
 n1.999
 n2/log n
 n2/log log logn

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).
O(n2)
Technically, f(n) ∈ O(g(n)).
Older usage, f(n) = O(g(n)).
g(n) is an asymptotic upper bound for f(n).
Ω -notation
For function g(n), we define Ω(g(n)),
big-Omega of n, as the set:
Ω(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
Ω(g(n)) = {f(n) : ∃ positive constants c and n0, such
that ∀n ≥ n0, we have 0 ≤ cg(n) ≤ f(n)}







√n = Ω(lg n). Choose c and n0.
1000n2 + 1000n
1000n2 − 1000n
n3
n2.00001
n2 log log log n
22 n
Example
Θ-notation
For function g(n), we define Θ(g(n)),
big-Theta of n, as the set:
Θ(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)) = {f(n) : ∃ positive constants c1, c2, and n0,
such that ∀n ≥ n0, 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n)}



10nn2 - 3n = Θ(n2)
10
To compare orders of growth, look at the
leading term.
Exercise: Prove that n2/2
/2--3n= Θ(n2)
g(n) is an asymptotically tight bound for f(n).
3
Relations Between O, Ω, Θ
Exercise
n-106 = Ω(n)
Relations Between Θ, Ω, O
Example
3n3 =
3n
Θ(n4)

Is

How about 22n= Θ(2n)?

How about log2n = Θ(log10n)?
Theorem : For any two functions g(n) and f(n),
f(n) = Θ(g(n)) iff
f(n) = O(g(n)) and f(n) = Ω(g(n)).
?

i.e., Θ(g(n)) = O(g(n)) ∩ Ω(g(n))
f(n) = Θ(g(n)) ⇒ f(n) = O(g(n)).
Θ(g(n)) ⊂ O(g(n)).

In practice, asymptotically tight bounds are obtained
from asymptotic upper and lower bounds.
Properties
Comparison of Functions
f↔g ~ a↔b
f(n) = Θ(g(n)) ⇒ f(n) = Ω(g(n)).
Θ(g(n)) ⊂ Ω(g(n)).

Transitivity
f(n) = Θ(g(n)) and g(n) = Θ(h(n)) ⇒ f(n) = Θ(h(n))
f(n) = O(g(n)) and g(n) = O(h(n)) ⇒ f(n) = O(h(n))
f(n) = Ω(g(n)) and g(n) = Ω(h(n)) ⇒ f(n) = Ω(h(n))
f(n) = o (g(n)) and g(n) = o (h(n)) ⇒ f(n) = o (h(n))
f(n) = ω(g(n)) and g(n) = ω(h(n)) ⇒ f(n) = ω(h(n))
f (n) = O(
O(g(n)) ~ a ≤ b
f (n) = Ω(g(n)) ~ a ≥ b
f (n) = Θ(g(n)) ~ a = b

Reflexivity
f(n) = Θ(f(n))
f(n) = O(f(n))
f(n) = Ω(f(n))
4
Properties

Limits
Symmetry
f(n) = Θ(g(n)) iff g(n) = Θ(f(n))

lim [f(n) / g(n)] < ∞ ⇔ f(n) ∈ Ο(g(n))
n→∞

0 < lim [f(n) / g(n)] < ∞ ⇔ f(n) ∈ Θ(g(n))
n→∞

Complementarity
f(n) = O(g(n)) iff g(n) = Ω(f(n))
((ff(n))
f(n) = o(g(n)) iff g(n) = ω((

n→∞

constant
logarithmic
linear
nlogn
quadratic
cubic
exponential
exponential
etc.
lim [f(n) / g(n)] undefined ⇒ can’t say
n→∞
Fibonacci Numbers
complexity classes
adjective
0 < lim [f(n) / g(n)] ⇔ f(n) ∈ Ω(
Ω(g(n))
Θ-notation
Θ(1)
Θ(logn
logn))
Θ(n)
Θ(nlogn
nlogn))
Θ(n2)
Θ(n3)
Θ(2n)
Θ(10n)
HW due next Friday
Fibonacci Numbers

Ch0 1.a,c,e,g,i,o; 4.a,b
5