繁体   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