Carnegie Mellon University卡內(nèi)基梅隆大學(xué)Lecture 11的Dynamic Programming動態(tài)規(guī)劃大家都覺得難嗎?為什么我學(xué)的這么費勁,課件都沒看明白,別提作業(yè)了
確實很多同學(xué)都覺得卡內(nèi)基梅隆大學(xué)Lecture 11 Dynamic Programming動態(tài)規(guī)劃有一些難度,每個同學(xué)的基本不一樣,所以可能對于難度的評判都不一樣。
Dynamic Programming動態(tài)規(guī)劃
動態(tài)編程是一種強(qiáng)大的技術(shù),可以用于解決時間O(n2)或O(n3)中的許多問題,而一種幼稚的方法則需要指數(shù)時間。(通常要使運行時間低于此,如果可能的話,還需要添加其他想法。)
動態(tài)編程是解決問題的一般方法,就像“分治”是一種通用方法一樣,除了與分治不同,子問題通常會重疊。
動態(tài)規(guī)劃的基本思想
?示例:最長公共子序列。
?示例:背包。
?示例:矩陣鏈乘法。
課件不明白的話建議同學(xué)一定要學(xué)清楚,課件是基本的學(xué)習(xí)內(nèi)容。同學(xué)有不了解的知識點一定要提前解決,不要累計問題。
同學(xué)你是指Carnegie Mellon University卡內(nèi)基梅隆大學(xué)的動態(tài)規(guī)劃嗎?你遇到的作業(yè)題目是這樣的知識嗎:
here is the question: say LCS[i,j] is the length of the LCS of S[1..i] with T[1..j]. How
can we solve for LCS[i,j] in terms of the LCS’s of the smaller problems?
Case 1: what if S[i] = T[j]? Then, the desired subsequence has to ignore one of S[i] or T[j] so
we have:
LCS[i, j] = max(LCS[i ? 1, j], LCS[i, j ? 1]).
我之前有個同學(xué)也是Dynamic programming operation的作業(yè)遇到了難題,其實同學(xué)們重要的是基礎(chǔ)只是要扎實,且解題思路很重要。
如果遇到了作業(yè)問題沒辦法自己解決,可以找一位老師給你簡單的講一下思路,如果你還是不明白,那可能是同學(xué)有些知識還沒了解,是可以先將課件的。