algorithm - 计算给定路径成本下的最大利润

标签 algorithm graph dynamic-programming graph-algorithm

给出了有根图。在这里,节点是包含一些有值(value)元素的“家”。给定入口节点,即图的根。

还给出了从一个节点移动到另一个节点的成本,即 Egde 权重。

问题 -

您必须收集最大值(value)的元素,并且总成本不应超过给定的成本。

约束 - 1.没有循环。 2.我们也可以使用邻接矩阵。(顶点总数最多为1000个)。

示例

给定边及其权重和存在于目标节点中的值。

0 1 10 1
0 2 10 15
1 3 50 10
1 4 30 30

给定成本 = 70。

解决方案 - 您将以最大方式收集节点 1、2、4 的项目。 [1+15+30 = 46]

我的努力

我认为,这个问题将通过 DP 来解决,通过在每个节点维护一些状态。但是我不能做一些算法。请帮忙。

编辑 1

  1. 我认为这个问题可以通过在每个节点中添加一些状态来使用原始图来制作特殊图来解决。
  2. 第二种方法是动态规划。

最佳答案

我认为您不会找到解决此问题的简单方法。

考虑一个由连接到 N 个叶子的根节点构成的图。每片叶子的值为 1,边的成本为 c1, c2, ... cN。

如您所见,这个图问题有一个特殊情况的背包问题。

关于algorithm - 计算给定路径成本下的最大利润,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918105/

相关文章:

c# - 匹配控制字符之前出现的字符,如果控制字符不存在则匹配零

algorithm - 评估表达式树

javascript - 如何在 chart.js 中使用 json 数据

algorithm - 求 K 次反转的排列总数

algorithm - 能被 n 整除的和

python - Bisect/Insort 的列表和双端队列的时间复杂度是否不同?

algorithm - 不相交集合数据结构

c# - C# 中的简单条形图

algorithm - 图中有多个 "must have"节点的最短路径

algorithm - 复杂动态规划,如何定义重叠子问题