[英]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中引入的,并且具有可用于有效执行这些步骤的方法。 具体地,它具有addnode
, addedge
, rmedge
等,还可以提取从邻接矩阵graph
与对象adjacency
。
http://www.mathworks.com/help/matlab/graph-and-network-algorithms.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.