999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于動態規劃法的關鍵路徑算法

2019-12-23 09:28:13詹澤梅
電腦知識與技術 2019年31期

詹澤梅

摘要:數據結構是計算機及其相關專業的一門重要專業課。在數據結構課程中,關鍵路徑是一個難點問題。本文首先概述了關鍵路徑問題,接著介紹了動態規劃法,分析其求解關鍵路徑的可行性,最后重點描述了采用十字鏈表存儲有向圖時的一種基于動態規劃法的關鍵路徑求解算法。

關鍵詞:關鍵路徑;動態規劃法;十字鏈表;AOE-網

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2019)31-0215-03

1關鍵路徑

有向無環圖可用于描述一項工程的施工流程。在有向無環圖中,既可用頂點表示子工程(又稱活動),也可用有向邊表示子工程。當用有向邊表示子工程時,邊上的權值可表示完成子工程所需的時間、價錢等信息。這種邊表示子工程活動的有向無環圖就稱為AOE-網(ActiviIy On Edge),即邊表示活動的網。在AOE-網中,有且僅有一個人度為零的頂點,它稱為源點,代表工程的開始點;有且僅有一個出度為零的頂點,它稱為匯點,代表工程的結束點。

對于一項工程,人們通常要估算完成工程所必須的最短時間。當在計算機中用AOE-網描述工程施工流程時,完成工程所必須的最短時間就等于AOE-網中源點到匯點最長路徑的長度。此處路徑長度是指路徑上各活動持續時間之和,即各有向邊上的權值之和。路徑長度最長的路徑叫作關鍵路徑。估算整個工程完成所必須的最短時間,實際上就是要求AOE-網中的關鍵路徑。

例如,圖1是一個AOE-網,它表示該工程可分為8個子工程活動。活動之間的施工先后關系是:工程一開始就可執行活動a1、a2、a3,活動a1完成后可開始執行活動a5,活動a3完成后可開始執行活動a4、a7,活動a2、a4完成后可開始執行活動a6,活動a5、a6完成后可開始執行活動a8,活動a7、a8完成后則整個工程完成。有向邊上的權值表示完成活動所需要的時間。頂點A是工程開始點(源點),頂點F是工程結束點(匯點)。完成該工程所需要的最短時間等于源點A到匯點F的最長路徑的長度。此AOE-網的最長路徑有兩條:ABEF和ADCEF,路徑長度為10,即完成整個工程的最短時間是10。這兩條路徑都是關鍵路徑。

2動態規劃法

動態規劃法是求解多階段決策最優化問題的一種常用方法。它所解決的問題需要滿足最優性原理。最優性原理簡單地說就是原問題的最優解由各個子問題的最優解構成。

關鍵路徑問題就是求AOE-網中源點到匯點的最長路徑,假定AOE-網的源點s到匯點t的最長路徑是s,x1,X2,…,Xp,t,則路徑s,x1,X2,…,Xp一定是源點s到頂點Xp的最長路徑。可用反證法證明關鍵路徑問題滿足最優性原理。如果路徑s,x1,x2,…,Xp不是源點s到頂點xp的最長路徑,存在另一條路徑s,Yl,Y2,…,Xp的長度大于路徑s,x1,x2,…,xp的長度,則路徑s,Y1,Y2,…,Xp,t的長度就大于路徑s,x1,X2,…,Xp,t的長度,這就與最初的假設“假定AOE-網的源點s到匯點t的最長路徑是s,x1,X2,…,Xp,t”相矛盾。所以關鍵路徑問題滿足最優性原理,可用動態規劃法求解。

動態規劃法將待求解問題分解成為若干個相互重疊的子問題,每個子問題對應決策過程的一個階段。該方法的求解過程通常可分為三個階段:劃分子問題、設定動態規劃函數、計算各個子問題并填寫表格。

3基于動態規劃法的關鍵路徑算法

3.1算法分析

動態規劃法求解問題時首先是劃分子問題。對于關鍵路徑問題如何劃分子問題呢?假設我們用Cxy表示有向邊上的權值,用Dis(s,v)表示源點s到頂點v的最長路徑長度。假設頂點u是頂點v的前驅頂點,則源點s到頂點v的最長路徑長度應為Csv和Dis(s,u)+Cuv中的最大值。即有以下等式成立。

由于源點s到頂點v的最長路徑與源點s到頂點v的前驅頂點u的最長路徑相關,所以子問題可設定為求源點到某頂點的最長路徑。動態規劃函數可使用上述等式。

動態規劃法的第三個步驟是計算各子問題并填表。此問題中就是要計算源點到各頂點的最長路徑。對于AOE-網中的各頂點,應按什么順序求解子問題呢?顯然前驅頂點的最長路徑應先求,所以應按照圖中有向邊指示的先后順序求各頂點的最長路徑,對于沒有先后順序的頂點可按任意順序求解。換句話就是要按圖中頂點拓撲有序序列中的先后順序求解源點到各頂點的最長路徑。

3.2圖的存儲表示

關鍵路徑算法的設計與圖的存儲結構密切相關。本問題中的有向圖如何存儲呢?由于在求源點到各頂點的最長路徑時,要按拓撲有序序列中的頂點順序求,那么就要對有向圖中頂點進行拓撲排序。在拓撲排序過程中,需要知道從各頂點出去的有向邊(弧),所以在圖的存儲結構中,應能方便找到從各頂點出去的弧。又由于源點到某頂點v的最長路徑與源點到v的前驅頂點的最長路徑相關,所以在圖的存儲結構中,要能方便找到任意一頂點的前驅頂點。十字鏈表存儲結構能很好地滿足這兩個要求,所以我們以十字鏈表作為本問題中圖的存儲結構。圖1所示有向圖的十字鏈表存儲結構如圖2所示。

3.3關鍵路徑算法

求關鍵路徑之前,首先要求出AOE-網的一個拓撲有序序列,假設用數組TopoV存儲拓撲有序序列中各頂點的位置下標。可按拓撲排序的方法求TopoV數組值。求解步驟如下:(1)找AOE-網中入度為0的頂點并存儲在數組TopoV中;(2)刪除以該頂點為弧尾的弧。重復執行(1)(2)兩步,直至找不到人度為0的頂點為止。

然后按算法1求AOE-網的源點到各頂點的最長路徑信息,最后按算法2輸出關鍵路徑和其長度。

算法1中MaxLenV數組存儲源點到每個頂點的最長路徑信息,其中MaxLenV[i1記錄源點到拓撲序列中第i+1個頂點的最長路徑信息,該頂點在有向圖的十字鏈表的vertices數組中的位置下標為TopoV[i]。頂點的最長路徑信息類型定義如下:

4總結

動態規劃法是求解最優化問題的一種常用算法設計技術。關鍵路徑問題的解滿足最優性原理,因此可用動態規劃法求解。本文在有向圖采用十字鏈表存儲方式下,設計了一種基于動態規劃法的關鍵路徑算法,該算法能正確的輸出源點到匯點的關鍵路徑及其長度。

主站蜘蛛池模板: 91麻豆国产视频| 成年片色大黄全免费网站久久| 中文字幕精品一区二区三区视频 | 日本黄网在线观看| 亚洲精品麻豆| 国产亚洲日韩av在线| 日韩一区二区三免费高清| 国产香蕉97碰碰视频VA碰碰看| 色婷婷在线播放| 丁香婷婷激情网| 国产区福利小视频在线观看尤物| 欧美精品高清| 在线观看欧美国产| 99国产在线视频| 女人18毛片一级毛片在线 | 久久久久免费精品国产| 国产日韩AV高潮在线| 国产区成人精品视频| 青草视频网站在线观看| 九色视频最新网址| 美女一级毛片无遮挡内谢| 国产人前露出系列视频| 国产成人精品一区二区三区| 色综合久久88色综合天天提莫| 色亚洲成人| 亚洲成a人片在线观看88| 97精品国产高清久久久久蜜芽| 国产精品夜夜嗨视频免费视频 | 欧美成人免费一区在线播放| 日韩在线影院| 毛片视频网| 国模私拍一区二区| 久久久久亚洲AV成人网站软件| 国产95在线 | 亚洲av无码牛牛影视在线二区| 亚洲色图综合在线| 伦精品一区二区三区视频| 免费看的一级毛片| 黑色丝袜高跟国产在线91| 精品剧情v国产在线观看| 亚洲大学生视频在线播放| 国产色偷丝袜婷婷无码麻豆制服| 亚洲第一极品精品无码| 欧美日本中文| 在线亚洲精品自拍| 一级爱做片免费观看久久| 国产av无码日韩av无码网站| 国产网站一区二区三区| 99在线观看精品视频| 九九视频在线免费观看| 亚洲aⅴ天堂| 国产精品自在线拍国产电影| 萌白酱国产一区二区| 精品小视频在线观看| 欧美亚洲一区二区三区在线| 久热99这里只有精品视频6| 91久久精品日日躁夜夜躁欧美| 国产精品妖精视频| aaa国产一级毛片| 一本色道久久88| 亚洲 欧美 日韩综合一区| 成人在线不卡| 亚洲色图欧美| 国产精品尹人在线观看| 欧美性天天| 动漫精品啪啪一区二区三区| 99久久免费精品特色大片| 亚洲综合婷婷激情| 亚洲熟女中文字幕男人总站| 狠狠色综合久久狠狠色综合| 天天综合天天综合| 亚洲高清在线天堂精品| 99re热精品视频国产免费| 又猛又黄又爽无遮挡的视频网站| 国产最新无码专区在线| 福利一区在线| 真人免费一级毛片一区二区| 国产男人的天堂| 亚洲色图另类| 激情无码视频在线看| 在线国产91| 国产97视频在线观看|