Asymptotics II, Search Trees (Discussion 7) (Kỹ thuật phân tích thời gian chạy, cây tìm kiếm nhị phân) - Christine Zhou

UN
Uni24h
0 downloads
27
0

Document content

Page 2

Announcements ● Homework 2 due today, March 6! ● Homework 3 will be released on Thursday morning ○ Due Monday, March 11 ● Midterm 1 Regrade Requests due by this Friday at 11:59pm! ● SIgn up to meet with me if you’re interested! ● Resources: tinyurl.com/cs61b-christine-zhou ● Survey: tinyurl.com/cz-disc7-sp19

Page 3

Notation: Big O, Big Omega, Big Theta ● Goal: Look at program complexity for large input ● Notations: ○ Big O - upper bound ○ Big Omega - lower bound ○ Big Theta - upper and lower bound

Page 4

O (Big O) ● Let f(n) and g(n) be positive real numbers on inputs of size n ● f ∈ O(g) if there is a constant c > 0 s.t. f(n) <= c g(n) ● Upper bounded by g(n) when n gets significantly large. ● Bound does not have to be tight. ● True or false? ○ N2 ∈ O(N2) ○ N2 ∈ O(N500) ○ N log N ∈ O(N) ○ log N ∈ O(N2)

Page 5

Ω (Big Omega) ● Let f(n) and g(n) be positive real numbers on inputs of size n ● f ∈ Ω(g) if there is a constant c > 0 s.t. f(n) >= c g(n) ● Lower bounded by g(n) when n gets significantly large. ● Bound does not have to be tight. ● True or false? ○ N2 ∈ Ω(N2) ○ N ∈ Ω(1) ○ N2 ∈ Ω(N3)

Page 6

Θ (Big Theta) ● Let f(n) and g(n) be positive real numbers on inputs of size n ● f ∈ Θ(g) if there is a constant c1 > 0 and c2 > 0 s.t. ○ C1 g(n) <= f(n) <= c2 g(n) for all c1 <= c2 ● Tightly bounded by g(n) when n gets significantly large. ● • f ∈ Ω(g) and f ∈ O(g)

Page 8

Conventions: No Constants ● Drop multiplicative constants and lower order terms ○ If our runtime is actually 2N^2 + N, we say the runtime is Theta(N^2) ● Any exponential dominates any polynomial ● Any polynomial dominates any logarithm

Page 9

Common Asymptotic Sets ● O(1): constant ● O(log n): logarithmic ● O(sqrt(n)): square root ● O(n): linear ● O(n log n): linearithmic ● O(n^2): quadratic ● O(n^3): cubic ● O(2^n): exponential ● O(n!): factorial

Page 10

Techniques for Analyzing Runtime ● Annotate your code ○ Write down runtimes of called functions ● Consider end conditions for loops and consequently the number of times we could run the loop ○ What are the terminating conditions for a loop? ○ Can we algebraically express the runtime of the loop? ● Branching factor ○ Do we make additional calls and if so, how many subproblems do we make?

Page 18

Binary Search Tree ● Every key in the left subtree is less than X’s key ● Every key in the right subtree is greater than X’s key dog bag flat alf cat elf glut Binary Search Tree

Page 19

BST Runtimes Shape of Tree Height add search “Bushy” logN Θ(logN) Θ(logN) “Spindly” N Best: Θ(1) Best: Θ(1) Worst: Θ(N) Worst: Θ(N)

Page 20

2) Is This a BST? The following method isBSTBad is supposed to check if a given binary tree is a BST, though for some binary trees, it is returning the wrong answer. Think about an example of a binary tree for which isBSTBad fails. Let’s do this one together!

Showing the first 20 pages. Download the document to see it all.

Comments (0)

Sign in to join the discussion

No comments yet. Be the first!