Dijkstra演算法(matlab實現)

2021-10-22 11:23:54 字數 1332 閱讀 5433

dijkstra演算法主要是用來解決單源點最短路徑問題。

該演算法的思路如下:

function [mydistance,mypath]

=mydijkstra

(a,sb,db)

;%輸入:a——鄰接矩陣;a

(i,j)——i到j之間的距離,可以是有向的

%sb——起點的標號,db——終點的標號

%輸出:mydistance——最短路的距離,mypath——最短路的路徑

n=size

(a,1);

visited(1

:0)=

0;distance(1

:n)=inf;

distance

(sb)=0

;%起點到各頂點距離的初始化

visited

(sb)=1

;u=sb;

%u為最新的s集合頂點

parent(1

:0)=

0;%前驅頂點的初始化

for i=

1:n-

1 id=

find

(visited==0)

;%查詢v-s集合的頂點

for v=id

ifa(u,v)

+distance

(u)<

distance

(v)distance

(v)=

distance

(u)+

a(u,v)

;%修改標號值

parent

(v)=u;

endend

temp=distance;

temp

(visited==1)

=inf;

%已標號點的距離換成無窮大

[t,u]

=min

(temp)

;%找標號值最小的頂點

visited

(u)=1;

%標記已經標號的頂點

endmypath=

;ifparent

(db)~=

0%如果存在路!

t=db;mypath=

[db]

;while t~

=sb p=

parent

(t);

mypath=

[p mypath]

; t=p;

endendmydistance=

distance

(db)

;

單源最短路Dijkstra演算法 matlab實現

迪傑斯特拉 dijkstra 演算法是典型最短路徑演算法,用於計算乙個節點到其他節點的最短路徑。它的主要特點是以起始點為中心向外層層擴充套件 廣度優先搜尋思想 直到擴充套件到終點為止。基本思想 通過dijkstra計算圖g中的最短路徑時,需要指定起點s 即從頂點s開始計算 此外,引進兩個集合s和u。...

壓縮感知OMP演算法 OMP演算法的Matlab版本

omp演算法 omp的函式 s 測量 t 觀測矩陣 n 向量大小 function hat y omp fun s,t,k n size t,2 size size t 觀測矩陣大小 m size 1 測量 hat y zeros 1,n 待重構的譜域 變換域 向量 aug t 增量矩陣 初始值為空...

演算法 Dijkstra演算法筆記

參考文章 隨記參考邏輯 dijkstra演算法採用的是一種貪心的策略。演算法的基本思想是 通過不斷更新的距離陣列,每次從距離陣列找到離源點最近的乙個且沒有掃瞄過的節點,然後以該頂點為中心進行bfs擴充套件,直到所有節點都掃瞄一遍,最終得到源點到其餘所有點的最短路徑 1 起點固定,若要記錄到達路徑,則...