有没有办法可以计算所有这些可能的路径并存储它们?

时间:2017-12-18 18:40:20

标签: matlab matrix

我有一个矩阵,每个列代表一系列点,更具体一点:

 1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
 6     6     6     6     5     5     5     5     4     4     4     4     3     3     3     3     2     2     2     2
 5     4     3     2     6     4     3     2     6     5     3     2     6     5     4     2     6     5     4     3
 1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
 2     2     2     3     2     2     2     3     2     2     2     3     2     2     2     4     3     3     3     4
 3     3     4     4     3     3     4     4     3     3     5     5     4     4     5     5     4     4     5     5
 4     5     5     5     4     6     6     6     5     6     6     6     5     6     6     6     5     6     6     6

1代表第一点,2代表第二点,依此类推。 如上所述,每列代表一组点(x和y坐标)的不同配置。

如果点数为:

 (1,9)
 (2,5)
 (3,7)
 (4,2)
 (2,1)
 (2,3)

然后一条可能的路径,根据第一列是:

 (1,9)
 (2,3)
 (2,1)
 (1,9)
 (2,5)
 (3,7)
 (4,2)

有没有办法可以计算所有这些可能的配置并存储它们?

当我第一次接触到这个问题时,我不知道图论,这就是为什么到目前为止我没有使用它。

1 个答案:

答案 0 :(得分:0)

我不理解你的序列矩阵的第四行背后的逻辑。它充满了1,但它们似乎完全被你的例子忽略了。尊重你的例子,给出要点:

(1,9) (2,5) (3,7) (4,2) (2,1) (2,3)

和第一个列序列:

1 6 5 1 2 3 4

输出应为:

(1,9) (2,3) (2,1) (1,9) (2,5) (3,7) (4,2)

而不是:

(1,9) (2,3) (2,1) (2,5) (3,7) (4,2)

由于我不知道你的脚本应该如何工作以及我应该如何处理第四行,所以我实现了一个忽略该逻辑的代码,产生了对我来说最明显的结果:

seq = [
  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  6 6 6 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2
  5 4 3 2 6 4 3 2 6 5 3 2 6 5 4 2 6 5 4 3
  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 4 3 3 3 4
  3 3 4 4 3 3 4 4 3 3 5 5 4 4 5 5 4 4 5 5
  4 5 5 5 4 6 6 6 5 6 6 6 5 6 6 6 5 6 6 6
];

pts = {
  [1 9]
  [2 5]
  [3 7]
  [4 2]
  [2 1]
  [2 3]
};

paths = pts(seq);

然后,为了访问您可以使用的路径,例如:

for i = 1:size(paths,2)
    disp(cell2mat(paths(:,i)))
end

或:

paths = cell2mat(paths);

for i = 1:2:(size(paths,2) / 2)
    x = paths(:,i);
    y = paths(:,i+1);
    disp([x y]);
end