




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
5/5實驗4動態規劃算法設計《算法分析與設計》實驗報告
實驗四動態規劃算法設計
姓名xxxxxxx學號xxxxxxxx班級xxxxxxxx
時間:xxxxxx地點:xxxx
同組人:無
指導教師:xxxxxx
實驗目的
1.掌握動態規劃法算法設計的一般原理和方法。
2.理解動態規劃向前處理和向后處理的思想,掌握遞推公式的求解方法。
3.掌握多段圖、每對結點之間最短路徑的計算算法。
4.能用動態規劃法設計算法求解一般問題。
實驗內容
1.設計求解多段圖問題的動態規劃程序,上機調試通過。
2.設計求解每對結點之間最短路徑問題的動態規劃程序,上機調試通過。
3.準備幾個多段圖和幾個道路交通圖的數據。
4.輸入求解多段圖問題的動態規劃程序,并用準備的數據調試通過。
5.輸入每對結點之間最短路徑問題的動態規劃程序,并用準備的數據調試通
過。
實驗環境
硬件:Intel(R)Pentium(R)CPURAM:4G
軟件:Myeclipse2013
編程語言:Java實驗前準備
1、程序設計:見附1
實驗步驟
1、準備實驗數據。
準備幾個多段圖和幾個道路交通圖的數據。
多段圖的實驗數據和道路交通圖的數據均可利用程序生成(ReadEdgeData.java的randMultGraph和radomDirectedGraph);
其中多段圖的生成原則是n個結點分為k段,且每段大約為4到5個結點,第一個和最后一個結點要和相鄰段所有結點相連,中間段的結點與相鄰段的結點至少要有一個結點相鄰,每條邊的成本隨機生成。
道路交通圖至少則是生成有圖的方式,n個結點有(n*n)*4/5使邊數不至于多,也不至于少。
將生成的邊以數對的形式存于文本文件中,如下圖,其中第一行分別為結點數和邊數。剩下的若干行表示每條表的兩個結點和成本。在需要的時間通過讀取文本文件來獲取數據。
2、多段圖問題的動態規劃程序
根據算法設計的多段圖向前處理法的sparks語言,寫出相應的java程序,并調試驗證通過。其中邊是以鄰接表的形式表現出來更方便顯示點之間的鄰接關系。
int[]COST=newint[n+1];//用來記錄從j到最后一個結點的最小權值
int[]D=newint[n];//D[j]用來表示j到最后一個結點最短路徑上的后續一個結點
for(intj=n-1;j>=1;j--){
intminCost=Graph.MAXCOST;
intr=1;
LinkedListcostList=G.getCostList()[j];
for(Edgeedge:costList){//找到j之后的一個點r,使
edge.cost+COST[r]取最小值,并將最小值賦給minCost
intv=edge.v;//edge.cost代表j到v的權值
if(v>j
minCost=edge.cost+COST[v];
}
}
COST[j]=minCost;//將從j到最后一個結點的最短路徑的權值賦給COST[j]D[j]=r;
}
P[1]=1;//第一個結點
P[k]=n;//最后一個結點
for(intj=2;jcostList=G.getCostList()[j];
for(Edgeedge:costList){//找到j之后的一個點r,使
edge.cost+COST[r]取最小值,并將最小值賦給minCost
intv=edge.v;//edge.cost代表j到v的權值
if(v>j
2、最短路徑問題AllPaths.java
importjava.io.File;
publicclassAllPaths{
/**
*每對結點之前的最短路徑長度
*
*@paramargs
*/
publicstaticvoidmain(String[]args){
intZ=10;//數據個數
inttp=21;//文件的初始編號
long[][]D=newlong[Z][2];//記錄數據量和運行時間的數組
StringsurDir="E:\\我的文檔\\大三下\\算法分析與設計\\實驗\\實驗4動態規劃算法設計\\data";
for(intt=0;t0){
System.out.print("==>");
}
top--;
}
if(DIST[i]();
}
for(inti=1;ile=newLinkedList();
for(inti=1;ile=newLinkedList();//記錄所生成的邊for(inti=1;i=countBe){
if(countEn==n-1){
countEn=n;
countBe=n;
}else
if(countEn+pa=newLinkedList();
for(intj=countBe;j<=countEn;j++){
a.add(newInteger(j));
}
for(intj=0;j<kn;j++){
ints=a.size();
intr=(int)(Math.random()*(s));
intv=a.remove(r);
Edgee=newEdge();
e.u=i;
e.v=v;
int
eCost=(int)(Math.random()*(maxCost-minCost)+minCost);
e.cost=eCost;
le.add(e);
}
}
intm=le.size();
Edge[]edge=newEdge[m+1];
for(inti=0;i<le.size();i++){
edge[i+1]=le.get(i);
}
g.edge=edge;
g.m=m;
returng;
}
publicstaticvoidmain(String[]args){
random2();
}
publicstaticvoidrandom2(){
StringdestDir="E:\\我的文檔\\大三下\\算法分析與設計\\實驗\\實驗4動態規劃算法設計\\data";
StringdestName="MultGraph";
intn=12;
intk=5;
intminCost=1;
intmaxCost=n;
for(inti=0;i<10;i++){
Graphg=null;
if((g=randMultGraph(n,k,minCost,maxCost))!=null){
Filedest=newFile(destDir,destName+""+(i)+".txt");
if(writeEdges(dest,g)!=null){
System.out.println(dest+"文件寫入成功!");
}
}
n+=12;
k+=1;
}
}
/*
*生成有向圖
*/
publicstaticvoidrandom1(){
StringdestDir="E:\\我的文檔\\大三下\\算法分析與設計\\實驗\\實驗4動態規劃算法設計\\data";
StringdestName="Edges";
intb=10;//步長值
inttp=21;//文件的初始編號
intn=10;//結點初始值
intm=n*n*2/3;
intminCost=1;
intmaxCost=m;
for(inti=0;i<10;i++){
n=b*(i+1);
m=n*n*4/5;
minCost=1;
maxCost=m*3/5;
Graphg=null;
if((g=radomDirecte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 秋色中考語文作文
- 移動網絡安全防護與加密技術考核試卷
- 礦產勘查樣品處理與分析質量控制考核試卷
- 淀粉在寵物食品的營養配比考核試卷
- 企業安全生產培訓教材考核試卷
- 客運站服務創新與差異化發展考核試卷
- 烘焙食品銷售策略考核試卷
- 社交電商平臺的多元化發展與創新模式探索考核試卷
- 無線廣播電視傳輸中的信號傳輸距離擴展考核試卷
- 教案新人教版高一語文必修一第1單元檢測題
- 文心雕龍-神思教學課件
- 35KV架空輸電線路工程鐵塔組立專項工程施工組織設計方案
- 寧波市建設工程資料統一用表(2022版)
- 五年級道德與法治上冊教師教師用書
- 認識平面圖上的方向
- 液氮安全培訓資料課件
- (完整word)拆除合同范本
- 鐵路工務巡道工崗位作業標準(崗位職責、崗位風險)
- 陜西省建筑施工質量驗收技術資料統一用表
- 漁用配合飼料原料課件
- 夾層鋼結構施工方案鋼結構夾層施工方案
評論
0/150
提交評論