迭代3d矩阵,找到所有解决方案

时间:2013-08-18 18:33:56

标签: c++ c matrix multidimensional-array

遍历3d矩阵

我需要检查每种可能解决某种困境的方法。

我有一个矩阵[x] [y] [z],表示可能通过的节点。我已经完成了一个应该给我一组解决方案的方法(它在每次迭代时禁用单个路径并重新计算整个解决方案,禁用优先级是基于最后一个解决方案的旅行容量) 但我需要看看我的方法在计算集合所花费的总时间方面有多有效。为此我需要一种方法来计算这些路径的每个排列的解决方案。

目前它在2个主要层(L1)之间只有一个层,其中0是自由路径,1是不可访问路径。 这是一个起始布局,我可以将层L1上的值从0切换到1,以禁用路径和我的最短路径搜索算法的基础。

L0 0 0 0 0 0  L1  0 1 0 1 0  L2  0 0 0 0 0
   0 1 0 1 0      1 1 1 1 1      0 1 0 1 0
   0 0 0 0 0      0 1 0 1 0      0 0 0 0 0 
   0 1 0 1 0      1 1 1 1 1      0 1 0 1 0 
   0 0 0 0 0      0 1 0 1 0      0 0 0 0 0 

当矩阵的维度不恒定时,我如何迭代禁用自由路径的每种可能组合(意味着它们已经在编译时用户定义并且可以随时更改)?有2 ^ n个解决方案,其中n是所有中间层的自由路径数。 (在C或C ++中的快速解释将是最好的,甚至伪代码也是好的)因为目前有9个自由路径来组合应该有大约2 ^ 9个解决方案我需要测试。我没有做过任何强力算法,所以我不知道如何制作一个。

0 个答案:

没有答案