3. Try to explain the following concepts of the bottom-up dynamic programming solution of LCS in your own words:
What does the transition function in the Optimal Substructure mean?
When can we find Overlapping Subproblems? Why can we use a table to store the intermediate results? How are the entry indices and the value stored in the table defined?
After constructing the table, how can we find the length of the LCS? How can we extract the LCS?
What is the time complexity of LCS? How about the space complexity?
Briefly sum up all the concepts above and describe why this method works
Formal proofs or pseudo codes aren't required, but you should write down an intuitive explanation. (0 points if you only show the formula or pseudo code without additional explanation) You can add a simple example to justify your answer, adding more related details are encouraged.