模4 最優路徑問題

2021-07-02 12:09:20 字數 696 閱讀 7968

**:

如下圖:

從1到4找出一條路徑,要求路徑的總長度mod4的餘數最小。

分析:一條從1到4的最優路徑,在它走到2或3時mod4的餘數不一定最小。也就是說,最優策略的子策略不一定最優,所以本問題不滿足最優化原理,那麼也就不能用動態規劃來解決。但是我們可以把它轉化為判定性問題,用遞推來解決。

設dp[k][i]為bool型陣列,表示從1點到k點長度mod4為i的路徑是否存在,設len[k][i]表示從第k-1到第k點之間的第i條邊的長度。那麼就有

顯然邊界條件是:

那麼結果就是使

上面的動態規劃方程是有問題的。因為i-len[k][1]可能為負數,陣列可能越界。

應該是:

為什麼會是dp[k-1][ (sk-len[k][i]) % 4] 這個表示式呢。

其實sk=(s(k-1) +len[k][i] )%4;

所以通過sk去求s(k-1)的時候   s(k-1) + len[k][i] =sk + 4*e (e為整數 0 或1)

所以 s(k-1) =( sk +4 *e - len[k][i])% 4 

A (最優路徑)

尋路 尋找最短路徑並避開障礙物 首先將地圖虛擬化,將地圖劃分為乙個乙個的小方塊,這樣可以用二維陣列來表示地圖。如下所示,綠色塊 a 是起點,紅色塊 b 是終點,中間藍色塊是障礙物,白色塊是空地。先羅列出所有的步驟,等會按照例子一步一步分析 1 尋路步驟 步驟1.從起點a開始,把a作為乙個等待檢查的方...

最優路徑問題 mod 4 的最小值

mod 4 最優路徑問題 在上圖中找出從第1點到第4點的一條路徑,要求路徑長度mod 4的餘數最小。分析 這個圖是乙個多段圖,而且是乙個特殊的多段圖。雖然這個圖的形式比一般的多段圖要簡單,但是這個最優路徑問題卻不能用動態程式設計方法來做。因為一條從第1點到第4點的最優路徑,在它走到第2點 第3點時,...

Java求數塔(最優路徑)問題

有這樣乙個陣列 求從數塔頂端至底端和最大的最優路徑。自底向頂 解析 對每一層的每兩個相鄰資料而言 最優路徑從他們的父節點值會達到他們其中乙個,例如如果最優路徑經過第三層的2 那麼第4層他的兩個子節點19,7中必然選擇19 對於2來講,如果最優路徑經過他,他選擇了19以後就能為路徑貢獻21 相鄰點18...