python - Big Theta bound of 2 recursive calls -


given f(x, y) , g(n):

def f(x, y):     if x < 1 or y < 1:         return 1     return f(x - 1, y - 1) + f(x - 1, y - 1)  def g(n):     return f(n, n) 

what big theta bound of g(n)?

i reasoned since x == y, conditional in f(x, y) never true, 2 recursive calls determine complexity.

considering f(x - 1, y - 1): takes n recursive calls reach base case, each call branches f(x - 1, y - 1). @ point don't know how proceed.

(the answer Θ(2n).)

one way solve problem write recurrence relation problem. if you'll notice, arguments f equal 1 (you can see because start same in call g(n), , @ point equal). therefore, can write recurrence relation t(n) determines runtime of f(n, n).

so t(n) be? well, base case, t(0) 1, since function constant amount of work n drops 0. otherwise, function constant amount of work , makes 2 recursive calls problems of size n - 1. therefore, recurrence:

t(0) = 1

t(n+1) = 2t(n) + 1

looking @ terms of recurrence, see pattern:

  • t(0) = 1
  • t(1) = 3
  • t(2) = 7
  • t(3) = 15
  • t(4) = 31
  • ...
  • t(n) = 2n+1 - 1

you can formally prove using induction if you'd like. since t(n) given 2n+1 - 1, runtime θ(2n).

hope helps!


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -