我有一个9x2的矩阵,其中第一列表示第二列,即
A=[7 10; 1 7; 3 1; 6 9; 10 7; 2 8; 10 8; 10 4; 8 6];
我将使用这些数据形成一个含义链。两个例子是3-->1->7-->10->8或3-->1-->7->10->4或2-->8->6->9
我尝试为每条规则使用一个单元格,但无法形成while循环。单元维度随每个新元素而变化,但例如,我无法从3-->1-->7-->10移动到3-->1->7-->10-->8和3-->1->7-->10->4的两个独立链。我该怎么做?
一个选项是将其转换为有向图。您可以通过仅出现在A的第一列或第二列中的节点来识别源节点和汇点节点。然后,您可以使用最短路径在从每个源到每个汇点节点的所有可能路径上循环。
A=[7 10; 1 7; 3 1; 6 9; 10 7; 2 8; 10 8; 10 4; 8 6];
G = digraph(A(:,1), A(:,2)); % Create graph
source = setdiff(A(:,1), A(:,2)); % Identify source and sink nodes
sink = setdiff(A(:,2), A(:,1));
for i = 1:length(source)
for j = 1:length(sink)
disp(shortestpath(G, source(i), sink(j)));
end
end
输出:
2 8 6 9
3 1 7 10 4
3 1 7 10 8 6 9