algorithm - 以价格和距离为约束的具有多条路线的节点之间的优化

标签 algorithm graph-algorithm mathematical-optimization

我正在设计一个 Android 应用程序,我试图在这种情况下找到最佳解决方案:

假设我们在起点和目的地之间有几条不同的路线,每条路线都有不同的价格和距离。如何找到距离和价格都最优的最优路径?

也就是说,如果我们在 S 和 D 之间有 5 条路由 R1、R2、R3、R4、R5

distances    R2 30 miles ,        
             R3 40 miles ,                   
             R1 50 miles ,                   
             R5 60 miles ,                   
             R4 70 miles ,                   
             R6 80 miles                  

Price for  R1  $5 , 
           R6  $8 , 
           R3  $9 ,
           R5  $11 ,
           R2  $13 ,
           R4  $15   

S 和 D 之间的最佳路线是什么?

我见过 Dijkstra 等算法和其他一些算法,例如旅行商问题,但我无法将它们与此联系起来。

是否有一些算法、公式或模型可以解决这类问题?

最佳答案

这可以通过 A*/Dijkstra 算法解决,该算法旨在在给定节点、边及其成本列表的情况下,在图上找到从 A 到 B 的最佳(总成本最低)路线。

A* 使用贪婪的方法只寻找最佳路径,而 Dijkstra 算法寻找从一个点到图上其他任何地方的最佳路径。它们基本上是相同的算法,只是应用方式略有不同。

由于您对最低价格和最短距离都感兴趣,因此您的“成本”应该是它两个方面的数学公式(例如,使用燃料价格将距离转换为价格,然后将其与价格相结合),或者您应该为每个参数运行算法两次。

http://en.wikipedia.org/wiki/A*_search_algorithm

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

关于algorithm - 以价格和距离为约束的具有多条路线的节点之间的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16161651/

相关文章:

algorithm - 通过特定顶点的有向图中最轻量级的圆

algorithm - 搜索多个值的索引的算法是什么?

链接部分对象数组的 Javascript 排序算法

python - 内存无法按预期工作

string - 使用两个函数与一个函数进行散列

scala - 如何在 Graphx 中并行 Prims 算法

连接几何线的算法

c++ - 使用 Brent 算法以初始猜测找到函数 f 的根,但没有区间 [a,b] s.t. f(a)f(b)<0

algorithm - 将数组拆分为具有相似权重的子数组

c++ - 什么是好的凸优化库?