Matlab中连通边的排序

Matlab中连通边的排序,matlab,sorting,nodes,graph-theory,Matlab,Sorting,Nodes,Graph Theory,我有一个以随机方式存储的边列表,目前我正在尝试以所有边都连接的方式重新排列它们。我想知道是否有什么已经在matlab中实现了这样做或任何算法,我可以寻找解决这个问题。 让我更具体一点 1 2 3 4 2 5 5 3 必须成为 1 2 2 5 5 3 3 4 其中,每行中的第一个数字是前一行中的第二个数字 我提前感谢你们的帮助。当然有更好的方法可以做到这一点,但你们可以使用for循环 x=[1 2; 3 4; 2 5; 5 3]; % Your array o

我有一个以随机方式存储的边列表,目前我正在尝试以所有边都连接的方式重新排列它们。我想知道是否有什么已经在matlab中实现了这样做或任何算法,我可以寻找解决这个问题。 让我更具体一点

1  2
3  4
2  5
5  3
必须成为

1   2
2   5
5   3
3   4 
其中,每行中的第一个数字是前一行中的第二个数字


我提前感谢你们的帮助。

当然有更好的方法可以做到这一点,但你们可以使用for循环

x=[1  2; 3  4; 2  5; 5  3]; % Your array
orderX=zeros([size(x,1),1);

orderX(1)=1;
for ii=2:size(x,1)
      orderX(ii)=find(x(orderX(ii-1),2)==x(:,1));
end
x=x(orderX,:);
只有在没有重复的数字并且每列中只有一个数字的情况下,这才有效。我建议将它包装在一个输入和输出x的函数中


您可以轻松地将其扩展到处理多个循环和类似的更复杂问题。

这里有一个使用
ismember
排序的解决方案:

E = [ ...
     1 2;
     3 4;
     2 5;
     5 3];

[~,M_IDX] = ismember(E(:,1),E(:,2));
[~,S_IDX] = sort(M_IDX);
G = E(S_IDX,:)

G =

   1   2
   2   5
   5   3
   3   4

请注意,这假设图形的行为非常好,即从开始节点到结束节点只有一条路径,并且该路径穿过所有边。

是否每个数字在每列中只显示一次?是的,它们确实显示。他们必须这样做。这些是单一且唯一的边。你们有什么版本的MATLAB?你有生物信息学工具箱吗?理想情况下,您将使用拓扑排序。如果保证您的图形表现良好,那么找到开始节点并使用DFS将是第二好的选择。Matlab 2014,理想情况下,我不需要使用任何工具箱。非常感谢。我可以很容易地找到起点和终点。