SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
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!

Contenu connexe

Tendances

MySQL understand Indexes
MySQL understand IndexesMySQL understand Indexes
MySQL understand IndexesRoy Yu
 
Two step equations
Two step equationsTwo step equations
Two step equationsNene Thomas
 
College Algebra Chapters 1 and 2
College Algebra Chapters 1 and 2College Algebra Chapters 1 and 2
College Algebra Chapters 1 and 2jeanperryshields
 
How to Implement Distributed Data Store
How to Implement Distributed Data Store How to Implement Distributed Data Store
How to Implement Distributed Data Store Philip Zhong
 
Graph functions
Graph functionsGraph functions
Graph functionsdaisy_yani
 
Excel slide series - fractions introduction
Excel slide series -  fractions introductionExcel slide series -  fractions introduction
Excel slide series - fractions introductionPuworkUtara OnSlideshare
 
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-1Garden City
 
In-Database Predictive Analytics
In-Database Predictive AnalyticsIn-Database Predictive Analytics
In-Database Predictive AnalyticsJohn De Goes
 
White-Box Testing on Methods
White-Box Testing on MethodsWhite-Box Testing on Methods
White-Box Testing on MethodsMinhas Kamal
 
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 NumbersPDE1D
 
Lesson 26: Optimization II: Data Fitting
Lesson 26: Optimization II: Data FittingLesson 26: Optimization II: Data Fitting
Lesson 26: Optimization II: Data FittingMatthew Leingang
 
Understanding indexing-webinar-deck
Understanding indexing-webinar-deckUnderstanding indexing-webinar-deck
Understanding indexing-webinar-deckAtner Yegorov
 
R演習補講 (2腕バンディット問題を題材に)
R演習補講 (2腕バンディット問題を題材に)R演習補講 (2腕バンディット問題を題材に)
R演習補講 (2腕バンディット問題を題材に)Masatoshi Yoshida
 

Tendances (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腕バンディット問題を題材に)
 

Similaire à 01 analysis-of-algorithms

Algorithim lec1.pptx
Algorithim lec1.pptxAlgorithim lec1.pptx
Algorithim lec1.pptxrediet43
 
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...BhumikaBiyani1
 
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 printAbdii Rashid
 
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 Programmingchandankumar364348
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithmspppepito86
 
Alg2.7 A Notes
Alg2.7 A NotesAlg2.7 A Notes
Alg2.7 A Notesmbetzel
 
Lect11 Sorting
Lect11 SortingLect11 Sorting
Lect11 Sortingryokollll
 
State Space Search
State Space SearchState Space Search
State Space SearchJasmine Chen
 
21 elementarysorts 2
21 elementarysorts 221 elementarysorts 2
21 elementarysorts 2Hoang Nguyen
 
Fear and loathing with APL (oredev)
Fear and loathing with APL (oredev)Fear and loathing with APL (oredev)
Fear and loathing with APL (oredev)Yan Cui
 
Heapsortokkay
HeapsortokkayHeapsortokkay
HeapsortokkayRemesha
 
Rabotna tetratka 5 odd
Rabotna tetratka 5 oddRabotna tetratka 5 odd
Rabotna tetratka 5 oddMira Trajkoska
 
Stacks Implementation and Examples
Stacks Implementation and ExamplesStacks Implementation and Examples
Stacks Implementation and Examplesgreatqadirgee4u
 
Seq2grid aaai 2021
Seq2grid aaai 2021Seq2grid aaai 2021
Seq2grid aaai 2021segwangkim
 
Alg2.7 B Notes
Alg2.7 B NotesAlg2.7 B Notes
Alg2.7 B Notesmbetzel
 
Sorting and Hashing Algorithm full pdfs.
Sorting and Hashing Algorithm full pdfs.Sorting and Hashing Algorithm full pdfs.
Sorting and Hashing Algorithm full pdfs.NikhilSoni177492
 

Similaire à 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
 

Dernier

This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxEsquimalt MFRC
 
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 POSCeline George
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - Englishneillewis46
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structuredhanjurrannsibayan2
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsKarakKing
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the ClassroomPooky Knightsmith
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
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...Association for Project Management
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxCeline George
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024Elizabeth Walsh
 

Dernier (20)

This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).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
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
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
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
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...
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 

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!