簡體   English   中英

在Matlab中動態地將節點和邊添加到圖數據結構中

[英]Adding nodes and edges to graph data structure dynamically in Matlab

我通常在matlab中創建圖形如下:

g=sparse(5,5);
g(2,3)=1;

等等。

如果我預先創建了圖形並以比喻的方式給我,這樣就可以很好地工作,這樣我就必須制作一個表示該圖形的鄰接矩陣。 但現在我有一個不同的問題。 我必須動態地從頭開始創建圖形。 我有一堆節點,比如500個節點。 現在我必須遍歷這500個節點,如果滿足某些條件,我將放置一些節點,比如我的圖形結構中的200個節點。 然后我將在這個200個節點的池中的不同節點對上運行一個循環,如果滿足某些條件,那么我將添加一個邊。

我在Matlab工作,我可以想到的一個方法是,我將初始化一個大小為500x500的鄰接矩陣。 只需為通過該標准的邊添加邊。 這是不可取的。 我根本不想在我的圖形結構中包含500個點。

基本上,我想在Matlab中做到這一點。 在研究論文中的偽代碼中,它被告知:

Add vertex v0 to graph G.

我該如何實現呢?

然后一個偽代碼告訴

Add edge (v0,v1) to graph G.

最后,如果圖中已經存在邊緣(v0,v1)並且您被告知:

Delete edge (v0,v1)  % Not asking you to delete the nodes.
Add node v.
Add edges (v0,v) and (v,v1)

我想有效地完成這些步驟。 我希望能夠動態創建我的圖表。 我不想創建一個巨大的鄰接矩陣,然后在其中指定邊。 如果需要,我想逐步構建我的圖表。 如果可以在Matlab中完成,請告訴我。 否則我也對python開放。

您是否嘗試過研究MATLAB的新graph類? 它是在R2015b中引入的,並且具有可用於有效執行這些步驟的方法。 具體地,它具有addnodeaddedgermedge等,還可以提取從鄰接矩陣graph與對象adjacency

http://www.mathworks.com/help/matlab/graph-and-network-algorithms.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM