迪傑斯特拉演算法應用3 3種增加第二標尺的情況

2021-10-02 16:58:59 字數 1012 閱讀 2222

《演算法筆記》p376

在先前**的基礎上,大迴圈中的第二個for迴圈判斷條件改了改:

1、新增邊權,這種情況新增乙個記錄花費的二維陣列、新增儲存起點s到達頂點u的最少花費的一維陣列,初始化c[s]=0,其餘c[u]為inf

**:

//新增邊權

//cost儲存uv的花費,新增陣列c,儲存起點s到達頂點u的最少花費

//初始化c[s]=0,其餘c[u]為inf

for(

int v =

0;v )else

if(d[u]

+ g[u]

[v]== d[v]

&& c[u]

+ cost[u]

[v]}

2、新增點權,這種情況新增weight[u]表示城市u中的物資,增加陣列w,令起點s到頂點u可收集到的最大物資為w[u],初始化時只有w[s]為weight[s],其餘w[u]均為0

**:

//新增點權

//weight[u]表示城市u中的物資,

//增加陣列w,令起點s到頂點u可收集到的最大物資為w[u],初始化時只有w[s]為weight[s],其餘w[u]均為0

for(

int v =

0;v )else

if(d[u]

+ g[u]

[v]== d[v]

&& w[u]

+ weight[v]

>w[v])}

}

3、求最短路徑條數,增加乙個陣列num,令從起點s到達頂點u的最短路徑條數為num[u],初始化只有num[s]為1,其餘num[u]均為0

**:

for

(int v=

0;v )else

if(d[u]

+ g[u]

[v]== d[v])}

}

迪傑斯特拉演算法

if object id t test is not null drop table t test gocreate table dbo t test id int identity 1,1 not null primary key,自增字段,無意義 header varchar 500 第一點的名...

迪傑斯特拉演算法

dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法 能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra演算法是很有代表性的最短...

迪傑斯特拉演算法

迪傑斯特拉演算法用來計算圖中某一點到其他點的最短距離,這個圖可以是加權,也可以是無權的,距離指的是從一點到其它點所經過的邊的權重和 假設現在有乙個加權無向圖,我們要求節點1到其他點的最短距離 初始化圖arr 用乙個鄰接矩陣來表示一張圖,矩陣元素 初始化一維向量d,這個向量儲存的是其他點的最短距離,初...