How do I write a pseudo code if a recurrence is given

Viewed 114

T(n)=4T(n/4) + log4n is the recurrence provided and I was wondering how to write a pseudocode based on it.

1 Answers

This says: make four recursive calls, and have each recursive call do an amount of work equal to log 4n (rounded down).

Note that log 4n = log 4 + log n = 2 + log n.

Something like this gets pretty close::

function foo(array[1...n])
    if n <= 1 then return 1
    c = 1
    while c < n do
        c *= 4
    return c + foo(arr[1...n/4]) + foo(arr[n/4+1...n/2]) + foo(arr[n/2+1...3n/4]) + foo(arr[3n/4+1...n]

The recurrence here is T(n) = 4T(n/4) + log 4n + 15, if I counted correctly, and making some assumptions about operations taking the same time to run.

We can bring that 15 down by turning the algorithm more and more silly. Store n/4 in a variable, call foo on the first 1/4 of arr four times, but only return c; this brings the 15 down to 1, I think. To get rid of that 1 operation, start c at 4 instead, killing one loop iteration (2 ops) and add one op back at the end, like return c + 1 instead of return c.

Related