日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

迪杰斯特拉算法简单分析

發布時間:2023/12/15 56 生活家
生活随笔 收集整理的這篇文章主要介紹了 迪杰斯特拉算法简单分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

迪杰斯特拉算法主要是產生從源點到其他點的最短路徑,換句話說這些最短路徑也有著長短的區別。

迪杰斯特拉算法的主要思路:

1.按照長短依次來產生最短路徑。

2.并且在產生最短路徑的過程中,用現有最短的最短路徑來進行松弛操作。

具體實現的方法:數據結構:1個鄰接矩陣啊a[n][n],1個一位數組dis[n](用來存最短路徑),加上一個標記數組flag[n](這個數組一定要有,已經用來松弛過的邊就不能再使用了)。

大致流程:

1.首先一個for循環對dis數組進行初始化。

2.緊接著一個for循環用來依次產生最短路徑,里面嵌套兩個for循環,一個用來找到當前最短的最短路徑,下一個用來進行松弛操作。

看個模板題:

hdu2544

Problem Description

在每年的校賽里,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?

Input

輸入包括多組數據。每組數據第一行是兩個整數N、M(N<=100,M<=10000),N表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為N的路口是賽場所在地,M則表示在成都有幾條路。N=M=0表示輸入結束。接下來M行,每行包括3個整數A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A與路口B之間有一條路,我們的工作人員需要C分鐘的時間走過這條路。 輸入保證至少存在1條商店到賽場的路線。

Output

對于每組輸入,輸出一行,表示工作人員從商店走到賽場的最短時間。

Sample Input

2 1

1 2 3

3 3

1 2 5

2 3 5

3 1 2

0 0

Sample Output

3

2

代碼:

#include <iostream>
#define  INF 99999999
#include <string.h>
using namespace std;

int a[110][110],dis[110],flag[110];

void dijkstra(int n,int start){
    for(int i=1;i<=n;i++){
      dis[i]=a[start][i];
    }
    int minl,tmp;
    memset(flag,0,sizeof(flag));
    for(int i=2;i<=n;i++){
    minl=INF;
    for(int j=2;j<=n;j++){
        if(dis[j]<minl&&flag[j]==0){
          minl=dis[j];
          tmp=j;
        }
    }
    for(int j=2;j<=n;j++){
    if(dis[tmp]+a[tmp][j]<dis[j])
      dis[j]=dis[tmp]+a[tmp][j];
    }
    flag[tmp]=1;
    }
}

int main(){
    int n,m;
    int x,y,path;
    while(cin>>n>>m&&n!=0&&m!=0){
    for(int i=1;i<=n;i++)
       for(int j=1;j<=n;j++){
          if(i!=j)
          a[i][j]=INF;
          else
          a[i][j]=0;
       }
    for(int i=1;i<=m;i++){
      cin>>x>>y>>path;
      a[x][y]=a[y][x]=path;
    }
    dijkstra(n,1);
    cout<<dis[n]<<endl;
    }
    return 0;
}

補充:

迪杰斯特拉算法是A*算法的最簡單版本(無啟發式函數),也是我們常說的一致代價搜索。

迪杰斯特拉算法最好采用優先隊列的形式來實現,方便后面進行各種改進。

總結

以上是生活随笔為你收集整理的迪杰斯特拉算法简单分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。