離散數(shù)學實驗報告_第1頁
離散數(shù)學實驗報告_第2頁
離散數(shù)學實驗報告_第3頁
離散數(shù)學實驗報告_第4頁
離散數(shù)學實驗報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、離散數(shù)學實驗報告姓 名:學 號:班 級:實驗地點:實驗時間:1 實驗目的和要求運用最小生成樹思想和求最小生成樹程序解決實際問題。實際問題描述如下:八口海上油井相互間距離如下表,其中1號井離海岸最近,為5km。問從海岸經1號井鋪設油管把各井連接起來,怎樣連油管長度最短(為便于檢修,油管只準在油井處分叉)?從到234567811.32.10.90.71.82.01.820.91.81.22.82.31.132.61.72.51.91.040.71.61.50.950.91.10.860.61.070.52 實驗環(huán)境和工具實驗環(huán)境:Windows 7 旗艦版工具:Dev-C+ 5.8.33 實驗過程

2、開始3.1 算法流程圖結束int i,j;MGraph g;float AMAXV10;g.vexnum;在屏幕上打印運行結果Aij=INF;J<g.vexnumYdispMat(g);prim(g,0);i=0;j=0;g.vexnum=8;NY表中數(shù)據(jù)賦值給AMAXV10i<g.vexnumN3.2 程序核心代碼/油管鋪設問題 Prim算法實現(xiàn)#include <iostream>#include<iomanip>using namespace std;#define MAXV 10#define INF 32767 /INF表示typedef int

3、InfoType;typedef structint no; /頂點編號 InfoType info; /頂點其他信息 VertexType; /頂點類型typedef struct /圖的定義float edgesMAXVMAXV; /鄰接矩陣 int vexnum; /頂點數(shù) VertexType vexsMAXV; /存放頂點信息 MGraph; /圖的鄰接矩陣類型/*輸出鄰接矩陣g*/ void DispMat(MGraph g) int i,j; for (i=0;i<g.vexnum;i+) for (j=0;j<g.vexnum;j+) if (g.edgesij=I

4、NF) cout<<setw(6)<<"" else cout<<setw(6)<<g.edgesij; cout<<endl; void prim(MGraph g,int v) /從頂點V0出發(fā),按Prim算法構造G的最小生成樹 /輸出最小生成樹的每條邊及其權值 float VlengthMAXV;int i, j, k;int cloestMAXV;float min;float sum = 0.0;for(i=0;i<g.vexnum;i+) Vlengthi=g.edgesvi; cloesti=v

5、; for(i=1;i<g.vexnum;i+) min=INF; /min為其中最大的一條邊=MAXV for(j=0;j<g.vexnum;j+) /找n-1條邊 if(Vlengthj!=0&&Vlengthj<min) min=Vlengthj; k=j; cout<<"連接油井<"<<cloestk+1<<","<<k+1<<">"<<"長度為:"<<min<<en

6、dl; sum+=min; Vlengthk=0; Vlengthcloestk=0;for(j=0;j<g.vexnum;j+) /選擇當前代價最小的邊 if(g.edgeskj!=0&&g.edgeskj<Vlengthj) Vlengthj=g.edgeskj; cloestj=k; cout<<"管道總長度為:"<<sum<<endl; int main() int i,j,u=3; MGraph g; float AMAXV10; g.vexnum=8; for (i=0;i<g.vexnum;

7、i+) for (j=0;j<g.vexnum;j+) Aij=INF;A01=1.3; A02=2.1; A03=0.9;A04=0.7; A05=1.8; A06=2.0;A07=1.8; A12=0.9; A13=1.8;A14=1.2; A15=2.8; A16=2.3;A17=1.1; A23=2.6; A24=1.7;A25=2.5; A26=1.9; A27=1.0;A34=0.7; A35=1.6; A36=1.5;A37=0.9; A45=0.9; A46=1.1;A47=0.8; A56=0.6; A57=1.0;A67=0.5; for (i=0;i<g.ve

8、xnum;i+) for (j=0;j<g.vexnum;j+) Aji=Aij; for (i=0;i<g.vexnum;i+) /*建立圖的鄰接矩陣*/ for (j=0;j<g.vexnum;j+) g.edgesij=Aij; cout<<endl; cout<<"各油井間距離:n" DispMat(g); cout<<endl; cout<<"最優(yōu)鋪設方案:n" prim(g,0); cout<<endl; return 0;3.3 運行結果3.4 運行結果分析程序實現(xiàn)了輸出需要鋪設管道的油井編號,并給出了每條管道長度以及總長度,基本實現(xiàn)了題目要求。進一步優(yōu)化,根據(jù)用戶輸入的任意網絡的數(shù)據(jù),在屏幕打印出管道連接的設計圖紙。4 實驗心得離散數(shù)學作為一門培養(yǎng)抽象思維、離

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論