我有一个由矩阵定义的网络,其中矩阵中的[i,j]元素是从节点i到节点j的成本。如果我和j之间没有路径,那么[i,j]是无限的。图中最短的部分路径
我用负值填充矩阵,这样如果i和j之间的距离很短,那么我会在[i,j]中放置非常小的值,例如-50,如果距离很长,我把更大的价值,例如-5。
我不知道它是如何可能发现在网络局部最短路径,唯一的约束就是路径应在预定义的顺序走,就像元素出现在矩阵I,I + 1,I + 2,...
为简化的例子,
╔═══╦═══╦═════╦═══╦═══╦═════╗
║ ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║
╠═══╬═══╬═════╬═══╬═══╬═════╣
║ 1 ║ 0 ║ -20 ║ ║ ║ -10 ║
║ 2 ║ ║ 0 ║ ║ ║ ║
║ 3 ║ ║ ║ 0 ║ ║ ║
║ 4 ║ ║ ║ ║ 0 ║ -50 ║
║ 5 ║ ║ ║ ║ ║ ║
╚═══╩═══╩═════╩═══╩═══╩═════╝
这里,完整的路径表单1至5等于-10,但如果我们把路1到2,然后4到5我们得到更好的成绩 - 50,所以我们在这里跳过了3,这对于部分路径来说没问题。因此,部分路径 - 不必访问每个节点的路径,它可能只是短段1到2,最短的部分路径在所有部分路径中必须是最短的。
关于顺序的约束非常简单,我们总是从节点1开始搜索路径并按升序进行,因此对于路径中的所有段[i,j] [i1,j1],j> i和i1 > = j的。
我不知道是否有一种很好的方法可以在网络中找到最佳分数的部分路径,我认为穷举搜索也是很好的解决方案,节点的数量约为15-20。
所以,你可以从一个节点移动'i'节点'j'只有'我
amit
另外,定义你的意思是'部分最短路径' – amit
我认为我仍然缺少一些东西,在这种情况下,最短路径不会是'(u,v)',因为使用最低权重的边缘? – amit