遍历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个解决方案我需要测试。我没有做过任何强力算法,所以我不知道如何制作一个。