freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

算法合集之《用改進算法的思想解決規(guī)模維數增大的問題》-文庫吧

2024-12-25 19:02 本頁面


【正文】 的原理(由燒一根香計時半小時,引申為燒剩 t 的時候點兩 從 1 到 2,從 2 到 3—— 用改進算法的思想解決規(guī)模維數增大的問題 廣東省韶關一中 張偉達 2022 集訓隊論文 3 頭就能計時 2t ); 3. 改進算法(改進的過程中,往往不是依靠算法改進算法本身,反而是利用算法的內涵、實質,結合問題,構造算法); 4. 解決問題(我們得出了正確的解法)。 但是如何來改進原有的算法呢,筆者認為可以有以下途徑: 1. 直接增加算法的規(guī)模,解決問題 2. 用枚舉處理增加的規(guī)模,從而解決問題 3. 用貪心解決增加的規(guī)模,從而解決問題 4. 以上各個途徑的綜合運用 圍繞這一主線,筆 者將用例題做進一步的闡明。 三、改進算法的途徑 (1)直接增加算法的規(guī)模,解決問題 解決簡單的問題,常??梢圆捎弥苯犹幚淼姆椒ǎ呛芏鄷r候還是需要一些技巧。 【例一】街道問題及其擴展。(經典問題) 【題目大意】 〖原題〗在右圖中找出從左下角到右上角的最短路徑,每步只能向右方或上方走?!紨U展〗在地圖中找出從左下角到右上角的兩條路徑,兩條路徑中的任何一條邊都不能重疊,并且要求兩條路徑的總長度最短。 【問題分析】原題是一道簡單而又典型的動態(tài)規(guī)劃題,很顯然,可以用這樣的動態(tài)規(guī)劃方程解題:????? ???????),(),1,(1,),(),1(,1, D i s t a nc eD i s t a nc em i njijijijijijiji fff (這里 Distance 表示相鄰兩點間的邊長) 但是對于擴展后的題目:再用這種 簡單 的方法就不太好辦了。如果非得套用這種方法的話,則最優(yōu)指標函數就需要有四維的下標,并且難以處理兩條路徑“不能重疊”的問題。 我們來分析一下原方法的實質: 按照圖中的斜線來劃分階段,即階段變量 k表示走過的步數,而狀態(tài)變量 xk表示當前處于這一階段上的哪一點。這時的模型實際上已經轉化成了一個特殊的多段圖。用決策變量 uk=0 表示向右走, uk=1表示向上走,則狀態(tài)轉移方程為:??? ?? ????? rowkux rowkuxxkkkkk , ,11 (這里的 row 是地圖豎直方向的行數 )。通過這一步觀察,我們 就會發(fā)現這個問題很好解決,只需要5 5 5 5 5 4 4 4 6 4 2 2 3 3 3 3 3 3 3 8 8 8 7 7 7 7 6 9 4 6 6 從 1 到 2,從 2 到 3—— 用改進算法的思想解決規(guī)模維數增大的問題 廣東省韶關一中 張偉達 2022 集訓隊論文 4 加一維狀態(tài)變量就成了。即用 ),( kkk baX ? 分別表示兩條路徑走到階段 k 時所處的位置,相應的,決策變量也增加一維,用 ),( kkk yxu ? 分別表示兩條路徑的行走方向。狀態(tài)轉移時將兩條路徑分別考慮: ??? ?????? ?????????? r owkybbxaa r owkybbxaakkkkkkkkkkkk ,1, ,1,1111 【小結】從這個例子可以看出,改進的時候不能只依靠原始算法,還要分析原始算法的本質。 (2)用枚舉處理增加的規(guī)模,從而解決問題 【例二】旅行(廣東省奧林匹克競賽 2022) 【題目大意】給出一個 N M 的數字矩陣,要求這個矩陣的一個子矩陣,并要求這個子矩陣的數字和最大。 【問題分析】初一看題目,想到枚舉每一個子矩陣,求出子矩陣的和,比較得出最大值。這樣,時間復雜度達到 O(N4),顯然不可以接受。因為它是兩維的問題,我們可以嘗試著把維數降低。 先看一維時候的情況:在數列 ai中找出和最大的一段。 對于一維的子問題,可以這樣來想:如果用最基本的方法,可以枚舉每個子序列。但是如果純粹三重循環(huán),枚舉頭,枚舉尾,枚舉中間求和,顯然是太浪費了。其實 我們計算 Si,j ( ijaaaS ijjji ????? ? ,1, ?)時,可以由 ijiji aSS ?? ? ,1,獲得。這樣,動態(tài)規(guī)劃的思路就明顯了, Si,j 與 Si1,j 有直接的關系,而且我們還可以發(fā)現 Si,*(表示從 Si,1 到 Si,i1 構成的數列)只比 Si1,*多了一項。于是簡單的動態(tài)規(guī)劃就出來了,用 fi表示以 i 為終點的數列的最大和,有: ??? ? ??? ?1, 1),m a x(11ia iaaff iiii 不過,我們得到的只是子問題的算法,如何改進算法能使它適用于矩陣的問題呢?我們需要找出矩陣和數列的關系:矩 陣是若干條數列,但是它又不僅僅是簡單的若干條數列,不同數列中的相同位置的數也構成了聯系。我們可以嘗試著構造上下、左右同時進行的動態(tài)規(guī)劃,但是也許我們無能為力。對于這道題的數據規(guī)模,似乎沒有必要構造 O(N2)時間的算法。不難想到,枚舉上下方向的數列和,在左右方向用動態(tài)規(guī)劃求解,可以得到時間復雜度在 O(N3)的算法。 【小結】在這個例題中,我們用了最簡單的方法 —— 枚舉,來改進一維數列的最大子序列的解法,從而解決問題的規(guī)模的增加。但是枚舉這個簡單的方法,卻能解決很復雜的問題。 從 1 到 2,從 2 到 3—— 用改進算法的思想解決規(guī)模維數增大的問題 廣東省韶關一中 張偉達 2022 集訓隊論文 5 【例三】炮兵陣地。( NOI2022) 【題目大意】在圖中標為 P 的格子中放炮兵,如圖灰色區(qū)域放了炮兵后,黑色區(qū)域不能放炮兵,問圖中最多能放多少炮兵? 【問題分析】簡化的問題:若只有一列,問最多可以放多少炮兵。 可以用貪心,盡量把炮兵往上放,也可以這樣遞推:用 fi表示前 i 行最多能放炮兵數, ai表示第 i 行的地形,則邊界條件:??? ??? 39。39。,0 39。39。,1111 Ha Paf ,動態(tài)規(guī)劃方程:???????????????1,39。39。31,139。39。3,1m a x13ifPaiPaiffiiiii 且且 但是當問題擴展到多列的情況,就復雜了:不僅要考慮一列是否能引用上一行的函數值,而且要多列同時考慮。但是容易觀察到, mn,最大只有 10,又因為炮兵攻擊范圍很大,實際上能放炮兵的組合數很小,可以考慮枚舉組合,從而得到改進的動態(tài)規(guī)劃方法:以兩行為一個狀態(tài), s1 表示狀態(tài)中上行的炮兵布置情況, s2 表示下行的布置情況,(可以預先枚舉所有可能的情況并給這些情況標號) 當第 i 行能不能布置 s1 或第 i+1 行不能布置 s2 時,或者 s1,s2 在同一位置布置了炮兵時,都是不符合情況的,令此時 0),( 21 ?ssfi ; 否則: 21121 c o u n t)),(m a x (),( sssfssf ii ?? ?,其中 counts2表示 s2 的炮兵個數;s 表示該 s1,s2 的前一行的炮兵布置情況,而且滿足:不存在這樣的j )1][][(amp。)( 2 ??? jsjsmj 。 這樣到最后的最優(yōu)解就是 )),(max( 211 ssfn ? 最終復雜度分析,時間復雜度大約 O(R3n)( R 是一行狀態(tài)的組合數) (3)用貪心解決增加的規(guī)模,從而解決問題 【例四】求網絡的最小費用最大流。(經典問題) 顯然,求最小費用最大流可以由求最大流的算法改進。求網絡的最大流,簡單
點擊復制文檔內容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1