首页 > 解决方案 > 如何在两个现有节点之间添加新节点

问题描述

Graph在 MATLAB 中创建了以下内容

function dummyGraph()
tail = [1 2 3 4 5 6 6 7 8 9 10 10 12 13 14 15];
head = [2 3 4 5 6 7 12 8 9 10 15 11 13 14 15 16];
Graph = graph(tail,head)
plot(Graph)
NodeNumber = 1:16
Neighbor={};
for NodeIdx =NodeNumber
    Neighbor{NodeIdx} = neighbors(Graph,NodeIdx);
end
end

我想在两个连续节点之间添加节点。

我正在尝试以下方法

1.获取 中存在的所有节点的邻居节点Graph。2. 在两个连续的邻居之间添加四个新节点。

我可以在代码中实现第一步。我找不到用于在现有节点之间添加节点的 MATLAB 命令。addnode(G,nodeIDs)MATLAB 文档中给出了一个命令。但是,我不确定如何使用这个命令来实现我的案例。

我想询问有关如何进行的建议

标签: matlabgraphnodes

解决方案


这是解决方案,

function AddNodes()
tail = [1 2];
head = [2 3];
Graph = graph(tail,head)
NVertex = size(Graph.Nodes);
NVertex = NVertex(1);

%% Name Nodes

NNode = string(1:NVertex)';
Graph.Nodes.Name = cellstr(NNode);


%% Adding nodes
GraphEdges = table2cell(Graph.Edges(:,1));
NEdges = size(GraphEdges);
NEdges = NEdges(1);
Source=[];
Sink =[];
for edge = 1:NEdges
    Graph  = addnode(Graph,4);
    source = GraphEdges{edge}(1);
    sink = GraphEdges{edge}(2);
    Graph  = rmedge(Graph,source,sink); 
    Add4Musk = Graph.Nodes.Name(end-3:end);
    TobeAdded  = vertcat(source,Add4Musk,sink);
    for node = 1:length(TobeAdded)-1
        source = TobeAdded(node);
        sink = TobeAdded(node+1);
        Graph = addedge(Graph,source,sink);
    end 
end

%% Plot graph
plot(Graph,'Layout','subspace3')

我很高兴知道是否有其他方法可以完成这项任务。


推荐阅读