组合,最短路径算法和 Python

combination, shortest path algorithms and Python

我对编码知之甚少,但了解基本的Python。 我想通过编写一个解决下一个问题的程序来挑战自己 - 考虑到一家商店为您提供 3 种选择 - 每天 X 美元、每月 Y 美元或每年 Z 美元,假设我需要 T 时间,哪种组合最适合我?

现在,据我所知,我这里有一个创建组合树的基本组合问题,并且需要一些最短路径算法(Djikstra、Bellman-Ford..?)来找到最佳选择 ("Shortests","less expensive")

请帮我找到解决这个问题的地方。

这是一个多件商品knapsack problem的实例,您的时间就是重量,"value"就是成本。你的背包大小就是你想要的时间量。在这里你想最小化价值,这相当于最大化负数(假设一天“成本-X,月-Y,年-Z”)。

这可以通过以下递归公式解决(假设成本是整数或可以被带入整数),并且可以使用Dynamic Programming.

相当有效地实现
D(0,0) = 0
D(x,0) = INFINITY   x>0
D(x,i) = INFINITY x < 0
D(x,i) = min{ D(x,i-1), D(x-time[i],i) + cost[i] }

编辑:请注意,这不是最短路径问题的一个实例(反正不是直接的),因为你对路径有限制,你想找到一条需要 M 天的路径,而最短路径算法与这样的限制。