Remove node and reconnect edges in graph
조회 수: 1 (최근 30일)
이전 댓글 표시
I have a node in a graph that acts as a sort of 'temporary connector' node. I'd like to remove that node and update the edges in the graph so that all of its immediate predecessors point to its immediate successors.
Example: I have a graph 1 > 2 > 3. I'd like to remove node 2 and end up with the graph 1 > 3.
I read several posts on removing nodes, but couldn't find a way to do what I want.
댓글 수: 0
채택된 답변
Chunru
2022년 7월 20일
s = [1 1 1 1 2 2 3 3 3 5 5];
t = [2 3 4 6 1 5 4 5 6 4 6];
names = string(1:6);
G = digraph(s, t, [], names);
h1 = plot(G);
% Remove node and add the eages
% node 1
G1 = G;
pre = predecessors(G1, 1);
suc = successors(G1, 1);
for i=1:length(pre)
for j=1:length(suc)
G1=addedge(G1, pre(i), suc(j));
end
end
G1 = rmnode(G1, 1); % remove the node 1 also remover the edges to 1
%G.Edges, G1.Edges
figure
h2 = plot(G1);
h2.XData = h1.XData(2:end);
h2.YData = h1.YData(2:end);
댓글 수: 7
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Graph and Network Algorithms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!