SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Algoritm (CSC 206, Autumn’06)

• Text (Required):
  Introduction to Algorithms
  by Cormen, Lieserson, Rivest & Stein
• Instructor: Dr. Ali Sabbir
• Office Rm 5009 D.
Grading

• Attendance is required
• At least 1 midterm.
• Exactly 1 in class Final.
• Several quizzes (Announced and
  Unannounced)
• Lots of assignments.
Pre-Requisites

• A solid math background.
• Some exposure to high level language
  coding, e.g., C, C++ etc.
• Preferred language for this course C++.
Algorithms
  LECTURE 1
  Analysis of Algorithms
  • Insertion sort
  • Asymptotic analysis
  • Merge sort
  • Recurrences
Analysis of algorithms
The theoretical study of computer-program
performance and resource usage.
What’s more important than performance?
 • modularity       • user-friendliness
 • correctness      • programmer time
 • maintainability  • simplicity
 • functionality    • extensibility
 • robustness       • reliability
Why study algorithms and
      performance?
• Algorithms help us to understand scalability.
• Performance often draws the line between what
  is feasible and what is impossible.
• Algorithmic mathematics provides a language
  for talking about program behavior.
• Performance is the currency of computing.
• The lessons of program performance generalize
  to other computing resources.
• Speed is fun!
The problem of sorting

Input: sequence a1, a2, …, an of numbers.

Output: permutation a'1, a'2, …, a'n such
that a'1  a'2 …  a'n .

          Example:
            Input: 8 2 4 9 3 6
            Output: 2 3 4 6 8 9
Insertion sort
               INSERTION-SORT (A, n)        A[1 . . n]
                  for j ← 2 to n
                        do key ← A[ j]
                           i←j–1
“pseudocode”               while i > 0 and A[i] > key
                                 do A[i+1] ← A[i]
                                    i←i–1
                           A[i+1] = key
Insertion sort
                   INSERTION-SORT (A, n)        A[1 . . n]
                      for j ← 2 to n
                            do key ← A[ j]
                               i←j–1
“pseudocode”                   while i > 0 and A[i] > key
                                     do A[i+1] ← A[i]
                                        i←i–1
                               A[i+1] = key
       1       i           j                          n
 A:
                          key
           sorted
Example of insertion sort
  8   2   4   9   3   6
Example of insertion sort
  8   2   4   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
  2   4   8   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
  2   4   8   9   3   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
  2   4   8   9   3   6
  2   3   4   8   9   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
  2   4   8   9   3   6
  2   3   4   8   9   6
Example of insertion sort
  8   2   4   9   3   6
  2   8   4   9   3   6
  2   4   8   9   3   6
  2   4   8   9   3   6
  2   3   4   8   9   6
  2   3   4   6   8   9 done
Running time

• The running time depends on the input: an
  already sorted sequence is easier to sort.
• Parameterize the running time by the size of
  the input, since short sequences are easier to
  sort than long ones.
• Generally, we seek upper bounds on the
  running time, because everybody likes a
  guarantee.
Kinds of analyses
Worst-case: (usually)
  • T(n) = maximum time of algorithm
    on any input of size n.
Average-case: (sometimes)
  • T(n) = expected time of algorithm
    over all inputs of size n.
  • Need assumption of statistical
    distribution of inputs.
Best-case: (bogus)
  • Cheat with a slow algorithm that
    works fast on some input.
Machine-independent time

What is insertion sort’s worst-case time?
• It depends on the speed of our computer:
    • relative speed (on the same machine),
    • absolute speed (on different machines).
BIG IDEA:
• Ignore machine-dependent constants.
• Look at growth of T(n) as n → ∞ .
          “Asymptotic Analysis”
-notation

Math:
 (g(n)) = { f (n) : there exist positive constants c1, c2, and
                    n0 such that 0  c1 g(n)  f (n)  c2 g(n)
                    for all n  n0 }
Engineering:
• Drop low-order terms; ignore leading constants.
• Example: 3n3 + 90n2 – 5n + 6046 = (n3)
Asymptotic performance
   When n gets large enough, a (n2) algorithm
   always beats a (n3) algorithm.
                           • We shouldn’t ignore
                             asymptotically slower
                             algorithms, however.
                           • Real-world design
                             situations often call for a
T(n)                         careful balancing of
                             engineering objectives.
                           • Asymptotic analysis is a
                             useful tool to help to
              n   n0         structure our thinking.
Insertion sort analysis
Worst case: Input reverse sorted.
              n
  T ( n)     ( j )  n 2       [arithmetic series]
             j 2
Average case: All permutations equally likely.
              n
  T ( n)     ( j / 2)  n 2 
             j 2
Is insertion sort a fast sorting algorithm?
• Moderately so, for small n.
• Not at all, for large n.
Merge sort

MERGE-SORT A[1 . . n]
  1. If n = 1, done.
  2. Recursively sort A[ 1 . . n/2 ]
     and A[ n/2+1 . . n ] .
  3. “Merge” the 2 sorted lists.

      Key subroutine: MERGE
Merging two sorted arrays
20 12
13 11
7   9
2   1
Merging two sorted arrays
20 12
13 11
7       9
2       1

    1
Merging two sorted arrays
20 12        20 12
13 11        13 11
7       9    7   9
2       1    2

    1
Merging two sorted arrays
20 12        20 12
13 11        13 11
7       9    7       9
2       1    2

    1            2
Merging two sorted arrays
20 12        20 12       20 12
13 11        13 11       13 11
7       9    7       9   7   9
2       1    2

    1            2
Merging two sorted arrays
20 12        20 12       20 12
13 11        13 11       13 11
7       9    7       9   7       9
2       1    2

    1            2           7
Merging two sorted arrays
20 12        20 12       20 12       20 12
13 11        13 11       13 11       13 11
7       9    7       9   7       9      9
2       1    2

    1            2           7
Merging two sorted arrays
20 12        20 12       20 12       20 12
13 11        13 11       13 11       13 11
7       9    7       9   7       9        9
2       1    2

    1            2           7        9
Merging two sorted arrays
20 12        20 12       20 12       20 12    20 12
13 11        13 11       13 11       13 11    13 11
7       9    7       9   7       9        9
2       1    2

    1            2           7        9
Merging two sorted arrays
20 12        20 12       20 12       20 12    20 12
13 11        13 11       13 11       13 11    13 11
7       9    7       9   7       9        9
2       1    2

    1            2           7        9        11
Merging two sorted arrays
20 12        20 12       20 12       20 12    20 12   20 12
13 11        13 11       13 11       13 11    13 11   13
7       9    7       9   7       9        9
2       1    2

    1            2           7        9        11
Merging two sorted arrays
20 12        20 12       20 12       20 12    20 12   20 12
13 11        13 11       13 11       13 11    13 11   13
7       9    7       9   7       9        9
2       1    2

    1            2           7        9        11          12
Merging two sorted arrays
20 12        20 12       20 12       20 12    20 12   20 12
13 11        13 11       13 11       13 11    13 11   13
7       9    7       9   7       9        9
2       1    2

    1            2           7        9        11          12

                 Time = (n) to merge a total
                  of n elements (linear time).
Analyzing merge sort

      T(n)    MERGE-SORT A[1 . . n]
        (1)   1. If n = 1, done.
      2T(n/2) 2. Recursively sort A[ 1 . . n/2 ]
Abuse            and A[ n/2+1 . . n ] .
        (n)   3. “Merge” the 2 sorted lists
  Sloppiness: Should be T( n/2 ) + T( n/2 ) ,
  but it turns out not to matter asymptotically.
Recurrence for merge sort
               (1) if n = 1;
     T(n) =
              2T(n/2) + (n) if n > 1.
• We shall usually omit stating the base
  case when T(n) = (1) for sufficiently
  small n, but only when it has no effect on
  the asymptotic solution to the recurrence.
• CLRS and Lecture 2 provide several ways
  to find a good upper bound on T(n).
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                       T(n)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                        cn
            T(n/2)              T(n/2)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                        cn
             cn/2                   cn/2

       T(n/4)    T(n/4)    T(n/4)      T(n/4)
Recursion tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                        cn
               cn/2                 cn/2

        cn/4          cn/4   cn/4          cn/4


       (1)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn
                cn/2                 cn/2
h = lg n cn/4          cn/4   cn/4          cn/4


        (1)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn                     cn
                cn/2                 cn/2
h = lg n cn/4          cn/4   cn/4          cn/4


        (1)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn                     cn
                cn/2                 cn/2          cn
h = lg n cn/4          cn/4   cn/4          cn/4


        (1)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn                     cn
                cn/2                 cn/2          cn
h = lg n cn/4          cn/4   cn/4          cn/4   cn




                                                   …
        (1)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn                     cn
                cn/2                  cn/2          cn
h = lg n cn/4          cn/4    cn/4          cn/4   cn




                                                    …
        (1)             #leaves = n                 (n)
Recursion tree
 Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
                         cn                     cn
                cn/2                  cn/2            cn
h = lg n cn/4          cn/4    cn/4          cn/4     cn




                                                     …
        (1)             #leaves = n                    (n)
                                       Total        (n lg n)
Conclusions

• (n lg n) grows more slowly than (n2).
• Therefore, merge sort asymptotically
  beats insertion sort in the worst case.
• In practice, merge sort beats insertion
  sort for n > 30 or so.
• Go test it out for yourself!

Mais conteúdo relacionado

Mais procurados

MySQL understand Indexes
MySQL understand IndexesMySQL understand Indexes
MySQL understand Indexes
Roy Yu
 
Two step equations
Two step equationsTwo step equations
Two step equations
Nene Thomas
 
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
ELMIR IVAN OZUNA LOPEZ
 
Pc12 sol c04_4-1
Pc12 sol c04_4-1Pc12 sol c04_4-1
Pc12 sol c04_4-1
Garden City
 
Understanding indexing-webinar-deck
Understanding indexing-webinar-deckUnderstanding indexing-webinar-deck
Understanding indexing-webinar-deck
Atner Yegorov
 

Mais procurados (20)

MySQL understand Indexes
MySQL understand IndexesMySQL understand Indexes
MySQL understand Indexes
 
Two step equations
Two step equationsTwo step equations
Two step equations
 
Pc12 sol c04_cp
Pc12 sol c04_cpPc12 sol c04_cp
Pc12 sol c04_cp
 
College Algebra Chapters 1 and 2
College Algebra Chapters 1 and 2College Algebra Chapters 1 and 2
College Algebra Chapters 1 and 2
 
How to Implement Distributed Data Store
How to Implement Distributed Data Store How to Implement Distributed Data Store
How to Implement Distributed Data Store
 
Day 11 slope
Day 11 slopeDay 11 slope
Day 11 slope
 
Homework packet
Homework packetHomework packet
Homework packet
 
Graph functions
Graph functionsGraph functions
Graph functions
 
Excel slide series - fractions introduction
Excel slide series -  fractions introductionExcel slide series -  fractions introduction
Excel slide series - fractions introduction
 
Ecc intro oct 2011
Ecc intro oct 2011Ecc intro oct 2011
Ecc intro oct 2011
 
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
Calculo y geometria analitica (larson hostetler-edwards) 8th ed - solutions m...
 
Lesson 52
Lesson 52Lesson 52
Lesson 52
 
Pc12 sol c04_4-1
Pc12 sol c04_4-1Pc12 sol c04_4-1
Pc12 sol c04_4-1
 
In-Database Predictive Analytics
In-Database Predictive AnalyticsIn-Database Predictive Analytics
In-Database Predictive Analytics
 
White-Box Testing on Methods
White-Box Testing on MethodsWhite-Box Testing on Methods
White-Box Testing on Methods
 
When Computers Don't Compute and Other Fun with Numbers
When Computers Don't Compute and Other Fun with NumbersWhen Computers Don't Compute and Other Fun with Numbers
When Computers Don't Compute and Other Fun with Numbers
 
Lesson 26: Optimization II: Data Fitting
Lesson 26: Optimization II: Data FittingLesson 26: Optimization II: Data Fitting
Lesson 26: Optimization II: Data Fitting
 
Understanding indexing-webinar-deck
Understanding indexing-webinar-deckUnderstanding indexing-webinar-deck
Understanding indexing-webinar-deck
 
Lesson 54
Lesson 54Lesson 54
Lesson 54
 
R演習補講 (2腕バンディット問題を題材に)
R演習補講 (2腕バンディット問題を題材に)R演習補講 (2腕バンディット問題を題材に)
R演習補講 (2腕バンディット問題を題材に)
 

Semelhante a 01 analysis-of-algorithms

Alg2.7 A Notes
Alg2.7 A NotesAlg2.7 A Notes
Alg2.7 A Notes
mbetzel
 
Lect11 Sorting
Lect11 SortingLect11 Sorting
Lect11 Sorting
ryokollll
 
Heapsortokkay
HeapsortokkayHeapsortokkay
Heapsortokkay
Remesha
 
Stacks Implementation and Examples
Stacks Implementation and ExamplesStacks Implementation and Examples
Stacks Implementation and Examples
greatqadirgee4u
 
Alg2.7 B Notes
Alg2.7 B NotesAlg2.7 B Notes
Alg2.7 B Notes
mbetzel
 

Semelhante a 01 analysis-of-algorithms (20)

Algorithim lec1.pptx
Algorithim lec1.pptxAlgorithim lec1.pptx
Algorithim lec1.pptx
 
sorting.pptx
sorting.pptxsorting.pptx
sorting.pptx
 
Sorting in data structures and algorithms , it has all the necessary points t...
Sorting in data structures and algorithms , it has all the necessary points t...Sorting in data structures and algorithms , it has all the necessary points t...
Sorting in data structures and algorithms , it has all the necessary points t...
 
Chapter 8 advanced sorting and hashing for print
Chapter 8 advanced sorting and hashing for printChapter 8 advanced sorting and hashing for print
Chapter 8 advanced sorting and hashing for print
 
Insert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C ProgrammingInsert Sort & Merge Sort Using C Programming
Insert Sort & Merge Sort Using C Programming
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
Alg2.7 A Notes
Alg2.7 A NotesAlg2.7 A Notes
Alg2.7 A Notes
 
Lect11 Sorting
Lect11 SortingLect11 Sorting
Lect11 Sorting
 
State Space Search
State Space SearchState Space Search
State Space Search
 
21 elementarysorts 2
21 elementarysorts 221 elementarysorts 2
21 elementarysorts 2
 
Fear and loathing with APL (oredev)
Fear and loathing with APL (oredev)Fear and loathing with APL (oredev)
Fear and loathing with APL (oredev)
 
Heapsortokkay
HeapsortokkayHeapsortokkay
Heapsortokkay
 
Rabotna tetratka 5 odd
Rabotna tetratka 5 oddRabotna tetratka 5 odd
Rabotna tetratka 5 odd
 
Stacks Implementation and Examples
Stacks Implementation and ExamplesStacks Implementation and Examples
Stacks Implementation and Examples
 
04 - 15 Jan - Heap Sort
04 - 15 Jan - Heap Sort04 - 15 Jan - Heap Sort
04 - 15 Jan - Heap Sort
 
04 - 15 Jan - Heap Sort
04 - 15 Jan - Heap Sort04 - 15 Jan - Heap Sort
04 - 15 Jan - Heap Sort
 
Seq2grid aaai 2021
Seq2grid aaai 2021Seq2grid aaai 2021
Seq2grid aaai 2021
 
Alg2.7 B Notes
Alg2.7 B NotesAlg2.7 B Notes
Alg2.7 B Notes
 
Sorting and Hashing Algorithm full pdfs.
Sorting and Hashing Algorithm full pdfs.Sorting and Hashing Algorithm full pdfs.
Sorting and Hashing Algorithm full pdfs.
 
Sortings .pptx
Sortings .pptxSortings .pptx
Sortings .pptx
 

Último

Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 

Último (20)

Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 

01 analysis-of-algorithms

  • 1. Algoritm (CSC 206, Autumn’06) • Text (Required): Introduction to Algorithms by Cormen, Lieserson, Rivest & Stein • Instructor: Dr. Ali Sabbir • Office Rm 5009 D.
  • 2. Grading • Attendance is required • At least 1 midterm. • Exactly 1 in class Final. • Several quizzes (Announced and Unannounced) • Lots of assignments.
  • 3. Pre-Requisites • A solid math background. • Some exposure to high level language coding, e.g., C, C++ etc. • Preferred language for this course C++.
  • 4. Algorithms LECTURE 1 Analysis of Algorithms • Insertion sort • Asymptotic analysis • Merge sort • Recurrences
  • 5. Analysis of algorithms The theoretical study of computer-program performance and resource usage. What’s more important than performance? • modularity • user-friendliness • correctness • programmer time • maintainability • simplicity • functionality • extensibility • robustness • reliability
  • 6. Why study algorithms and performance? • Algorithms help us to understand scalability. • Performance often draws the line between what is feasible and what is impossible. • Algorithmic mathematics provides a language for talking about program behavior. • Performance is the currency of computing. • The lessons of program performance generalize to other computing resources. • Speed is fun!
  • 7. The problem of sorting Input: sequence a1, a2, …, an of numbers. Output: permutation a'1, a'2, …, a'n such that a'1  a'2 …  a'n . Example: Input: 8 2 4 9 3 6 Output: 2 3 4 6 8 9
  • 8. Insertion sort INSERTION-SORT (A, n) A[1 . . n] for j ← 2 to n do key ← A[ j] i←j–1 “pseudocode” while i > 0 and A[i] > key do A[i+1] ← A[i] i←i–1 A[i+1] = key
  • 9. Insertion sort INSERTION-SORT (A, n) A[1 . . n] for j ← 2 to n do key ← A[ j] i←j–1 “pseudocode” while i > 0 and A[i] > key do A[i+1] ← A[i] i←i–1 A[i+1] = key 1 i j n A: key sorted
  • 10. Example of insertion sort 8 2 4 9 3 6
  • 11. Example of insertion sort 8 2 4 9 3 6
  • 12. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6
  • 13. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6
  • 14. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6
  • 15. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6
  • 16. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6 2 4 8 9 3 6
  • 17. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6 2 4 8 9 3 6
  • 18. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6 2 4 8 9 3 6 2 3 4 8 9 6
  • 19. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6 2 4 8 9 3 6 2 3 4 8 9 6
  • 20. Example of insertion sort 8 2 4 9 3 6 2 8 4 9 3 6 2 4 8 9 3 6 2 4 8 9 3 6 2 3 4 8 9 6 2 3 4 6 8 9 done
  • 21. Running time • The running time depends on the input: an already sorted sequence is easier to sort. • Parameterize the running time by the size of the input, since short sequences are easier to sort than long ones. • Generally, we seek upper bounds on the running time, because everybody likes a guarantee.
  • 22. Kinds of analyses Worst-case: (usually) • T(n) = maximum time of algorithm on any input of size n. Average-case: (sometimes) • T(n) = expected time of algorithm over all inputs of size n. • Need assumption of statistical distribution of inputs. Best-case: (bogus) • Cheat with a slow algorithm that works fast on some input.
  • 23. Machine-independent time What is insertion sort’s worst-case time? • It depends on the speed of our computer: • relative speed (on the same machine), • absolute speed (on different machines). BIG IDEA: • Ignore machine-dependent constants. • Look at growth of T(n) as n → ∞ . “Asymptotic Analysis”
  • 24. -notation Math: (g(n)) = { f (n) : there exist positive constants c1, c2, and n0 such that 0  c1 g(n)  f (n)  c2 g(n) for all n  n0 } Engineering: • Drop low-order terms; ignore leading constants. • Example: 3n3 + 90n2 – 5n + 6046 = (n3)
  • 25. Asymptotic performance When n gets large enough, a (n2) algorithm always beats a (n3) algorithm. • We shouldn’t ignore asymptotically slower algorithms, however. • Real-world design situations often call for a T(n) careful balancing of engineering objectives. • Asymptotic analysis is a useful tool to help to n n0 structure our thinking.
  • 26. Insertion sort analysis Worst case: Input reverse sorted. n T ( n)   ( j )  n 2  [arithmetic series] j 2 Average case: All permutations equally likely. n T ( n)   ( j / 2)  n 2  j 2 Is insertion sort a fast sorting algorithm? • Moderately so, for small n. • Not at all, for large n.
  • 27. Merge sort MERGE-SORT A[1 . . n] 1. If n = 1, done. 2. Recursively sort A[ 1 . . n/2 ] and A[ n/2+1 . . n ] . 3. “Merge” the 2 sorted lists. Key subroutine: MERGE
  • 28. Merging two sorted arrays 20 12 13 11 7 9 2 1
  • 29. Merging two sorted arrays 20 12 13 11 7 9 2 1 1
  • 30. Merging two sorted arrays 20 12 20 12 13 11 13 11 7 9 7 9 2 1 2 1
  • 31. Merging two sorted arrays 20 12 20 12 13 11 13 11 7 9 7 9 2 1 2 1 2
  • 32. Merging two sorted arrays 20 12 20 12 20 12 13 11 13 11 13 11 7 9 7 9 7 9 2 1 2 1 2
  • 33. Merging two sorted arrays 20 12 20 12 20 12 13 11 13 11 13 11 7 9 7 9 7 9 2 1 2 1 2 7
  • 34. Merging two sorted arrays 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7
  • 35. Merging two sorted arrays 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9
  • 36. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9
  • 37. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11
  • 38. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11
  • 39. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 12
  • 40. Merging two sorted arrays 20 12 20 12 20 12 20 12 20 12 20 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 12 Time = (n) to merge a total of n elements (linear time).
  • 41. Analyzing merge sort T(n) MERGE-SORT A[1 . . n] (1) 1. If n = 1, done. 2T(n/2) 2. Recursively sort A[ 1 . . n/2 ] Abuse and A[ n/2+1 . . n ] . (n) 3. “Merge” the 2 sorted lists Sloppiness: Should be T( n/2 ) + T( n/2 ) , but it turns out not to matter asymptotically.
  • 42. Recurrence for merge sort (1) if n = 1; T(n) = 2T(n/2) + (n) if n > 1. • We shall usually omit stating the base case when T(n) = (1) for sufficiently small n, but only when it has no effect on the asymptotic solution to the recurrence. • CLRS and Lecture 2 provide several ways to find a good upper bound on T(n).
  • 43. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
  • 44. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. T(n)
  • 45. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn T(n/2) T(n/2)
  • 46. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn/2 cn/2 T(n/4) T(n/4) T(n/4) T(n/4)
  • 47. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn/2 cn/2 cn/4 cn/4 cn/4 cn/4 (1)
  • 48. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn/2 cn/2 h = lg n cn/4 cn/4 cn/4 cn/4 (1)
  • 49. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn cn/2 cn/2 h = lg n cn/4 cn/4 cn/4 cn/4 (1)
  • 50. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn cn/2 cn/2 cn h = lg n cn/4 cn/4 cn/4 cn/4 (1)
  • 51. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn cn/2 cn/2 cn h = lg n cn/4 cn/4 cn/4 cn/4 cn … (1)
  • 52. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn cn/2 cn/2 cn h = lg n cn/4 cn/4 cn/4 cn/4 cn … (1) #leaves = n (n)
  • 53. Recursion tree Solve T(n) = 2T(n/2) + cn, where c > 0 is constant. cn cn cn/2 cn/2 cn h = lg n cn/4 cn/4 cn/4 cn/4 cn … (1) #leaves = n (n) Total (n lg n)
  • 54. Conclusions • (n lg n) grows more slowly than (n2). • Therefore, merge sort asymptotically beats insertion sort in the worst case. • In practice, merge sort beats insertion sort for n > 30 or so. • Go test it out for yourself!