最短路径问题的变体

时间:2011-09-11 16:23:27

标签: algorithm shortest-path

有人可以帮助我解决这个问题 - 我能想到的是递归调用一个函数(但这似乎并没有起作用)。

假设我从0开始并在每一步添加两个数字。所以,首先我可以将n1或n2加到零;所以新的没有。变为n1或n2,然后添加n1或n2。

这样做,我怎样才能找到是否达到某个数字,比如N?如果达到了这个数字,我怎样才能找到它到达N的最短路径(解决方案可能类似于n1,n1,n2)?

2 个答案:

答案 0 :(得分:4)

这看起来更像是具有非负性约束的linear Diophantine equation,而不是像最短路径问题那样。

总结一下这篇文章:如果d是n 1 和n 2 的最大公约数,那么当且仅当N是多个时才有解d。如果是,则可以找到无穷大的解决方案(包括最小的解决方案),可以在extended Euclidean algorithm找到。你只需要做一些(哈!)额外的工作来确定在非负整数中是否存在最小的解。 (例如,2n 1 + 3n 2 = 1没有非负解。)

答案 1 :(得分:1)

排列数字,使n1> n2

从N重复从n导入n2(导致M)直到M%n1 = 0并且M> = 0。这将为您提供最优解,N =(M / n1)* n1 + rest * n2。

如果你的算法在n1步之后找不到M,则没有解决方案。