访问图表中N个节点所需的最小范围?

时间:2016-02-19 19:07:39

标签: algorithm dynamic-programming graph-algorithm

问题陈述在problem

处给出

我们提供电动汽车,我们需要访问N个房屋(从任何房屋开始),每个房子都有一个充电站。至少有一条连接每对房屋的道路。从一个房子到另一个房子的旅行必须使用最多C充电完成。汽车应始终在每次行程开始时充电(这将作为C充电之一)。给予道路网络和C,计算电动汽车所需的最小范围

注意:只需一次充电,汽车可行驶的距离等于其范围。

我试图用Dijkstra做到这一点,但无法正确定义状态。 我还尝试了带状态的memoized递归

dp[node][no of recharging done][Assumed range][range that still can be traveled without recharging]

但由于节点之间的距离可以是10 ^ 9的顺序,因此不可能遵循这种方法,因为会发生内存溢出。 怎么办呢?

示例: - 让房子= 4,充值可用= 2 设a,b,c表示从房屋a到b的距离为c的双向路径。

0 1 100
1 2 200
2 3 300

如果我们假设范围为300,我们可以从0到1(充电时为0,因为我们从这里开始)剩下200范围而不是1到2,剩下零范围,在2再充电剩下0范围到3。因此我们的假设是正确的,并且没有较小的范围可以达到所有房屋的相同或较少的补给,即2。

同样如此 房屋= 10,充电= 2 和路径如下: -

0 1 113
1 2 314
2 3 271
3 4 141
4 0 173
5 7 235
7 9 979
9 6 402
6 8 431
8 5 462
0 5 411
1 6 855
2 7 921
3 8 355
4 9 113
答案应该是688.

0 个答案:

没有答案