首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态规划,最小化成本?

动态规划,最小化成本?
EN

Stack Overflow用户
提问于 2015-03-17 15:56:32
回答 1查看 3.8K关注 0票数 3

我遇到了一个问题:

你必须穿过N街区,在一个城市里,开着一辆车,从0街区开始,到N - 1街区结束。每个街区的i都有一个加油站,从区块的西面到X[i]英里,再到街区以东的Y[i]英里。加油站只在支付初始金额C[i]时才为您服务。假设所有的街区都在一条直线上。给出一种算法,该算法选择加油站支付,使支付给加油站的现金最小化,并且至少有一个加油站在道路上的每个地点交付。

我试过的事情:

  • 蛮力--尝试了所有可能的组合,找到了最好的组合--工作得很完美,但花了太长时间。
  • 贪婪--我试着在每一段距离的代价上贪婪。

经过巨大的努力,我得出结论,这很可能是一个动态规划问题。

尝试动态规划-我试图想出一个重复,但绝对没有结果,我发现最困难的部分是,电台提供了双方。为了克服这个问题,我决定我将把车站“移”到最西边的位置,并把东面的运送范围增加同样的数量--不能再继续了。

我发现了一个类似的问题,我认为,dynamic programming proboem for minimum cost,这些问题实际上是相似的吗?

请有人告诉我,这是否实际上是一个动态规划问题,而没有其他方法可以更有效地做到这一点?如果是动态编程,你能给我一些提示吗?

示例:

代码语言:javascript
复制
Suppose N is 4
block 0 : X = 1, Y = 1, C = 2
block 1 : X = 0, Y = 2, C = 1
block 2 : X = 2, Y = 2, C = 5
block 3 : X = 1, Y = 5, C = 7

Then the result will be,
Pay block 0, 1 gas stations.
Min cost : 3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 17:40:16

据我所知,我们想要一套最低成本的加油站,覆盖所有街区。在下面的图中,这可以表示为最短路径问题。为每个加油站创建一个人工源、一个人工水池和一个顶点。对于i < jith加油站与jth加油站之间存在一条弧线,当且仅当它们的覆盖范围不存在缺口。人工源在每个加油站都有弧线覆盖块0。人工水槽在每个加油站都有弧形,覆盖了区块n-1。每个电弧的成本是加油站在其顶部的成本(人工水槽的0)。找到从源头到水槽的最短路径;我们沿途访问的顶点是我们应该购买保险的加油站。

运行时间为O(n^2),通常采用线性时间最短路径算法求解无圈有向图.O(n)可能有改进,请参阅discussion on CS。(Yuval指定了O(n log n)时间,但这仅仅是因为他在一个不同的计算模型中工作,排序是Omega(n log n)。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29103825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档