algorithms slides
play

Algorithms Slides Emanuele Viola 2009 present Released under - PowerPoint PPT Presentation

Algorithms Slides Emanuele Viola 2009 present Released under Creative Commons License Attribution -Noncommercial-No Derivative Works 3.0 United States http://creativecommons.org/licenses/by-nc-nd/3.0/us/ Also, let me know if you use


  1. Algorithms Slides Emanuele Viola 2009 – present Released under Creative Commons License “Attribution -Noncommercial-No Derivative Works 3.0 United States” http://creativecommons.org/licenses/by-nc-nd/3.0/us/ Also, let me know if you use them.

  2. Index The slides are under construction. The latest version is at http://www.ccs.neu.edu/home/viola/

  3. Success stories of algorithms: Shortest path (Google maps) Pattern matching (Text editors, genome) Fast-fourier transform (Audio/video processing) http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed

  4. This class: General techniques: Divide-and-conquer, dynamic programming, data structures amortized analysis Various topics: Sorting Matrixes Graphs Polynomials

  5. What is an algorithm? ● Informally, an algorithm for a function f : A → B (theproblem) is a simple, step-by-step, procedure that computes f(x) on every input x

  6. What operations are simple? ● If, for, while, etc. ● Direct addressing: A[n], the n-entry of arrayA ● Basic arithmetic and logic on variables x * y, x + y, x AND y, etc. – – Simple in practice only if the variables are “small”. For example, 64 bits on current PC – Sometimes we get cleaner analysis if we consider them simple regardless of size of variables.

  7. Measuring performance ● We bound the running time, or the memory (space) used. ● These are measured as a function of the input length. ● Makes sense: need to at least read the input! ● The input length is usually denoted n ● We are interested in which functions of n grow faster

  8. 2 n n 1.5 n 2 n log 2 (n) n log(n) n

  9. Asymptotic analysis ● The exact time depends on the actual machine ● We ignore constant factors, to have more robust theory that applies to most computer ● Example: on my computer it takes 67 n + 15 operations, on yours 58 n – 15, but that's about the same ● We now give definitions that make this precise

  10. Big-Oh Definition: f(n) = O(g(n)) if there are ( ∃ ) constants c, n 0 such that f(n) ≤ c ∙g(n), for every ( ∀ ) n ≥ n 0 . Meaning: f grows no faster than g, up to constant factors

  11. Big-Oh Definition: f(n) = O(g(n)) if there are ( ∃ ) constants c, n 0 such that f(n) ≤ c ∙g(n), for every ( ∀ ) n ≥ n 0 . Example 1: 5n + 2n 2 + log(n) = O(n 2 ) ?

  12. Big-Oh Definition: f(n) = O(g(n)) if there are ( ∃ ) constants c, n 0 such that f(n) ≤ c ∙g(n), for every ( ∀ ) n ≥ n 0 . Example 1: 5n + 2n 2 + log(n) = O(n 2 ) True Pick c = ?

  13. Big-Oh Definition: f(n) = O(g(n)) if there are ( ∃ ) constants c, n 0 such that f(n) ≤ c ∙g(n), for every ( ∀ ) n ≥ n 0 . Example 1: 5n + 2n 2 + log(n) = O(n 2 ) True Pick c = 3. For large enough n, 5n + log(n) ≤ n 2 . Any c > 2 would work.

  14. Example 2: 100n 2 = O(2 n ) ?

  15. Example 2: 100n 2 = O(2 n ) True Pick c = ?

  16. Example 2: 100n 2 = O(2 n ) True Pick c = 1. Any c > 0 would work, for large enough n.

  17. Example 3: n 2 log n = O(n 2 ) ?

  18. Example 3: n 2 log n ≠ O(n 2 )  c, n 0  n ≥ n 0 such that n 2 log n > c n 2 . n > 2 c ⇨ n 2 log n > n 2 c

  19. Example 4: 2 n = O(2 n/2 ) ?

  20. Example 4: 2 n ≠ O(2 n/2 ).  c, n 0  n ≥ n 0 such that 2 n > c∙2 n/2 . Pick any n > 2 log c 2 n = 2 n/2 2 n/2 > c∙2 n/2 .

  21. ● n log n = O(n 2 ) ? n 2 = O(n 1.5 log10n) ? ● 2 n = O(n 1000000 )? ● (√2) log n = O(n 1/3 ) ? ● n log log n = O((log n) log n )? ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  22. ● n log n = O(n 2 ). n 2 = O(n 1.5 log10n) ? ● 2 n = O(n 1000000 )? ● (√2) log n = O(n 1/3 ) ? ● n log log n = O((log n) log n )? ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  23. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n = O(n 1000000 )? ● (√2) log n = O(n 1/3 ) ? ● n log log n = O((log n) log n )? ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  24. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ) ● (√2) log n = O(n 1/3 ) ? ● n log log n = O((log n) log n )? ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  25. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n = O(n 1/3 ) ? (√2) log n = n 1/2 ≠ O(n 1/3 ) ● n log log n = O((log n) log n )? ● 2 n = O(4 log n ) ? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  26. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n )? ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  27. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = n log log n = O((log n) log n )? ● 2 logn. log log n = 2 n = O(4 log n )? ● (log n) log n . n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  28. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n = O(4 log n )? ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  29. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● log n ● 2 n = O(4 log n ) ? 4 log n =2 2log n 2 n =2 2 . n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  30. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n ≠ O(4 logn ). ● n! = O(2 n ) ? ● n! = O(n n ) ? ● n2 n = O(2 n log n ) ? ●

  31. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n ≠ O(4 logn ). ● n! ≠ O(2 n ). 2.5 √n (n/e) n ≤ n! ≤ 2.8 √n (n/e) n ● n! = O(n n ) ? ● ● n2 n = O(2 n log n ) ?

  32. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n ≠ O(4 logn ). ● n! ≠ O(2 n ). ● n! = O(n n ). ● n2 n = O(2 n log n ) ? ●

  33. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n ≠ O(4 logn ). ● n! ≠ O(2 n ). ● n! = O(n n ). ● n2 n = O(2 n log n ) ? n2 n = 2 log n+n . ●

  34. ● n log n = O(n 2 ). n 2 ≠ O(n 1.5 log10n). ● 2 n ≠ O(n 1000000 ). ● (√2) log n ≠ O(n 1/3 ). ● n log log n = O((log n) log n ). ● 2 n ≠ O(4 logn ). ● n! ≠ O(2 n ). ● n! = O(n n ). ● n2 n = O(2 n log n ). ●

  35. Big-omega Definition: f(n) = Ω (g(n)) means  c, n 0 > 0  n ≥ n 0 , f(n) ≥ c ∙g(n). Meaning: f grows no slower than g, up to constant factors

  36. Big-omega Definition: f(n) = Ω (g(n)) means  c, n 0 > 0  n ≥ n 0 , f(n) ≥ c ∙g(n). Example 1: 0.01 n = Ω (log n) ?

  37. Big-omega Definition: f(n) = Ω (g(n)) means  c, n 0 > 0  n ≥ n 0 , f(n) ≥ c ∙g(n). Example 1: 0.01 n = Ω (log n) True Pick c = 1. Any c > 0 would work

  38. Example 2: n 2 /100 = Ω (n log n)?

  39. Example 2: n 2 /100 = Ω (n log n). c = 1/100 Again, any c would work.

  40. Example 2: n 2 /100 = Ω (n log n). c = 1/100 Again, any c would work. Example 3: √n = Ω(n/100) ?

  41. Example 2: n 2 /100 = Ω ( n log n). c = 1/100 Again, any c would work. Example 3: √n ≠ Ω(n/100)  c, n 0  n ≥ n 0 such that , √ n < c∙ n/100.

  42. Example 4: 2 n/2 = Ω(2 n ) ?

  43. Example 4: 2 n/2 ≠ Ω(2 n )  c, n 0  n ≥ n 0 such that 2 n/2 < c∙2 n .

  44. Big-omega, Big-Oh Note: f(n) = Ω (g(n)) ⇔ g(n) = O( f(n)) f(n) = O (g(n)) ⇔ g(n) = Ω ( f(n)). Example: 10 log n = O(n), and n = Ω (10 log n). 5n = O(n), and n = Ω(5n)

  45. Theta Definition: f(n) = Θ (g(n)) means  n 0 , c 1 , c 2 > 0  n ≥ n 0 , f(n) ≤ c 1 ∙g(n) and g(n) ≤ c 2 ∙f(n). Meaning: f grows like g, up to constant factors

  46. Theta Definition: f(n) = Θ (g(n)) means  n 0 , c 1 , c 2 > 0  n ≥ n 0 , f(n) ≤ c 1 ∙g(n) and g(n) ≤ c 2 ∙f(n). Example: n = Θ (n + log n) ?

  47. Theta Definition: f(n) = Θ (g(n)) means  n 0 , c 1 , c 2 > 0  n ≥ n 0 , f(n) ≤ c 1 ∙g(n) and g(n) ≤ c 2 ∙f(n). Example: n = Θ (n + log n) True c 1 = ?, c 2 = ? n 0 = ? such that  n ≥ n 0 , n ≤ c 1 (n + log n) and n + log n ≤ c 2 n.

  48. Theta Definition: f(n) = Θ (g(n)) means  n 0 , c 1 , c 2 > 0  n ≥ n 0 , f(n) ≤ c 1 ∙g(n) and g(n) ≤ c 2 ∙f(n). Example: n = Θ (n + log n) True c 1 = 1, c 2 = 2 n 0 = 2 such that  n ≥ 2, n ≤ 1 (n + log n) and n + log n ≤ 2 n.

  49. Theta Definition: f(n) = Θ (g(n)) means  n 0 , c 1 , c 2 > 0  n ≥ n 0 , f(n) ≤ c 1 ∙g(n) and g(n) ≤ c 2 ∙f(n). Note: f(n) = Θ (g(n)) ⇔ f(n) = Ω (g(n)) and f(n) = O(g(n)) f(n) = Θ (g(n)) ⇔ g(n)= Θ (f(n)).

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