我有一个问题,我找不到答案。我正在使用 Perl。我的输入是一个对称的成本矩阵,有点像 TSP。
我想知道位于我的边界(即 10)之下的所有解决方案。
这是我的矩阵:
- B E G I K L P S
B - 10 10 2 10 10 10 10
E 10 - 2 10 10 10 1 10
G 10 2 - 10 2 3 3 3
I 2 10 10 - 4 10 10 2
K 10 10 2 4 - 10 10 3
L 10 10 3 10 10 - 2 2
P 10 1 3 10 10 2 - 10
S 10 10 3 2 3 2 10 -
有人知道如何实现分支定界算法来解决这个问题吗?现在,我确实用“-”替换了矩阵中的每 10 个。
到目前为止我做了什么:
@verwbez = ( ["-", B, E, G, I, K, L, P, S],
[B,"-", 10, 10, 2, 10, 10, 10, 10],
[E, 10, "-", 2, 10, 10, 10, 1, 10],
[G, 10, 2, "-", 10, 2, 3, 3, 3],
[I, 2, 10, 10, "-", 4, 10, 10, 2],
[K, 10, 10, 2, 4, "-", 10, 10, 3],
[L, 10, 10, 3, 10, 10, "-", 2, 2],
[P, 10, 1, 3, 10, 10, 2, "-", 10],
[S, 10, 10, 3, 2, 3, 2, 10, "-"]);
for ($i=0;$i<=$#verwbez;$i++) {
for ($j=0; $j<=$#{$verwbez[$i]};$j++) {
while ($verwbez[$i][$j] >=7) {
$verwbez[$i][$j] = "-";
}
}
}
基本上只是改变矩阵,每10个被替换为“-”。现在我想找到所有低于 10 的解决方案,并且包含 4 个总是两个城市连接在一起的地区。但不幸的是,我不知道如何继续/开始......