csc165 week 8
play

CSC165 Week 8 Larry Zhang, October 28, 2014 todays outline formal - PowerPoint PPT Presentation

CSC165 Week 8 Larry Zhang, October 28, 2014 todays outline formal definition of O, proving algorithm complexity problem solving session formal definitions of O and recap O(n) set of functions that grow no faster than n


  1. CSC165 Week 8 Larry Zhang, October 28, 2014

  2. today’s outline ➔ formal definition of O, Ω ➔ proving algorithm complexity ➔ problem solving session

  3. formal definitions of O and Ω

  4. recap O(n²) set of functions that grow no faster than n² ➔ count the number of steps ➔ constant factors don’t matter ➔ only highest-order term matter These functions are in O(n²)

  5. the formal definition of O(n²) Beyond breakpoint B , cn² f(n) is upper-bounded by cn² , where c is some f(n) wisely chosen constant multiplier. B

  6. the formal definition of O(n²) Simple example: prove 700n² ∈ O(n²)

  7. the formal definition of Ω(n²) O(n²): set of functions that grow no faster than n² Ω(n²): set of functions that grow no slower than n² ϴ (n²): set of functions that are in both O(n²) and Ω(n²) (functions growing as fast as n² )

  8. growth rate ranking of typical functions grow fast grow slowly

  9. analyse a sorting algorithm

  10. insertion sort ➔ grow a sorted list inside an unsorted list ➔ in each iteration ◆ remove an element from the unsorted part ◆ insert it into the position it belongs to in the sorted part see animation at: http://en.wikipedia.org/wiki/Insertion_sort

  11. insertion sort def IS(A): ‘’’sort the elements in A in non-decreasing order’’’ n: size of A 1. i = 1 2. while i < len(A): 3. t = A[i] # take red square out 4. j = i 5. while j > 0 and A[j-1] > t: 6. A[j] = A[j-1] # shift 7. j = j - 1 8. A[j] = t # put red square in 9. i = i + 1 # next element to be red-squared

  12. insert sort worst case runtime

  13. Prove the worst case complexity of insertion sort is O(n²) Proof:

  14. analyse another algorithm

  15. maximum slice ➔ input: L , a list of numbers ➔ output: the maximum sum over slices of L L = [-2, -3, 4, -1, 6, -3] max = 4 + (-1) + 6 = 9

  16. def max_sum(L): ‘’’ maximum sum over slices of L’’’ 1. max = 0 2. i = 0 3. while i < len(L): 4. j = i + 1 5. while j <= len(L): 6. sum = 0 7. k = i 8. while k < j: 9. sum = sum + L[k] 10. k = k + 1 11. if sum > max: 12. max = sum 13. j = j + 1 14. i = i + 1 15. return max

  17. def max_sum(L): ‘’’ maximum sum over slices of L’’’ upper bound W MS (n) 1. max = 0 # line 8-10, at most n iters 2. i = 0 3. while i < len(L): 4. j = i + 1 # line 5-13, at most n iters 5. while j <= len(L): 6. sum = 0 7. k = i 8. while k < j: 9. sum = sum + L[k] # line 3-14, at most n iters 10. k = k + 1 11. if sum > max: 12. max = sum 13. j = j + 1 14. i = i + 1 # line 3-14, at most n iters 15. return max

  18. def max_sum(L): ‘’’ maximum sum over slices of L’’’ lower bound W MS (n) 1. max = 0 0 n-1 L: 2. i = 0 3. while i < len(L): # first loop (i), at least 4. j = i + 1 iterations. 5. while j <= len(L): (pick i in red zone) 6. sum = 0 7. k = i # second loop (j), at least 8. while k < j: iterations 9. sum = sum + L[k] (pick j in blue zone) 10. k = k + 1 11. if sum > max: # third loop (k), at least 12. max = sum iterations 13. j = j + 1 (slice [i:j] is at least this long) 14. i = i + 1 15. return max

  19. takeaway ➔ when finding upper-bound , it is OK to over-estimate the number of steps, as long as the over-estimated number is upper bounded. ➔ when finding lower-bound , it is OK to under-estimate the number of steps, as long as the under-estimated number is lower-bounded

  20. problem solving: penny piles

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