繁体   English   中英

给定最大成本,找到具有最小成本和最大长度的路径

[英]Find path with minimum cost and maximum length given a maximum cost

我正在寻找一种算法,以在无向加权完全图中给定最大成本的情况下,以最小成本和最大长度找到两个节点之间的路径。 权重是非负的。

就我现在的情况而言,我正在使用 DFS,而且速度很慢(节点数和最大长度也很多)。 我已经在 DFS 的每次迭代中丢弃了所有不可能的节点。

有人能给我指出一个已知的算法来更好地处理这个问题吗?

澄清:理想情况下,算法应该搜索成本最低的路径,但如果这意味着访问更多节点,则允许增加成本。 当它得出结论:在不超过成本限制的情况下不可能到达超过 n 个节点,并且不可能以更少的成本到达 n 个节点时,它应该结束。

更新

图表示例。 我们必须从 A 转到 B。成本限制设置为 5:

图形 这条路径(红色)没问题,但算法应该继续寻找更好的解决方案

在此处输入图片说明

这更好,因为虽然成本增加到 4,但它包含 1 个节点

在此处输入图片说明

这里的路径包含 3 个节点,所以它比以前好多了,成本是可以接受的 5

在此处输入图片说明

最后这个解决方案甚至更好,因为路径也包含 3 个节点,但成本为 4,比以前少。

在此处输入图片说明

希望图片比文字解释得更好

想法1:

在我看来,您的问题是帕累托最优最短路径搜索问题的变体。 因为您参考了 2 个不同的优化指标:

  1. 按边数计算的最长路径
  2. 按边权重的最短路径

当然,一些侧面约束只是使问题更容易计算。

您必须实施多标准 dijkstra 以获得帕累托最优结果。 对于这个问题,我找到了两篇很有前途的英文论文:

  • 一种多准则帕累托最优路径算法
  • 关于多准则最短路径问题

不幸的是,我无法找到这些论文的 pdf 文件以及我之前读过的德语论文 :( 不过,这应该是您的切入点,并将引导您找到一种算法来顺利顺利地解决您的问题。

想法2:

解决这个问题的另一种方法可能在于计算汉密尔顿路径,因为完整图中最长的路径确实是汉密尔顿路径。 计算完所有这些路径后,您仍然需要找到总边权重成本最小的路径。 如果路径的长度在每种情况下都比成本更相关,则此方案很有用。

想法3:

如果边的成本是更重要的事实,您应该计算给定最大长度的这两个节点之间的所有路径,并搜索使用最多的边。

结论:

我认为使用想法 1 将获得最佳结果。但我不太了解您的情况,因此其他想法可能是选项二。

这个问题可以表述为具有优先级的多目标约束满足问题:

  • 首先,解决方案必须满足关于最大成本的约束。
  • 接下来,解决方案必须具有最大数量的节点(第一个目标)。
  • 最后,解决方案必须具有最低成本(第二个目标)。

这个问题是NP难的。 所以,这个问题没有精确的多项式时间算法。 但是一个简单的本地搜索算法可能会帮助你:

  • 首先,使用 Dijkstra 算法找到最小成本路径,称为 P。如果成本大于最大成本,则没有解决方案满足约束。
  • 接下来,尝试使用 2 个移动运算符向 P 添加更多节点:
    • 插入:选择P外的一个节点,插入P中的最佳位置。
    • 替换:选择 P 外的节点并替换 P 内的节点(当不能使用插入操作符时)。
  • 最后,尝试通过使用替换运算符来降低成本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM