幾個常用的matlab圖論工具箱函數

目錄

 

Matlab圖論工具箱的應用

Matlab圖論工具箱

求解所有頂點的最短距離graphallshortestpaths函數

函數說明

Matlab使用方法

函數格式

Matlab調用格式

求解特定起始點的最短路徑graphshortestpaths函數

函數說明

函數調用格式

函數參數說明

Matlab調用格式

最小生成樹graphminspantree函數

函數說明

函數調用格式

參數說明

Matlab調用格式

計算有向圖的最大流graphmaxflow函數

函數說明

函數調用格式

函數參數說明

Matlab調用格式

圖的遍歷graphtraverse函數

目的

函數說明

函數調用格式

函數參數說明

Matlab調用格式

圖的廣度優先遍歷與深度優先遍歷原理簡介(僅作參考)

數據結構圖中回溯概念的理解(僅作參考)

參考


Matlab圖論工具箱的應用

Matlab圖論工具箱

命令名

功能

graphallshortestpaths

求圖中所有頂點對之間的最短距離

graphconncomp

找無向圖的連通分支,或有向圖的強弱連通分支

graphisdag

測試有向圖是否含有圈,不含圈返回1,否則返回0

graphisomorphism

確定兩個圖是否同構,同構返回1,否則返回0

graphisspantree

確定一個圖是否是生成樹,是返回1,否則返回0

graphmaxflow

計算有向圖的最大流

graphminspantree

在圖中找最小生成樹

graphpred2path

把前驅頂點序列變成路徑的頂點序列

graphshortestpath

求圖中指定的一對頂點間的最短距離和最短路徑

graphtopootder

執行有向無圈圖的拓撲排序

graphtraverse

求從一頂點出發,所能遍歷圖中的頂點

我接下來挑選幾個常用的函數進行講解。

求解所有頂點的最短距離graphallshortestpaths函數

函數說明

graphallshortestpaths

求圖中所有頂點對之間的最短距離

Matlab使用方法

① 根據題目構造權值向量;

② 匹配線段的起始點與相應的權值;

③ 調用函數graphallshortestpaths

函數格式

[dist]=graphallshortestpaths(G)

[dist]=graphallshortestpaths(G,...’Directed’,DirectedValue,...)

[dist]=graphallshortestpaths(G,...’Weights’,WeightsValue,...)

函數參數說明

G參數

G參數是什麼?

G是個稀疏矩陣,我的理解是稀疏矩陣就是含有大量0的矩陣,可能爲了便於存儲和加快計算,才採用這種矩陣。實質上G就相當於以路徑的始末點作爲索引,以路徑權值或者容量爲內容的實數對。

G參數如何生成?

G並不是圖的路徑權值矩陣,它由s[]向量和t[]向量和路徑權值向量w[]構成:G=spares(s,t,w)。也就是說G應該是個N*3的矩陣,第一行表示節點起點,第二行表示節點終點,第三行是權值。

無向圖與有向圖的區別?

由於是不重複的三角矩陣,因此生成的稀疏矩陣代表着有向圖。如果想要生成無向圖,需要這樣操作:UG=tril(G+G');就是把G和自己的轉置G'加起來再求等價變換得到的下三角矩陣。

DirectedValue屬性

屬性

作用

True

有向圖(默認)

False

無向圖

WeightsValue屬性

Weightvalue屬性一般不用指定,函數graphallshortestpath函數默認從稀疏矩陣G中獲取。

Dist輸出參數

輸出[dist]是一個N*N的矩陣,每一個元素代表兩點之間最短距離,對角線上的元素總爲零,不在對角線上的零表示起點和終點的距離爲零,inf值表示沒有路徑。

Matlab調用格式

針對於「有向圖」

 

構建權值向量&生成網的鄰接矩陣

 

根據函數調用形式帶入函數

注:當橫縱座標相等時,路徑爲0.

 

針對於無向圖

 

求解特定起始點的最短路徑graphshortestpaths函數

函數說明

graphshortestpaths

求圖中特定頂點對之間的最短距離

函數調用格式

[dist,path]=graphshortestpaths(G,S,T)

[dist,path]=graphshortestpaths(G,S,T’Directed’,DirectedValue,...)

[dist,path]=graphshortestpaths(G,S,T’Weights’,WeightsValue,...)

函數參數說明

G

稀疏矩陣

S

起點

T

終點

Dist

最短距離

path

最短距離經過的路徑節點

Matlab調用格式

 

 

 

最小生成樹graphminspantree函數

函數說明

graphminspantree

在圖中找最小生成樹

函數調用格式

[Tree,pred]=graphminspantree(G)

[Tree,pred]=graphminspantree(G,R)

[Tree,pred]=graphminspantree(...,’Method’,MethofValue,...)

[Tree,pred]=graphminspantree(...,’Weights’,WeightsValue,...)

參數說明

該函數用來尋找一個無循環的節點集合,連接無向圖的全部節點,並且總的權值最小。

Tree

一個代表生成樹的稀疏矩陣

Pred

包含最小生成的祖先節點的向量

G

稀疏矩陣

R

根節點,取值爲1到節點數目

Method

可以選擇‘Kruskal’,’Prim’等算法

Matlab調用格式

針對於無向圖

 

 

 

 

針對於有向圖

 

 

 

 

 

計算有向圖的最大流graphmaxflow函數

函數說明

graphmaxflow

計算有向圖的最大流

函數調用格式

[MaxFlow,FlowMatrix,Cut]=graphmaxflow(G,SNode,TNode)

[...]=graphmaxflow(G,SNode,TNode,...’Capacity’,CapacityValue,...)

[...]=graphmaxflow(G,SNode,TNode,...’Method’,MethodValue,...)

函數參數說明

輸入參數G

N*N的稀疏矩陣

輸入參數SNode

起點

輸入參數TNcode

目標點

CapacityValue屬性

每條邊自定義容量的列向量,默認從G中獲取

MethodValue屬性

可以取‘Edmonds’和‘Goldberg’算法

輸出參數MaxFlow

網絡最大流

輸出參數FlowMatrix

每條邊數據流的值所組成的稀疏矩陣

輸出參數cut

連接起點與目標點的邏輯向量,如果有多個解時,Cut是一個矩陣

Matlab調用格式

補充說明「sparse函數的用法」

注:稀疏矩陣G中的權值就代表對應路徑所能承載的容量。

 

 

 

這裏K爲2行6列的矩陣,代表着2個最優路徑。

圖的遍歷graphtraverse函數

目的

主要是找到一種既不重複又不遺漏的訪問方法,可用來判斷一個圖是否連通。

函數說明

graphtraverse

求從某一個頂點出發,所能遍歷圖中的頂點

 

函數調用格式

[disc,pred,closed]=graphtraverse(G,S)

[...]=graphtraverse(G,S,...’Directed’,DirectedValue,...)

[...]=graphtraverse(G,S,...’Depth’,DepthValue,...)

[...]=graphtraverse(G,S,...’Method’,MethodValue,...)

函數參數說明

G

有向圖的稀疏矩陣

S

起始節點

Disc

節點索引向量

Pred

祖先節點索引向量

Methodvalue表示遍歷方法:默認爲「深度優先遍歷」:

 

Depthvalue表示遍歷深度值:

表示圖G中指定搜索深度的節點的整數。默認值是Inf(無窮大)。

Matlab調用格式

 

 

 

圖的廣度優先遍歷與深度優先遍歷原理簡介(僅作參考)

https://www.cnblogs.com/qzhc/p/10291430.html

數據結構圖中回溯概念的理解(僅作參考)

https://blog.csdn.net/weixin_42744107/article/details/106875649

參考

圖論工具箱常用函數:

https://www.cnblogs.com/markReaper/p/8454817.html