<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術(shù)的開始

    統(tǒng)計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術(shù)

    我的鏈接

    淘寶技術(shù)

    閱讀排行榜

    評論排行榜

    深入理解動態(tài)規(guī)劃的一系列問題(5)

    今天主要面對的問題還是路徑問題,回顧最短路的Floyd-Warshall算法,決定還是這里把它實現(xiàn)以下。經(jīng)過前面的訓(xùn)練,當(dāng)我們確定一個問題可用動態(tài)規(guī)劃方法求解時,最重要的一步就是要先給出狀態(tài)定義,其后就可以列出DPFE方程了。那么對于FW算法所求解的全路徑最短路問題,問題是要求解一個有向圖中的所有節(jié)點之間的最短路徑。也就是說對于一個N個節(jié)點的圖,總共有N(N-1)/2個可能組合,求解他們的最短路徑。對于這時的狀態(tài)定義,我們可以參考SPC問題,我們可以定義一個狀態(tài)(k,p,q)表示從p到q的最短路徑,其中k表示不超過k段組成。也就是從p到q不超過k段路徑的組合中,最短路徑的狀態(tài)。于是,轉(zhuǎn)移方程也就可以列出來了:

    F(k,p,q) = min r∈S{b(p, r)+F(k?1,r,q)},k>0。其中當(dāng)p=q時,F(xiàn)(0,p,q)=0,當(dāng)p≠q時,F(xiàn)(0,p,q)=∞,b(p,p)=0,b是路徑長度函數(shù)。

    這樣,列出方程,我們可以輕松寫遞歸代碼求解問題了。

    當(dāng)然這里還是補(bǔ)充一下Floyd-Warshall算法的狀態(tài)轉(zhuǎn)移方程:F(k,p,q) = min{F(k?1,p,q),F(k?1,p,k)+F(k?1,k,q)},其中當(dāng)p=q時,F(xiàn)(0,p,q)=0,當(dāng)p≠q時,F(xiàn)(0,p,q)=b(p,q)。可以看出兩者的差異,F(xiàn)W算法縮減了SPC問題求解方法的中間變量r,也就是說每次求解min值不需要在一個狀態(tài)集合里尋求最短,而把min縮小到(k-1,p,q)和(k-1,p,k)+(k-1,k,q)中,這樣直接把計算復(fù)雜度降了一個量級。

    遞歸Java source code:

       1: /*
       2:  * Copyright (C) 2013 changedi
       3:  *
       4:  * Licensed under the Apache License, Version 2.0 (the "License");
       5:  * you may not use this file except in compliance with the License.
       6:  * You may obtain a copy of the License at
       7:  *
       8:  * http://www.apache.org/licenses/LICENSE-2.0
       9:  *
      10:  * Unless required by applicable law or agreed to in writing, software
      11:  * distributed under the License is distributed on an "AS IS" BASIS,
      12:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      13:  * See the License for the specific language governing permissions and
      14:  * limitations under the License.
      15:  */
      16: package com.jybat.dp;
      17:  
      18: public class APSP {
      19:  
      20:     private static final int INF = Integer.MAX_VALUE;
      21:  
      22:     // nodes (s,x,y,t) = {0,1,2,3}, so (s,x) = 3 means d[0][1] = 3
      23:     private static int[][] distance = { 
      24:         { INF, 5,      3,     INF }, 
      25:         { INF, INF, 2,     5 },
      26:         { INF, 1,       INF, 8 }, 
      27:         { INF, INF, INF, INF } 
      28:     };
      29:     
      30:     private static int maxNodeIndex = distance.length-1;
      31:     
      32:     private static int[] possibleSuccessors = { 0, 1 };
      33:     
      34:     public static double f(int k, int p, int q) {
      35:         if (k == 0 && p == q)
      36:             return 0;
      37:         if (k == 0 && p != q)
      38:             return distance[p][q];
      39:         double min = Double.MAX_VALUE;
      40:         for (int d : possibleSuccessors) {
      41:             double t = (1 - d) * f(k - 1, p, q) + d * f(k - 1, p, k) + d
      42:                     * f(k - 1, k, q);
      43:             if (t < min)
      44:                 min = t;
      45:         }
      46:         return min;
      47:     }
      48:     /**
      49:      * @param args
      50:      */
      51:     public static void main(String[] args) {
      52:         System.out.println(f(maxNodeIndex,0,3));
      53:     }
      54:  
      55: }

    posted on 2014-04-08 10:30 changedi 閱讀(1661) 評論(11)  編輯  收藏 所屬分類: 算法

    評論

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-08 11:27 金利鎖業(yè)

    支持博主分享  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-08 15:23 無添加

    網(wǎng)址動態(tài)好還是靜態(tài)好呢?  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-10 09:17 開鎖者

    期待更新啊博主  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-10 10:40 零柒鎖業(yè)

    謝謝博主分享啊  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-10 15:06 柚子舍

    動態(tài)鏈接對SEO也越來越友好了。  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-11 09:36 鵬達(dá)鎖業(yè)

    期待更新阿博主  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-11 10:39 萬利鎖業(yè)

    謝謝博主分享  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-11 22:34 wingsBlog

    不明覺厲  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-12 10:12 萬利鎖業(yè)

    期待 更新樓主  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-12 13:51 魏五鎖業(yè)

    給力支持樓主  回復(fù)  更多評論   

    # re: 深入理解動態(tài)規(guī)劃的一系列問題(5) 2014-04-12 13:52 鵬達(dá)鎖業(yè)

    期待更新AB制  回復(fù)  更多評論   

    主站蜘蛛池模板: 亚洲性天天干天天摸| 狼色精品人妻在线视频免费| 最近的免费中文字幕视频| 亚洲成a人无码亚洲成www牛牛| 四虎免费永久在线播放| 暖暖日本免费中文字幕| 亚洲色偷偷偷综合网| 亚洲午夜国产精品无码| 久久精品网站免费观看| 国产精品成人免费观看| 亚洲人配人种jizz| 亚洲中文字幕无码一区二区三区| 999久久久免费精品国产| 国产成人高清精品免费观看| 亚洲精品国产福利在线观看| 亚洲精品无码你懂的网站| 久久免费看黄a级毛片 | 最近免费字幕中文大全| 2020国产精品亚洲综合网 | 亚洲熟妇无码久久精品| 亚洲精品线路一在线观看| 香蕉97超级碰碰碰免费公| 成人毛片100免费观看| 亚洲中文字幕一二三四区苍井空| 中文字幕亚洲专区| 日本一区二区三区日本免费| 久久午夜无码免费| 一级做受视频免费是看美女| 亚洲乱码一二三四区乱码| 亚洲国产综合91精品麻豆| 中文字幕第一页亚洲| 国产免费无遮挡精品视频| 99久久久精品免费观看国产| 久久aa毛片免费播放嗯啊| www成人免费观看网站| 亚洲JLZZJLZZ少妇| 国产成人亚洲精品| 久久国产亚洲精品无码| 国精无码欧精品亚洲一区| 亚洲AV无码乱码精品国产| 国产精品99久久免费|