algorithms and datastructures
play

Algorithms and Datastructures Runtime analysis Minsort / Heapsort, - PowerPoint PPT Presentation

Algorithms and Datastructures Runtime analysis Minsort / Heapsort, Induction Albert-Ludwigs-Universitt Freiburg Prof. Dr. Rolf Backofen Bioinformatics Group / Department of Computer Science Algorithms and Datastructures, October 2018


  1. Algorithms and Datastructures Runtime analysis Minsort / Heapsort, Induction Albert-Ludwigs-Universität Freiburg Prof. Dr. Rolf Backofen Bioinformatics Group / Department of Computer Science Algorithms and Datastructures, October 2018

  2. Structure Runtime Example Minsort Basic Operations Runtime analysis Minsort Heapsort Introduction to Induction Logarithms October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 2 / 47

  3. Runtime analysis - Minsort How long does the program run? In the last lecture we had a schematic Observation: it is going to be “disproportionately” slower the more numbers are being sorted How can we say more precisely what is happening? October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 4 / 47

  4. Runtime analysis - Minsort How can we analyze the runtime? Ideally we have a formula which provides the runtime of the program for a specific input Problem: the runtime is depends on many variables, especially: What kind of computer the code is executed on What is running in the background Which compiler is used to compile the code Abstraction 1: analyze the number of basic operations, rather than analyzing the runtime October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 5 / 47

  5. Basic Operations Incomplete list of basic operations: Arithmetic operation, for example: a + b Assignment of variables, for example: x = y Function call, for example: minsort(lst) October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 7 / 47

  6. Basic Operations Intuitive: Better: Best: lines of code lines of machine process cycles code Important: The actual runtime has to be roughly proportional to the number of operations. October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 8 / 47

  7. Runtime analysis - Minsort How many operations does Minsort need? Abstraction 2: we calculate the upper (lower) bound, rather than exactly counting the number of operations Reason : runtime is approximated by number of basic operations, but we can still infer: Upper bound Lower bound Basic Assumption: n is size of the input data (i.e. array) T ( n ) number of operations for input n October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 10 / 47

  8. Runtime analysis - Minsort How many operations does Minsort need? Observation: the number of operations depends only on the size n of the array and not on the content! Claim: there are constants C 1 and C 2 such that: C 1 · n 2 ≤ T ( n ) ≤ C 2 · n 2 This is called “quadratic runtime” (due to n 2 ) October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 11 / 47

  9. Runtime Example number of operations C 2 =7/2 could have been larger or small 350 (exact value not relevant) 300 250 200 150 100 50 C 1 =1/2 could have been choosen smaller (not 0 relevant), but not larger 0 2 4 6 8 10 number of input elements n October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 12 / 47

  10. Runtime analysis - Minsort We declare: Runtime of operations: T ( n ) Number of Elements: n Constants: C 1 (lower bound), C 2 (upper bound) C 1 · n 2 ≤ T ( n ) ≤ C 2 · n 2 Number of operations in round i : T i 1 2 3 12 7 4 6 10 8 15 14 5 11 9 13 Figure: Minsort at iteration i = 4. We have to check n − 3 elements October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 13 / 47

  11. Runtime analysis - Minsort Runtime for each n − 3 elements left iteration: T 1 ≤ C ′ 2 · ( n − 0) T 2 ≤ C ′ 2 · ( n − 1) T 3 ≤ C ′ 2 · ( n − 2) T 4 ≤ C ′ 2 · ( n − 3) . . . 1 2 3 12 7 4 6 10 8 15 14 5 11 9 13 T n − 1 ≤ C ′ 2 · 2 Figure: Minsort at iteration i = 4 T n ≤ C ′ 2 · 1 n � � T ( n ) = C ′ ∑ C ′ 2 · ( T 1 + ··· + T n ) ≤ 2 · i i =1 October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 14 / 47

  12. Runtime analysis - Minsort Alternative: Analyse the Code: def minsort ( elements ) : len ( elements ) − 1) : f o r i in range (0 , minimum = i n-i-1 f o r j in range ( i +1 , len ( elements ) ) : const. i f elements [ j ] < elements [ minimum ] : n-1 times minimum = j runtime times i f minimum != i : elements [ i ] , elements [ minimum ] = \ elements [ minimum ] , elements [ i ] return elements n − 2 n − 1 n − 2 n − 1 n C ′ ( n − i − 1) · C ′ ( n − i ) · C ′ i · C ′ ∑ ∑ ∑ ∑ ∑ T ( n ) ≤ 2 = 2 = 2 ≤ 2 i =0 j = i +1 i =0 i =1 i =1 Remark : C ′ 2 is cost of comparison ⇒ assumed constant October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 15 / 47

  13. Runtime analysis - Minsort Proof of upper bound: T ( n ) ≤ C 2 · n 2 n C ′ ∑ T ( n ) 2 · i ≤ i =1 n C ′ ∑ = i 2 · i =1 Small Gauss sum ⇓ 2 · n ( n +1) C ′ = 2 2 · n ( n + n ) C ′ , 1 ≤ n ≤ 2 2 · 2 · n 2 C ′ C ′ 2 · n 2 = = 2 October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 16 / 47

  14. Runtime analysis - Minsort Proof of lower bound: C 1 · n 2 ≤ T ( n ) Like for the upper bound there exists a C 1 . Summation analysis is the same, only final approximation differs n − 1 n − 1 C ′ 1 · ( n − i ) = C ′ ∑ ∑ T ( n ) i ≥ 1 i =1 i =1 1 · ( n − 1) · n How do we get to n 2 ? C ′ ≥ 2 n − 1 ≥ n 2 for n ≥ 2 ⇓ 2 · 2 = C ′ 1 · n · n C ′ 4 · n 2 1 ≥ October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 18 / 47

  15. Runtime analysis - Minsort Runtime Analysis: 2 · n 2 T ( n ) ≤ C ′ Upper bound: C ′ 4 · n 2 ≤ T ( n ) 1 Lower bound: Summarized: C ′ 4 · n 2 ≤ T ( n ) ≤ C ′ 1 2 · n 2 Quadratic runtime proven: C 1 · n 2 ≤ T ( n ) ≤ C 2 · n 2 October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 19 / 47

  16. Runtime Example The runtime is growing quadratically with the number of elements n in the list With constants C 1 and C 2 for which C 1 · n 2 ≤ T ( n ) ≤ C 2 · n 2 3 × elements ⇒ 9 × runtime C = 1ns (1 simple instruction ≈ 1ns) n = 10 6 (1 million numbers = 4MB with 4B / number) C · n 2 = 10 − 9 s · 10 12 = 10 3 s = 16 . 7min n = 10 9 (1 billion numbers = 4GB) C · n 2 = 10 − 9 s · 10 18 = 10 9 s = 31 . 7 years Quadratic runtime = “big” problems unsolvable October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 20 / 47

  17. Runtime - Heapsort Intuitive to extract minimum: Minsort: to determine the minimum value we have to iterate through all the unsorted elements. Heapsort: the root node is always the smallest (minheap). We only need to repair a part of the full tree after the delete operation. Formal: Let T( n ) be the runtime for the Heapsort algorithm with n elements On the next pages we will proof T ( n ) ≤ C · n log 2 n October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 22 / 47

  18. Runtime - Heapsort Depth of a binary tree: Root Depth d : longest path through the tree Complete binary tree has n = 2 d − 1 nodes Example: d = 4 Leaves ⇒ n = 2 4 − 1 = 15 Figure: Binary tree with 15 nodes October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 23 / 47

  19. Induction Basics: You want to show that assumption A ( n ) is valid ∀ n ∈ N We show induction in two steps: 1 Induction basis: we show that our assumption is valid for one value (for example: n = 1 , A (1)). 2 Induction step: we show that the assumption is valid for all n (normally one step forward: n = n +1 , A (1) ,..., A ( n )). If both has been proven, then A ( n ) holds for all natural numbers n by induction October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 25 / 47

  20. Induction - Example 1 Claim: A complete binary tree of depth d has v ( d ) = 2 d − 1 nodes Induction basis: assumption holds for d = 1 Root v (1) = 2 1 − 1 = 1 ⇒ correct � Figure: Tree of depth 1 has 1 node October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 26 / 47

  21. Induction - Example 1 Number of nodes v ( d ) in a binary tree with depth d : Induction assumption: v ( d ) = 2 d − 1 Induction basis: v (1) = 2 d − 1 = 2 1 − 1 = 1 � Induction step: to show for d := d +1 Root v ( d +1) = 2 · v ( d )+1 � � 2 d − 1 = 2 · +1 d +1 d = 2 d +1 − 2+1 v ( d ) v ( d ) = 2 d +1 − 1 � Figure: binary tree with subtrees ⇒ By induction: v ( d ) = 2 d − 1 ∀ d ∈ N � October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 27 / 47

  22. Runtime - Heapsort Heapsort has the following steps: Initially: heapify list of n elements Then: until all n elements are sorted Remove root (=minimum element) Move last leaf to root position Repair heap by sifting October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 29 / 47

  23. Runtime - Heapsort Heapify Runtime of heapify depends on depth d : Depth 1 → 2 0 nodes Depth 2 → 2 1 nodes Depth 3 → 2 2 nodes Depth 4 → 2 3 nodes Runtime of heapify with depth of d : No costs at depth d with 2 d − 1 (or less) nodes The cost for sifting with depth 1 is at most 1 C per node In general: sifting costs are linear with path length and number of nodes October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 30 / 47

  24. Runtime - Heapsort Heapify Heapify total runtime: Depth 1 → 2 0 nodes Depth 2 → 2 1 nodes Depth 3 → 2 2 nodes Depth 4 → 2 3 nodes Depth d → 2 d − 1 nodes Generally: Depth Nodes Path length Costs per node Upper bound 2 d − 1 d 0 ≤ C · 0 ≤ C · 1 2 d − 2 d − 1 1 ≤ C · 1 Standard ≤ C · 2 2 d − 3 d − 2 2 ≤ C · 2 Equation ≤ C · 3 2 d − 4 d − 3 3 ≤ C · 3 ≤ C · 4 d d � C · ( i − 1) · 2 d − i � � C · i · 2 d − i � ∑ ∑ In total: T ( d ) ≤ ≤ i =1 i =1 October 2018 Prof. Dr. Rolf Backofen – beamer-ufcd 31 / 47

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend