我知道可以通过“按拓扑顺序处理顶点,并计算每个顶点的路径长度为通过任何入边获得的最小或最大长度”来线性时间找到最长/最短路径,更简洁地说,就是进行拓扑排序并找到临界路径。
我的问题是,我需要添加另一个限制,即有效路径中允许的最大边数。这会使事情变得复杂,因为对于一个节点,“通过任何入边获得的最大长度”可能涉及更多的边,这意味着稍后权重更高的节点可能不再可达,因为已经达到了最大边数。
那么解决这个问题的正确方法是什么?它仍然可以在线性时间内解决吗?
我知道可以通过“按拓扑顺序处理顶点,并计算每个顶点的路径长度为通过任何入边获得的最小或最大长度”来线性时间找到最长/最短路径,更简洁地说,就是进行拓扑排序并找到临界路径。
我的问题是,我需要添加另一个限制,即有效路径中允许的最大边数。这会使事情变得复杂,因为对于一个节点,“通过任何入边获得的最大长度”可能涉及更多的边,这意味着稍后权重更高的节点可能不再可达,因为已经达到了最大边数。
那么解决这个问题的正确方法是什么?它仍然可以在线性时间内解决吗?
只需运行常规算法。一旦找到具有最大边数的路径,就停止并返回您找到的解决方案。
当然,您可以使该路径变得更长,但这将使最大边数无效,因此它不会是一个有效的解决方案。