国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

這篇具有很好參考價(jià)值的文章主要介紹了圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、實(shí)驗(yàn)?zāi)康?/p>

講清楚進(jìn)行本實(shí)驗(yàn)后要學(xué)到的知識(shí)、掌握的數(shù)據(jù)結(jié)構(gòu)及其定義和表示方法,講清楚所采用的算法。

掌握?qǐng)D結(jié)構(gòu)的(鄰接矩陣)輸入方法

掌握?qǐng)D結(jié)構(gòu)的說(shuō)明、創(chuàng)建以及圖的存儲(chǔ)表示(鄰接矩陣)

掌握最短路徑算法原理

掌握最短路徑算法的編程實(shí)現(xiàn)方法

二、實(shí)驗(yàn)要求

講清楚進(jìn)行本實(shí)驗(yàn)之前需要的先驗(yàn)知識(shí)及條件

熟悉C++語(yǔ)言編程

熟悉圖的鄰接矩陣存儲(chǔ)表示

熟悉最短路徑算法原理

熟悉使用C++語(yǔ)言,實(shí)現(xiàn)最短路徑算法

先驗(yàn)知識(shí):

迪杰特斯拉算法思想:

設(shè)G=(V,E)是一個(gè)帶權(quán)有向圖,把圖中頂點(diǎn)集合V分成兩組,第一章為已求出最短路徑的頂點(diǎn)集合(用S表示,初始時(shí)S中只有一個(gè)源點(diǎn),以后每求得一條最短路徑,就將加入到集合S中。直到全部頂點(diǎn)都加入到S中,算法就結(jié)束了)。第二組為其余未確定最短路徑的頂點(diǎn)集合(用U表示),按最短路徑長(zhǎng)度的遞增次序依次把第二組的頂點(diǎn)加入S中。在加入的過(guò)程中,總保持從源點(diǎn)V到S中各頂點(diǎn)的最短路徑長(zhǎng)度大于從源點(diǎn)V到V中任何頂點(diǎn)的最短路徑長(zhǎng)度。此外,每個(gè)頂點(diǎn)對(duì)應(yīng)一個(gè)距離,S中的頂點(diǎn)的距離就是從V到此頂點(diǎn)的最短路徑長(zhǎng)度,V中的頂點(diǎn)的距離是從V到此頂點(diǎn)只包括S中的頂點(diǎn)為中間頂點(diǎn)的當(dāng)前最短路徑長(zhǎng)度。

三、實(shí)驗(yàn)內(nèi)容

講清楚本實(shí)驗(yàn)的內(nèi)容,以及為實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容所采用算法的原理

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

四、實(shí)驗(yàn)步驟

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)

? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

五、完整代碼(可直接run)? (編譯環(huán)境vscode)

#include<stdio.h>

#define MAXVERTEXNUM 100 //定義數(shù)組長(zhǎng)度

#define INFINITY 100//定義無(wú)窮

struct Graph{

? ? int VertexNum;//圖中頂點(diǎn)個(gè)數(shù)

? ? char Vertex[MAXVERTEXNUM];//將圖的頂點(diǎn)字母存入數(shù)組

? ? int AdjMatrix[MAXVERTEXNUM][MAXVERTEXNUM];//設(shè)置領(lǐng)接矩陣用兩個(gè)數(shù)組

};

Graph MGraph;

char Path[MAXVERTEXNUM][MAXVERTEXNUM];//設(shè)置圖的鄰接矩陣

int Dest[MAXVERTEXNUM];//全局設(shè)置權(quán)值

void CreateGraph(Graph *G);//生成圖調(diào)用函數(shù)

void ShowGraph(Graph *G);//展示圖調(diào)用函數(shù)

void ShortestPath(Graph *G, char StartVexChar);//測(cè)試路徑

void ShowPath(Graph *G); //展示路徑

int main(){ ?

? ? char StartVex;//

? ?

? ? CreateGraph(&MGraph);

? ? ShowGraph(&MGraph);

? ? printf("請(qǐng)輸入開(kāi)始的頂點(diǎn)");

? ? scanf("%c", &StartVex);

? ? ShortestPath(&MGraph, StartVex);

? ? ShowPath(&MGraph);

? ? return 0;

}文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457063.html

//

void CreateGraph(Graph *G){

? ? int i, j;

? ?

? ? printf("請(qǐng)輸入頂點(diǎn)個(gè)數(shù)\n");

? ? scanf("%d", &G->VertexNum);

? ? printf("請(qǐng)輸入頂點(diǎn)\n");

? ? getchar();

? ? for(i = 1; i <= G->VertexNum; i++){

? ? ? ? scanf("%c", &G->Vertex[i]);

? ? ? ? getchar();

? ? }

? ? printf("請(qǐng)輸入鄰接矩陣\n");

? ? for(i = 1; i <= G->VertexNum; i++){

? ? ? ? for(j = 1; j <= G->VertexNum; j++){

? ? ? ? ? ? scanf("%d", &G->AdjMatrix[i][j]);

? ? ? ? ? ? getchar();

? ? ? ? ? ? if(G->AdjMatrix[i][j] == -1)

? ? ? ? ? ? ? ?G->AdjMatrix[i][j] = INFINITY;

? ? ? ? } ?

? ? }

}

void ShowGraph(Graph *G){

? ? int i, j;

? ? for(i = 1; i <= G->VertexNum; i++){

? ? ? ? printf("%c ", G->Vertex[i]);

? ? }

? ? putchar('\n');

? ? for(i = 1; i <= G->VertexNum; i++){

? ? ? ? for(j = 1; j <= G->VertexNum; j++){

? ? ? ? ? ? printf("%d ", G->AdjMatrix[i][j]);

? ? ? ? }

? ? ? ? putchar('\n'); ?

? ? }

}

void ShortestPath(Graph *G, char StartVexChar){

? ? int i, j, m, StartVex, CurrentVex, MinDest, Final[MAXVERTEXNUM];

? ? for (i = 1; i <= G->VertexNum; i++){

? ? ? ? if(G->Vertex[i] == StartVexChar){

? ? ? ? ? ? StartVex = i;

? ? ? ? ? ? break;

? ? ? ? }

? ? }

? ? for (i = 1; i <= G->VertexNum; i++){

? ? ? ? Path[i][0] = 0;

? ? ? ? Dest[i] = INFINITY;

? ? ? ? if(G->AdjMatrix[StartVex][i] < INFINITY){

? ? ? ? ? ? Dest[i] = G->AdjMatrix[StartVex][i];

? ? ? ? ? ? Path[i][1] = G->Vertex[StartVex];

? ? ? ? ? ? Path[i][2] = G->Vertex[i];

? ? ? ? ? ? Path[i][0] = 2;

? ? ? ? }

? ? ? ? Final[i] = 'F';

? ? }

? ? Dest[StartVex] = 0;

? ? Final[StartVex] = 'T';

? ? for (i = 1; i <= G->VertexNum; i++){

? ? ? ? MinDest = INFINITY;

? ? ? ? for (j = 1; j <= G->VertexNum; j++){

? ? ? ? ? ? if(Final[j] == 'F'){

? ? ? ? ? ? ? ? if(Dest[j] < MinDest){

? ? ? ? ? ? ? ? ? ? CurrentVex = j;

? ? ? ? ? ? ? ? ? ? MinDest = Dest[j];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? Final[CurrentVex] = 'T';

? ? ? ? for (j = 1; j <= G->VertexNum; j++){

? ? ? ? ? ? if((Final[j] == 'F') && (MinDest + G->AdjMatrix[CurrentVex][j]) < Dest[j]){

? ? ? ? ? ? ? ? Dest[j] = MinDest + G->AdjMatrix[CurrentVex][j];

? ? ? ? ? ? ? ? for(m = 0; m <= Path[CurrentVex][0]; m++)

? ? ? ? ? ? ? ? ? ? Path[j][m] = Path[CurrentVex][m];

? ? ? ? ? ? ? ? Path[j][0]++;

? ? ? ? ? ? ? ? Path[j][Path[j][0]] = G->Vertex[j];

? ? ? ? ? ? }

? ? ? ? } ? ?

? ? } ?

}

void ShowPath(Graph *G){

? ? int i, j;

? ? for(i= 1; i <= G->VertexNum; i++){

? ? ? ? printf("%c(%d):", G->Vertex[i], Dest[i]);

? ? ? ? if(Path[i][0] > 0){

? ? ? ? ? ? for(j = 1; j <= Path[i][0]; j++){

? ? ? ? ? ? ? ? printf(" %c", Path[i][j]);

? ? ? ? ? ? } ? ? ?

? ? ? ? }

? ? ? ? printf("%c\n", Path[i][j]);

? ? }

}

到了這里,關(guān)于圖的最短路徑 (數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)(12)Dijkstra算法JAVA版:圖的最短路徑問(wèn)題

    數(shù)據(jù)結(jié)構(gòu)(12)Dijkstra算法JAVA版:圖的最短路徑問(wèn)題

    目錄 12.1.概述 12.1.1.無(wú)權(quán)圖的最短路徑 ?12.1.2.帶權(quán)圖的最短路徑 1.單源最短路徑 2.多源最短路徑 12.2.代碼實(shí)現(xiàn) 無(wú)權(quán)圖的最短路徑,即最少步數(shù),使用BFS+貪心算法來(lái)求解最短路徑,比較好實(shí)現(xiàn),此處不做展開(kāi)討論。 有權(quán)圖的最短路徑,不考慮權(quán)重為負(fù)數(shù)的情況,因?yàn)闄?quán)重為負(fù)

    2024年02月06日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)任務(wù)六 :基于 Dijsktra 算法的最短路徑求解

    數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)任務(wù)六 :基于 Dijsktra 算法的最短路徑求解

    本次代碼為實(shí)驗(yàn)六:基于 Dijsktra 算法的最短路徑求解實(shí)現(xiàn)。本實(shí)驗(yàn)的重點(diǎn)在于對(duì)于Dijsktra算法的理解。有關(guān)Dijsktra的資料可以參考有關(guān)博文: 圖論:Dijkstra算法——最詳細(xì)的分析,圖文并茂,一次看懂!-CSDN博客 以下附上實(shí)現(xiàn)代碼: 以上代碼僅供參考,歡迎交流。

    2024年02月04日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(三)——圖的操作和實(shí)現(xiàn)

    數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告(三)——圖的操作和實(shí)現(xiàn)

    1.掌握?qǐng)D的基本概念、性質(zhì)與應(yīng)用問(wèn)題 2.掌握?qǐng)D的鄰接矩陣與鄰接表存儲(chǔ)方式; 3.掌握?qǐng)D的有關(guān)算法,如創(chuàng)建、遍歷、連通分量、生成樹(shù)/最小生成樹(shù)算法(如Prim、Kruskal算法)等; 1.建立與存儲(chǔ) 鄰接矩陣:采用二維數(shù)組來(lái)存儲(chǔ)頂點(diǎn)之間的相鄰關(guān)系,若兩個(gè)頂點(diǎn)之間有直連邊

    2024年02月06日
    瀏覽(22)
  • 《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告六:圖的表示與遍歷

    《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告六:圖的表示與遍歷

    1、掌握?qǐng)D的 鄰接矩陣 和 鄰接表 表示 2、掌握?qǐng)D的 深度優(yōu)先 和 廣度優(yōu)先 搜索方法 3、理解 圖的應(yīng)用 方法 說(shuō)明以下概念 1、深度優(yōu)先搜索遍歷: ? ? ? ?一種圖的遍歷方式:從圖中 任意一個(gè) 起始頂點(diǎn) V?出發(fā),接著訪問(wèn)它的任意一個(gè) 鄰接頂點(diǎn) W1 ;再?gòu)?W1 出發(fā),訪問(wèn)與 W1

    2024年02月06日
    瀏覽(18)
  • 實(shí)驗(yàn)報(bào)告——基于Dijsktra算法的最短路徑求解

    實(shí)驗(yàn)報(bào)告——基于Dijsktra算法的最短路徑求解

    一個(gè)不知名大學(xué)生,江湖人稱(chēng)菜狗 original author: jacky Li Email : 3435673055@qq.com Last edited: 2022.12.3 ? 目錄 一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)設(shè)備 三、實(shí)驗(yàn)內(nèi)容 【問(wèn)題描述】 【輸入要求】 【輸出要求】 【輸入樣例】 【輸出樣例】 四、實(shí)驗(yàn)提示 五、實(shí)驗(yàn)步驟 5.1 六、實(shí)驗(yàn)結(jié)果 6.1程序完成后

    2024年02月07日
    瀏覽(18)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說(shuō)明我沒(méi)寫(xiě)完): https://blog.csdn.net/grd_java/article/details/123063846 雙分裂蛇:是求二維表中從起點(diǎn)到終點(diǎn)的經(jīng)典思路(也是求無(wú)權(quán)圖的最短路徑問(wèn)題的經(jīng)典解法)。創(chuàng)建兩條分裂蛇,分別從起點(diǎn)和

    2024年04月26日
    瀏覽(97)
  • 大二數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)(迪杰斯特拉最短路徑)

    大二數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)(迪杰斯特拉最短路徑)

    大二數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn),有詳細(xì)批注,代碼可以直接運(yùn)行,希望可以給大家提供到幫助。 實(shí)驗(yàn)?zāi)康?掌握?qǐng)D的鄰接矩陣的存儲(chǔ)定義。 掌握?qǐng)D的最短路徑(Dijsktra)算法的實(shí)現(xiàn)。 實(shí)驗(yàn)內(nèi)容 設(shè)計(jì)校園平面圖,所含景點(diǎn)不少于8個(gè)。以圖中頂點(diǎn)表示學(xué)校內(nèi)各景點(diǎn),存放景點(diǎn)的名稱(chēng)、景點(diǎn)

    2024年02月12日
    瀏覽(27)
  • 【數(shù)據(jù)結(jié)構(gòu)】圖的應(yīng)用:最小生成樹(shù);最短路徑;有向無(wú)環(huán)圖描述表達(dá)式;拓?fù)渑判颍荒嫱負(fù)渑判?;關(guān)鍵路徑

    【數(shù)據(jù)結(jié)構(gòu)】圖的應(yīng)用:最小生成樹(shù);最短路徑;有向無(wú)環(huán)圖描述表達(dá)式;拓?fù)渑判?;逆拓?fù)渑判?;關(guān)鍵路徑

    目錄 1、最小生成樹(shù) 1.1 概念? 1.2 普利姆算法(Prim) 1.3 克魯斯卡爾算法(Kruskal)? 2、最短路徑 2.1 迪杰斯特拉算法(Dijkstra) 2.2 弗洛伊德算法(Floyd)? 2.3 BFS算法,Dijkstra算法,F(xiàn)loyd算法的對(duì)比 3、有向無(wú)環(huán)圖描述表達(dá)式 3.1 有向無(wú)環(huán)圖定義及特點(diǎn) 3.2 描述表達(dá)式 4、拓?fù)渑判?/p>

    2024年02月07日
    瀏覽(21)
  • 《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告七:查找

    《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告七:查找

    1、掌握 查找表 、 動(dòng)態(tài)查找表 、 靜態(tài)查找表 和 平均查找長(zhǎng)度 的概念。 2、掌握線性表中 順序查找 和 折半查找 的方法。 3、學(xué)會(huì) 哈希函數(shù) 的構(gòu)造方法, 處理沖突 的機(jī)制以及 哈希表的查找 。 說(shuō)明以下概念 1、順序查找: ? ? ? ? 順序查找又叫 線性查找 ,是最基本的查

    2024年02月06日
    瀏覽(17)
  • 數(shù)據(jù)結(jié)構(gòu)專(zhuān)題實(shí)驗(yàn)7——圖的應(yīng)用(景點(diǎn)管理)(C++實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)專(zhuān)題實(shí)驗(yàn)7——圖的應(yīng)用(景點(diǎn)管理)(C++實(shí)現(xiàn))

    實(shí)驗(yàn)內(nèi)容:應(yīng)用圖的技術(shù),根據(jù)需求文件要求的功能,實(shí)現(xiàn)旅游景點(diǎn)的管理。實(shí)驗(yàn)要求: 使用圖的數(shù)據(jù)結(jié)構(gòu)建立一個(gè)景點(diǎn)圖的結(jié)構(gòu)。 可以查找各景點(diǎn)信息。 旅游景點(diǎn)導(dǎo)航,使用深度優(yōu)先,從一個(gè)景點(diǎn)開(kāi)始遍歷所有景點(diǎn)。 查找一個(gè)景點(diǎn)到另一個(gè)景點(diǎn)的最短路徑。 對(duì)景點(diǎn)道路

    2024年02月04日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包