**動態規劃
談到演算法最優解:則首先會想到兩個演算法第乙個是貪心演算法,其次才會是動態規劃
再者從問題解決規模的相似程度來看,可能會引出另外的乙個演算法叫做:分治法(更準確的來講叫做分治思想)
有乙個問題是:
現在假定學校要從計算機工程系選出本年度的三好學生,假定其名額一共有三個,其中學校計算機工程系的學生分布為:人工智慧專業,數字**技術專業、網路安全專業、電腦科學與技術專業、軟體工程專業。每個專業有兩個教學班,每個班級有30人
每個班級有班主任,每個專業有專業負責人,系裡有繫部副主任,系部主任
我們的最終目的是選擇本系部學習最好的三名學生,我們從各個班級找出本
班學習最好的三名學生由班主任老師負責提交名額到專業負責人,然後專業負
責人再把本專業老師所接收到的6個名額選出其中的最好的三個人進行提交
到系分管副主任,然後系副主任再把接收到的15名最好的學生再排名,選取
前三個名額,交送到系主任,至此3名三好學生推選完畢
由上邊過程來看,從班級到專業再到系部,每一次推選過程都是從找最好的三個人(最優),每一次的結果都是本次結果的最優化結果
從上邊的結果來看不管最後推選的三好學生來自哪個專業或者哪個班,當我們班級推選好之後,其後的評選結果(專業或者副系以及系部)不會再對班級的三好學生名額有任何影響,所以不會受到後邊結果的影響
系主任要找三個三好學生一定是來自這10個班級,而係副主任的三個三好學生
也來自這10個班級,而各專業的三個三好學生也是從下屬的各個班級中評選出來,所以問題最後還是要回歸到班級中評選三個三好學生
**系主任要找三個三好學生一定是來自這10個班級,而係副主任的三個三好學生
也來自這10個班級,而各專業的三個三好學生也是從下屬的各個班級中評選出來,所以問題最後還是要回歸到班級中評選三個三好學生
當然也可以做
系主任要找三個系部最好的三個學生,只要找系副主任要三個就好了,系副主任要三個學習最好的學生,但是目前尚未有選取範圍,但是一旦他拿到範圍選取其中的最好的三個學生就行了,所以他會找各個專業負責人要三個,各個專業負責人需要提交三個學習最好的名額,但是他們現在也沒有拿到名額,只能找班主任老師要三個學習最好的名額,然後在拿到的6個名額選取3個提交,班主任在接到專業負責人要求提交名額的檔案後會在班級內選出三個名額(邊界條件)
通過以上:自頂向下叫做遞迴,最後的邊界條件叫做遞迴出口,自底向上叫做遞推,總的來講,低階問題的結果將會影響到高階的問題的解,但是高階的問題解無論是什麼,一定不會使低階問題的解發生改變(這也是動態規劃相較於分治思想的最大的優勢)
動態規劃基本思想
動態規劃與貪心策略類似,將乙個問題的解決方案視為一系列決策的結果。不同的是,貪心演算法每採用一次貪心選擇便做出乙個不可撤回的決策,而在動態規劃中,還要考察每個最優決策序列中是否包含乙個最優決策自序列。使用動態規劃時,所求問題應具有以下兩種性質。1.最優子結構性質 所求問題的最優子結構性質是採用動態規...
動態規劃演算法的基本思想 演算法 動態規劃
演算法 動態規劃 首先學習動態規劃,我們要先知道什麼是動態規劃?演算法導論這本書是這樣介紹這個演算法的,動態規劃與分治方法類似,都是通過組合子問題的解來來求解原問題的。再來了解一下什麼是分治方法,以及這兩者之間的差別,分治方法將問題劃分為互不相交的子問題,遞迴的求解子問題,再將它們的解組合起來,求出...
動態規劃入門(一) DP 基本思想
動態規劃 dp 是一種重要的演算法設計思想,是演算法設計的一柄利器。但是,要掌握dp並且運用自如,絕對不是什麼容易的事。dp的基本思想 1.把乙個大問題的解轉化為若干個小問題的解。2.如果得到了這些小問題的解,然後再經過一定的處理,就可以得到原問題的解。3.這些小問題與原問題有著結構相同,即小問題還...