World's most popular travel blog for travel bloggers.

[Solved]: Memoized Palindrome Subsequence

, , No Comments
Problem Detail: 

I am trying to find the maximum palindrome sub-sequence and after going through some tutorials, I came up with a memoized version.But I am not sure about the runtime.I want to know if the following algorithm will work.Could also someone explain what the runtime will be?

Memoized-Palindrome(A,n) initialize longest [i][j] =0 for all i and j then return Memoized-Palindrome1(A,1,n,longest)  Memoized-Palindrome1(A,i,j,longest) if longest[i][j]>0 return longest [i][j] if (j-i) <=1 return j-i if A[i]==A[j]        then longest[i][j] = 2 + Memoized-Palindrome1(A,i+1,j-1,longest)     else        longest[i][j]= max(Memoized-Palindrome1(A,i+1,j,longest),Memoized-Palindrome1(A,i,j+1,longest) return longest[i][j] 
Asked By : Sid

Answered By : jmad

This kind of approach is more often called dynamic programming than memoization but they are, indeed, related.

In dynamic programming, however, you usually write the order in which your function is called. (This is one key difference between them.) In this case, you will clearly see that you will compute $n$ longest[i][i] first, then $n-1$ longest[i][i+1], then $n-2$ longest[i][i+2] etc. each computation being in constant time. Giving a complexity of $n+(n-1)+\dots+2+1$=$n(n+1)/2$ i.e. $O(n^2)$.

Best Answer from StackOverflow

Question Source : http://cs.stackexchange.com/questions/6637

0 comments:

Post a Comment

Let us know your responses and feedback