java - understanding the flow of a simple dynamic programming -
i started understanding concept of dynamic programming. understand used cache results future calls , efficient in designing complex algorithms give exponential runtime. don't understand how flow work programmatically. illustration calculate nth fibonacci number using dynamic programming follows. flow in program?
int[] fibmap = new int[max] int fibo(int i){ if(i == 0) homecoming 0; if(i == 1) homecoming 1; if( fibmap[i] != 0) homecoming fibmap[i]; // homecoming cached result fibmap[i] = fibo(i-1)+fibo(i-2); //cache result homecoming fibmap[i]; }
i found code 1 of java reference books using having hard time figuring out how programme work. if want calculate simple fibo(3) or fibo(5), please explain me how programme cache result , how overall flow work problem compared normal recursive approach without dp below?
int fibo(int i){ if(i == 0) homecoming 0; if( == 1) homecoming 1; homecoming fibo(i-1) + fibo(i-2); }
your code is
int fibo(int i){ if(i == 0) homecoming 0; if(i == 1) homecoming 1; if( fibmap[i] != 0) homecoming fibmap[i]; // homecoming cached result fibmap[i] = fibo(i-1)+fibo(i-2); //cache result homecoming fibmap[i]; }
or, equivalently
int fibo(int i){ if(i == 0) homecoming 0; if(i == 1) homecoming 1; if( fibmap[i] == 0) fibmap[i] = fibo(i-1)+fibo(i-2); //cache result homecoming fibmap[i]; }
so "flow" same thing non-cached version, except avoid recalculating results you've computed.
java algorithm dynamic-programming
No comments:
Post a Comment