Algorithm 寻找最小路径的动态规划

Algorithm 寻找最小路径的动态规划,algorithm,dynamic-programming,Algorithm,Dynamic Programming,我在为这个DP问题设计解决方案时遇到了问题 假设你想从A市旅行到B市。途中有n个中途停留点,你可以选择在每个中途停留点住宿的酒店。所涉及的费用是中途停留时到某家酒店的旅行费用(我们称之为tij,其中我是当前的中途停留点,j是下一个中途停留点)和在中途停留的酒店住宿费用(我们称之为sj)。设计一个动态规划算法,在B市选择一条最优路线和一家酒店,使整个行程的成本最小化。分析其正确性和运行时间 这里有一个可能正确的算法: 将站点定义为a1、a2、a3、a4、a5、a6……an,每个站点的最小成本为c1

我在为这个DP问题设计解决方案时遇到了问题


假设你想从A市旅行到B市。途中有n个中途停留点,你可以选择在每个中途停留点住宿的酒店。所涉及的费用是中途停留时到某家酒店的旅行费用(我们称之为tij,其中我是当前的中途停留点,j是下一个中途停留点)和在中途停留的酒店住宿费用(我们称之为sj)。设计一个动态规划算法,在B市选择一条最优路线和一家酒店,使整个行程的成本最小化。分析其正确性和运行时间

这里有一个可能正确的算法: 将站点定义为a1、a2、a3、a4、a5、a6……an,每个站点的最小成本为c1、c2、c3、c4、c5……cn

第一站。计算从城市A到a1的路线成本,并将其存储在c1中

第二站。计算从A到a2的路线成本,并计算从a1到a2加c1的路线成本。选择较小的成本并将其存储到c2

第三站。计算从A到a3的路线成本、a1到a3加c1的成本以及a2到a3加c2的成本。选择最小的成本并将其存储到c3

。。。。 ...

最后,我们可以通过上述步骤找到从A到B的最小成本cn+1

动态表达式为ci=min(c1+t(1,i),c2+t(2,i),c3+t(3,i),c(i-1)+t(i-1,i))

我们尝试所有可能的路线到每一站,并找到最小的成本,因此为什么答案是我们选择的路线是最小的


这种算法的运行时间是O(n^2),考虑构建一个大小为n*n的二维数组,这里有一个可能正确的算法: 将站点定义为a1、a2、a3、a4、a5、a6……an,每个站点的最小成本为c1、c2、c3、c4、c5……cn

第一站。计算从城市A到a1的路线成本,并将其存储在c1中

第二站。计算从A到a2的路线成本,并计算从a1到a2加c1的路线成本。选择较小的成本并将其存储到c2

第三站。计算从A到a3的路线成本、a1到a3加c1的成本以及a2到a3加c2的成本。选择最小的成本并将其存储到c3

。。。。 ...

最后,我们可以通过上述步骤找到从A到B的最小成本cn+1

动态表达式为ci=min(c1+t(1,i),c2+t(2,i),c3+t(3,i),c(i-1)+t(i-1,i))

我们尝试所有可能的路线到每一站,并找到最小的成本,因此为什么答案是我们选择的路线是最小的


这种算法的运行时间是O(n^2),考虑构建一个大小为n*n的二维数组

欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请和。最后请阅读。这是一个最短路径问题。选择任何你想解决的算法(考虑如何将酒店成本纳入边缘权重)。欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请和。最后请阅读。这是一个最短路径问题。选择您喜欢的任何算法来解决它(考虑如何将酒店成本纳入边缘权重)。