SlideShare a Scribd company logo
1
Introduction to Algorithm design and analysis
Example: sorting problem.
Input: a sequence of n number a1, a2, …,an
Output: a permutation (reordering) a1', a2', …,an'
such that a1' a2'  …  an '.
Different sorting algorithms:
Insertion sort and Mergesort.
2
Efficiency comparison of two algorithms
• Suppose n=106 numbers:
– Insertion sort: c1n2
– Merge sort: c2n (lg n)
– Best programmer (c1=2), machine language, one billion/second computer A.
– Bad programmer (c2=50), high-language, ten million/second computer B.
– 2 (106)2 instructions/109 instructions per second = 2000 seconds.
– 50 (106 lg 106) instructions/107 instructions per second  100 seconds.
– Thus, merge sort on B is 20 times faster than insertion sort on A!
– If sorting ten million numbers, 2.3 days VS. 20 minutes.
• Conclusions:
– Algorithms for solving the same problem can differ dramatically in their
efficiency.
– much more significant than the differences due to hardware and software.
3
Algorithm Design and Analysis
• Design an algorithm
– Prove the algorithm is correct.
• Loop invariant.
• Recursive function.
• Formal (mathematical) proof.
• Analyze the algorithm
– Time
• Worse case, best case, average case.
• For some algorithms, worst case occurs often, average case is often roughly as bad as
the worst case. So generally, worse case running time.
– Space
• Sequential and parallel algorithms
– Random-Access-Model (RAM)
– Parallel multi-processor access model: PRAM
4
Insertion Sort Algorithm (cont.)
INSERTION-SORT(A)
1. for j = 2 to length[A]
2. do key  A[j]
3. //insert A[j] to sorted sequence A[1..j-1]
4. i  j-1
5. while i >0 and A[i]>key
6. do A[i+1]  A[i] //move A[i] one position right
7. i  i-1
8. A[i+1]  key
5
Correctness of Insertion Sort Algorithm
• Loop invariant
– At the start of each iteration of the for loop, the
subarray A[1..j-1] contains original A[1..j-1] but in
sorted order.
• Proof:
– Initialization : j=2, A[1..j-1]=A[1..1]=A[1], sorted.
– Maintenance: each iteration maintains loop invariant.
– Termination: j=n+1, so A[1..j-1]=A[1..n] in sorted
order.
6
Analysis of Insertion Sort
INSERTION-SORT(A) cost times
1. for j = 2 to length[A] c1 n
2. do key  A[j] c2 n-1
3. //insert A[j] to sorted sequence A[1..j-1] 0 n-1
4. i  j-1 c4 n-1
5. while i >0 and A[i]>key c5 j=2
n tj
6. do A[i+1]  A[i] c6 j=2
n(tj –1)
7. i  i-1 c7 j=2
n(tj –1)
8. A[i+1]  key c8 n –1
(tj is the number of times the while loop test in line 5 is executed for that value of j)
The total time cost T(n) = sum of cost  times in each line
=c1n + c2(n-1) + c4(n-1) + c5j=2
n tj+ c6j=2
n (tj-1)+ c7j=2
n (tj-1)+ c8(n-1)
7
Analysis of Insertion Sort (cont.)
• Best case cost: already ordered numbers
– tj=1, and line 6 and 7 will be executed 0 times
– T(n) = c1n + c2(n-1) + c4(n-1) + c5(n-1) + c8(n-1)
=(c1 + c2 + c4 + c5 + c8)n – (c2 + c4 + c5 + c8) = cn + c‘
• Worst case cost: reverse ordered numbers
– tj=j,
– so j=2
n tj = j=2
n j =n(n+1)/2-1, and j=2
n(tj –1) = j=2
n(j –1) = n(n-1)/2,
and
– T(n) = c1n + c2(n-1) + c4(n-1) + c5(n(n+1)/2 -1) + + c6(n(n-1)/2 -1) +
c7(n(n-1)/2)+ c8(n-1) =((c5 + c6 + c7)/2)n2 +(c1 + c2 + c4 +c5/2-c6/2-
c7/2+c8)n-(c2 + c4 + c5 + c8) =an2+bn+c
• Average case cost: random numbers
– in average, tj = j/2. T(n) will still be in the order of n2, same as the worst case.
8
Merge Sort—divide-and-conquer
• Divide: divide the n-element sequence into
two subproblems of n/2 elements each.
• Conquer: sort the two subsequences
recursively using merge sort. If the length
of a sequence is 1, do nothing since it is
already in order.
• Combine: merge the two sorted
subsequences to produce the sorted answer.
9
Merge Sort –merge function
• Merge is the key operation in merge sort.
• Suppose the (sub)sequence(s) are stored in
the array A. moreover, A[p..q] and
A[q+1..r] are two sorted subsequences.
• MERGE(A,p,q,r) will merge the two
subsequences into sorted sequence A[p..r]
– MERGE(A,p,q,r) takes (r-p+1).
10
MERGE-SORT(A,p,r)
1. if p < r
2. then q  (p+r)/2
3. MERGE-SORT(A,p,q)
4. MERGE-SORT(A,q+1,r)
5. MERGE(A,p,q,r)
Call to MERGE-SORT(A,1,n) (suppose n=length(A))
11
Analysis of Divide-and-Conquer
• Described by recursive equation
• Suppose T(n) is the running time on a problem of
size n.
• T(n) = (1) if nnc
aT(n/b)+D(n)+C(n) if n> nc
Where a: number of subproblems
n/b: size of each subproblem
D(n): cost of divide operation
C(n): cost of combination operation
12
Analysis of MERGE-SORT
• Divide: D(n) = (1)
• Conquer: a=2,b=2, so 2T(n/2)
• Combine: C(n) = (n)
• T(n) = (1) if n=1
2T(n/2)+ (n) if n>1
• T(n) = c if n=1
2T(n/2)+ cn if n>1
13
Compute T(n) by Recursive Tree
• The recursive equation can be solved by recursive
tree.
• T(n) = 2T(n/2)+ cn, (See its Recursive Tree).
• lg n+1 levels, cn at each level, thus
• Total cost for merge sort is
– T(n) =cnlg n +cn = (nlg n).
– Question: best, worst, average?
• In contrast, insertion sort is
– T(n) = (n2).
14
Recursion tree of T(n)=2T(n/2)+cn
15
Order of growth
• Lower order item(s) are ignored, just keep the
highest order item.
• The constant coefficient(s) are ignored.
• The rate of growth, or the order of growth,
possesses the highest significance.
• Use (n2) to represent the worst case running time
for insertion sort.
• Typical order of growth: (1), (lg n),
(n),(n), (nlg n), (n2), (n3), (2n), (n!)
• Asymptotic notations: , O, , o, .
16
f(n) = ( g(n))
n
n0
c1g(n)
c2g(n)
f(n)
f(n) = O( g(n))
n
n0
f(n)
cg(n)
f(n) = ( g(n))
n
n0
cg(n)
f(n)
There exist positive constants c1 and c2
such that there is a positive constant n0
such that …
There exist positive constants c
such that there is a positive constant n0
such that …
There exist positive constants c
such that there is a positive constant n0
such that …
Prove f(n)=an2+bn+c=(n2)
• a, b, c are constants and a>0.
• Find c1, and c2 (and n0) such that
– c1n2  f(n) c2n2 for all n n0.
• It turns out: c1 =a/4, c2 =7a/4 and
– n0 = 2max(|b|/a, sqrt(|c|/a))
• Here we also can see that lower terms and
constant coefficient can be ignored.
• How about f(n)=an3+bn2+cn+d? 17
18
o-notation
• For a given function g(n),
– o(g(n))={f(n): for any positive constant c,there exists a
positive n0 such that 0 f(n)  cg(n) for all n n0}
– Write f(n)  o( g(n)), or simply f(n) = o( g(n)).
2g(n)
f(n) = o( g(n))
n
n0
g(n)
f(n)
1/2g(n)
n0 n0
19
Notes on o-notation
• O-notation may or may not be asymptotically tight
for upper bound.
– 2n2 = O(n2) is tight, but 2n = O(n2) is not tight.
• o-notition is used to denote an upper bound that is
not tight.
– 2n = o(n2), but 2n2  o(n2).
• Difference: for some positive constant c in O-
notation, but all positive constants c in o-notation.
• In o-notation, f(n) becomes insignificant relative to
g(n) as n approaches infinitely: i.e.,
– lim = 0.
f(n)
g(n)
n
20
-notation
• For a given function g(n),
– (g(n))={f(n): for any positive constant c, there exists a
positive n0 such that 0  cg(n)  f(n) for all n n0}
– Write f(n)  ( g(n)), or simply f(n) = ( g(n)).
• -notation, similar to o-notation, denotes lower
bound that is not asymptotically tight.
– n2/2 = (n), but n2/2  (n2)
• f(n) = ( g(n)) if and only if g(n)=o(f(n)).
• lim = 
f(n)
g(n)
n
21
Techniques for Algorithm Design and Analysis
• Data structure: the way to store and organize data.
– Disjoint sets
– Balanced search trees (red-black tree, AVL tree, 2-3 tree).
• Design techniques:
– divide-and-conquer, dynamic programming, prune-and-search,
laze evaluation, linear programming, …
• Analysis techniques:
– Analysis: recurrence, decision tree, adversary argument,
amortized analysis,…
22
NP-complete problem
• Hard problem:
– Most problems discussed are efficient (poly time)
– An interesting set of hard problems: NP-complete.
• Why interesting:
– Not known whether efficient algorithms exist for them.
– If exist for one, then exist for all.
– A small change may cause big change.
• Why important:
– Arise surprisingly often in real world.
– Not waste time on trying to find an efficient algorithm to get best
solution, instead find approximate or near-optimal solution.
• Example: traveling-salesman problem.

More Related Content

PPTX
Number System (Binary,octal,Decimal,Hexadecimal)
PPT
Unit 1 chapter 1 Design and Analysis of Algorithms
PPT
Data Structure and Algorithms Linked List
PPT
context free language
PDF
Operators in java
PDF
input/ output in java
PPT
Moore and Mealy machines
PPTX
Algorithm analysis and design
Number System (Binary,octal,Decimal,Hexadecimal)
Unit 1 chapter 1 Design and Analysis of Algorithms
Data Structure and Algorithms Linked List
context free language
Operators in java
input/ output in java
Moore and Mealy machines
Algorithm analysis and design

What's hot (20)

PPTX
Priority Queue in Data Structure
PDF
Daa notes 1
PPTX
Data structure - Graph
PPTX
Undecidability.pptx
PPTX
Introduction TO Finite Automata
PPT
Linked List
PPTX
Sparse matrix and its representation data structure
PPTX
Java – lexical issues
PPTX
Moore and mealy machine
PDF
sparse matrix in data structure
PPT
5 csp
PPT
Minimum spanning tree
PPT
chapter 1
PPTX
Maximal and minimal elements of poset.pptx
PPTX
Threads (operating System)
DOC
AUTOMATA THEORY - SHORT NOTES
PPT
Structure of a C program
PPT
Selection sort
PPTX
Chapter 09 design and analysis of algorithms
Priority Queue in Data Structure
Daa notes 1
Data structure - Graph
Undecidability.pptx
Introduction TO Finite Automata
Linked List
Sparse matrix and its representation data structure
Java – lexical issues
Moore and mealy machine
sparse matrix in data structure
5 csp
Minimum spanning tree
chapter 1
Maximal and minimal elements of poset.pptx
Threads (operating System)
AUTOMATA THEORY - SHORT NOTES
Structure of a C program
Selection sort
Chapter 09 design and analysis of algorithms
Ad

Similar to Algorithm Design and Analysis (20)

PPT
Introduction
PDF
Alg_Wks1_2.pdflklokjbhvkv jv .v.vk.hk kv h/k
PPT
Algorithm in Computer, Sorting and Notations
PPTX
Algorithms - "Chapter 2 getting started"
PPTX
Algorithms - Rocksolid Tour 2013
PPT
Cis435 week01
PDF
Unit-1 DAA_Notes.pdf
PDF
DAA - chapter 1.pdf
PDF
Sorting
PPT
03_sorting123456789454545454545444543.ppt
PPT
03_sorting and it's types with example .ppt
PPT
quicksortnmsd cmz ,z m,zmm,mbfjjjjhjhfjsg
PDF
Chp-1 Quick Review of basic concepts.pdf
PPT
InsertionSortBubbleSortSelectionSort.ppt
PPT
Insersion & Bubble Sort in Algoritm
PPTX
Algorithim lec1.pptx
PPT
Insertion sort bubble sort selection sort
PDF
01-Slides.pdf
PPTX
Unit 1.pptx
PDF
Introduction of Algorithm.pdf
Introduction
Alg_Wks1_2.pdflklokjbhvkv jv .v.vk.hk kv h/k
Algorithm in Computer, Sorting and Notations
Algorithms - "Chapter 2 getting started"
Algorithms - Rocksolid Tour 2013
Cis435 week01
Unit-1 DAA_Notes.pdf
DAA - chapter 1.pdf
Sorting
03_sorting123456789454545454545444543.ppt
03_sorting and it's types with example .ppt
quicksortnmsd cmz ,z m,zmm,mbfjjjjhjhfjsg
Chp-1 Quick Review of basic concepts.pdf
InsertionSortBubbleSortSelectionSort.ppt
Insersion & Bubble Sort in Algoritm
Algorithim lec1.pptx
Insertion sort bubble sort selection sort
01-Slides.pdf
Unit 1.pptx
Introduction of Algorithm.pdf
Ad

More from Reetesh Gupta (16)

PPT
Analysis of Algorithms-Heapsort
PPT
Introduction to Software Project Management
PPTX
Data Flow Diagrams
PPTX
Unit4 Proof of Correctness, Statistical Tools, Clean Room Process and Quality...
PPTX
Unit4 Software Engineering Institute (SEI)’s Capability Maturity Model (CMM) ...
PPTX
Unit3 software review control software
PPT
Unit2 scheduling wbs_network
PPT
Unit2 scheduling wbs_network Management
PPT
project planning-estimation
PPT
Cloud computing
PPT
Slides15
PPT
Cloud computing
PPT
Cloud computing
PPT
Ccna day3
PPT
PPT
CCNA PPT
Analysis of Algorithms-Heapsort
Introduction to Software Project Management
Data Flow Diagrams
Unit4 Proof of Correctness, Statistical Tools, Clean Room Process and Quality...
Unit4 Software Engineering Institute (SEI)’s Capability Maturity Model (CMM) ...
Unit3 software review control software
Unit2 scheduling wbs_network
Unit2 scheduling wbs_network Management
project planning-estimation
Cloud computing
Slides15
Cloud computing
Cloud computing
Ccna day3
CCNA PPT

Recently uploaded (20)

PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Pre independence Education in Inndia.pdf
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Complications of Minimal Access Surgery at WLH
PPTX
Institutional Correction lecture only . . .
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
RMMM.pdf make it easy to upload and study
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
01-Introduction-to-Information-Management.pdf
PDF
Basic Mud Logging Guide for educational purpose
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
TR - Agricultural Crops Production NC III.pdf
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Pre independence Education in Inndia.pdf
Abdominal Access Techniques with Prof. Dr. R K Mishra
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Complications of Minimal Access Surgery at WLH
Institutional Correction lecture only . . .
2.FourierTransform-ShortQuestionswithAnswers.pdf
RMMM.pdf make it easy to upload and study
O5-L3 Freight Transport Ops (International) V1.pdf
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Module 4: Burden of Disease Tutorial Slides S2 2025
Final Presentation General Medicine 03-08-2024.pptx
O7-L3 Supply Chain Operations - ICLT Program
PPH.pptx obstetrics and gynecology in nursing
01-Introduction-to-Information-Management.pdf
Basic Mud Logging Guide for educational purpose
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
VCE English Exam - Section C Student Revision Booklet
STATICS OF THE RIGID BODIES Hibbelers.pdf
TR - Agricultural Crops Production NC III.pdf

Algorithm Design and Analysis

  • 1. 1 Introduction to Algorithm design and analysis Example: sorting problem. Input: a sequence of n number a1, a2, …,an Output: a permutation (reordering) a1', a2', …,an' such that a1' a2'  …  an '. Different sorting algorithms: Insertion sort and Mergesort.
  • 2. 2 Efficiency comparison of two algorithms • Suppose n=106 numbers: – Insertion sort: c1n2 – Merge sort: c2n (lg n) – Best programmer (c1=2), machine language, one billion/second computer A. – Bad programmer (c2=50), high-language, ten million/second computer B. – 2 (106)2 instructions/109 instructions per second = 2000 seconds. – 50 (106 lg 106) instructions/107 instructions per second  100 seconds. – Thus, merge sort on B is 20 times faster than insertion sort on A! – If sorting ten million numbers, 2.3 days VS. 20 minutes. • Conclusions: – Algorithms for solving the same problem can differ dramatically in their efficiency. – much more significant than the differences due to hardware and software.
  • 3. 3 Algorithm Design and Analysis • Design an algorithm – Prove the algorithm is correct. • Loop invariant. • Recursive function. • Formal (mathematical) proof. • Analyze the algorithm – Time • Worse case, best case, average case. • For some algorithms, worst case occurs often, average case is often roughly as bad as the worst case. So generally, worse case running time. – Space • Sequential and parallel algorithms – Random-Access-Model (RAM) – Parallel multi-processor access model: PRAM
  • 4. 4 Insertion Sort Algorithm (cont.) INSERTION-SORT(A) 1. for j = 2 to length[A] 2. do key  A[j] 3. //insert A[j] to sorted sequence A[1..j-1] 4. i  j-1 5. while i >0 and A[i]>key 6. do A[i+1]  A[i] //move A[i] one position right 7. i  i-1 8. A[i+1]  key
  • 5. 5 Correctness of Insertion Sort Algorithm • Loop invariant – At the start of each iteration of the for loop, the subarray A[1..j-1] contains original A[1..j-1] but in sorted order. • Proof: – Initialization : j=2, A[1..j-1]=A[1..1]=A[1], sorted. – Maintenance: each iteration maintains loop invariant. – Termination: j=n+1, so A[1..j-1]=A[1..n] in sorted order.
  • 6. 6 Analysis of Insertion Sort INSERTION-SORT(A) cost times 1. for j = 2 to length[A] c1 n 2. do key  A[j] c2 n-1 3. //insert A[j] to sorted sequence A[1..j-1] 0 n-1 4. i  j-1 c4 n-1 5. while i >0 and A[i]>key c5 j=2 n tj 6. do A[i+1]  A[i] c6 j=2 n(tj –1) 7. i  i-1 c7 j=2 n(tj –1) 8. A[i+1]  key c8 n –1 (tj is the number of times the while loop test in line 5 is executed for that value of j) The total time cost T(n) = sum of cost  times in each line =c1n + c2(n-1) + c4(n-1) + c5j=2 n tj+ c6j=2 n (tj-1)+ c7j=2 n (tj-1)+ c8(n-1)
  • 7. 7 Analysis of Insertion Sort (cont.) • Best case cost: already ordered numbers – tj=1, and line 6 and 7 will be executed 0 times – T(n) = c1n + c2(n-1) + c4(n-1) + c5(n-1) + c8(n-1) =(c1 + c2 + c4 + c5 + c8)n – (c2 + c4 + c5 + c8) = cn + c‘ • Worst case cost: reverse ordered numbers – tj=j, – so j=2 n tj = j=2 n j =n(n+1)/2-1, and j=2 n(tj –1) = j=2 n(j –1) = n(n-1)/2, and – T(n) = c1n + c2(n-1) + c4(n-1) + c5(n(n+1)/2 -1) + + c6(n(n-1)/2 -1) + c7(n(n-1)/2)+ c8(n-1) =((c5 + c6 + c7)/2)n2 +(c1 + c2 + c4 +c5/2-c6/2- c7/2+c8)n-(c2 + c4 + c5 + c8) =an2+bn+c • Average case cost: random numbers – in average, tj = j/2. T(n) will still be in the order of n2, same as the worst case.
  • 8. 8 Merge Sort—divide-and-conquer • Divide: divide the n-element sequence into two subproblems of n/2 elements each. • Conquer: sort the two subsequences recursively using merge sort. If the length of a sequence is 1, do nothing since it is already in order. • Combine: merge the two sorted subsequences to produce the sorted answer.
  • 9. 9 Merge Sort –merge function • Merge is the key operation in merge sort. • Suppose the (sub)sequence(s) are stored in the array A. moreover, A[p..q] and A[q+1..r] are two sorted subsequences. • MERGE(A,p,q,r) will merge the two subsequences into sorted sequence A[p..r] – MERGE(A,p,q,r) takes (r-p+1).
  • 10. 10 MERGE-SORT(A,p,r) 1. if p < r 2. then q  (p+r)/2 3. MERGE-SORT(A,p,q) 4. MERGE-SORT(A,q+1,r) 5. MERGE(A,p,q,r) Call to MERGE-SORT(A,1,n) (suppose n=length(A))
  • 11. 11 Analysis of Divide-and-Conquer • Described by recursive equation • Suppose T(n) is the running time on a problem of size n. • T(n) = (1) if nnc aT(n/b)+D(n)+C(n) if n> nc Where a: number of subproblems n/b: size of each subproblem D(n): cost of divide operation C(n): cost of combination operation
  • 12. 12 Analysis of MERGE-SORT • Divide: D(n) = (1) • Conquer: a=2,b=2, so 2T(n/2) • Combine: C(n) = (n) • T(n) = (1) if n=1 2T(n/2)+ (n) if n>1 • T(n) = c if n=1 2T(n/2)+ cn if n>1
  • 13. 13 Compute T(n) by Recursive Tree • The recursive equation can be solved by recursive tree. • T(n) = 2T(n/2)+ cn, (See its Recursive Tree). • lg n+1 levels, cn at each level, thus • Total cost for merge sort is – T(n) =cnlg n +cn = (nlg n). – Question: best, worst, average? • In contrast, insertion sort is – T(n) = (n2).
  • 14. 14 Recursion tree of T(n)=2T(n/2)+cn
  • 15. 15 Order of growth • Lower order item(s) are ignored, just keep the highest order item. • The constant coefficient(s) are ignored. • The rate of growth, or the order of growth, possesses the highest significance. • Use (n2) to represent the worst case running time for insertion sort. • Typical order of growth: (1), (lg n), (n),(n), (nlg n), (n2), (n3), (2n), (n!) • Asymptotic notations: , O, , o, .
  • 16. 16 f(n) = ( g(n)) n n0 c1g(n) c2g(n) f(n) f(n) = O( g(n)) n n0 f(n) cg(n) f(n) = ( g(n)) n n0 cg(n) f(n) There exist positive constants c1 and c2 such that there is a positive constant n0 such that … There exist positive constants c such that there is a positive constant n0 such that … There exist positive constants c such that there is a positive constant n0 such that …
  • 17. Prove f(n)=an2+bn+c=(n2) • a, b, c are constants and a>0. • Find c1, and c2 (and n0) such that – c1n2  f(n) c2n2 for all n n0. • It turns out: c1 =a/4, c2 =7a/4 and – n0 = 2max(|b|/a, sqrt(|c|/a)) • Here we also can see that lower terms and constant coefficient can be ignored. • How about f(n)=an3+bn2+cn+d? 17
  • 18. 18 o-notation • For a given function g(n), – o(g(n))={f(n): for any positive constant c,there exists a positive n0 such that 0 f(n)  cg(n) for all n n0} – Write f(n)  o( g(n)), or simply f(n) = o( g(n)). 2g(n) f(n) = o( g(n)) n n0 g(n) f(n) 1/2g(n) n0 n0
  • 19. 19 Notes on o-notation • O-notation may or may not be asymptotically tight for upper bound. – 2n2 = O(n2) is tight, but 2n = O(n2) is not tight. • o-notition is used to denote an upper bound that is not tight. – 2n = o(n2), but 2n2  o(n2). • Difference: for some positive constant c in O- notation, but all positive constants c in o-notation. • In o-notation, f(n) becomes insignificant relative to g(n) as n approaches infinitely: i.e., – lim = 0. f(n) g(n) n
  • 20. 20 -notation • For a given function g(n), – (g(n))={f(n): for any positive constant c, there exists a positive n0 such that 0  cg(n)  f(n) for all n n0} – Write f(n)  ( g(n)), or simply f(n) = ( g(n)). • -notation, similar to o-notation, denotes lower bound that is not asymptotically tight. – n2/2 = (n), but n2/2  (n2) • f(n) = ( g(n)) if and only if g(n)=o(f(n)). • lim =  f(n) g(n) n
  • 21. 21 Techniques for Algorithm Design and Analysis • Data structure: the way to store and organize data. – Disjoint sets – Balanced search trees (red-black tree, AVL tree, 2-3 tree). • Design techniques: – divide-and-conquer, dynamic programming, prune-and-search, laze evaluation, linear programming, … • Analysis techniques: – Analysis: recurrence, decision tree, adversary argument, amortized analysis,…
  • 22. 22 NP-complete problem • Hard problem: – Most problems discussed are efficient (poly time) – An interesting set of hard problems: NP-complete. • Why interesting: – Not known whether efficient algorithms exist for them. – If exist for one, then exist for all. – A small change may cause big change. • Why important: – Arise surprisingly often in real world. – Not waste time on trying to find an efficient algorithm to get best solution, instead find approximate or near-optimal solution. • Example: traveling-salesman problem.