Algorithm 动态规划:n个节点的路径中可能的最大权重

Algorithm 动态规划:n个节点的路径中可能的最大权重,algorithm,graph,Algorithm,Graph,首先,我想说的是,这是我关于堆栈溢出的第一个问题,如果我的问题问得不对,或者我不应该问这个问题,请告诉我,这样我就可以解决它(我已经阅读了导览,但你永远不知道!) 让我们开始吧:我正在尝试在一个有向无环加权图(权重可以是负的或正的)中创建一个算法。该算法必须从特定节点开始找到权重最大的路径,该路径最多可以通过N个节点(如果权重更好,则可以使用较少的节点) 我知道我将不得不使用动态编程来实现这一点,但我不知道如何才能做到这一点。我做了很多研究,只提出了“从节点u到节点v的最长路径算法”,但这不是我

首先,我想说的是,这是我关于堆栈溢出的第一个问题,如果我的问题问得不对,或者我不应该问这个问题,请告诉我,这样我就可以解决它(我已经阅读了导览,但你永远不知道!)

让我们开始吧:我正在尝试在一个有向无环加权图(权重可以是负的或正的)中创建一个算法。该算法必须从特定节点开始找到权重最大的路径,该路径最多可以通过N个节点(如果权重更好,则可以使用较少的节点)

我知道我将不得不使用动态编程来实现这一点,但我不知道如何才能做到这一点。我做了很多研究,只提出了“从节点u到节点v的最长路径算法”,但这不是我想要实现的

我熟悉Dijkstra的算法,但我不认为这是我应该使用的


非常感谢您阅读我的文章,并提前感谢您的帮助。

输入v,z的算法:

  • 找到强连通分量,知道若你们有一个循环,在一个从节点v开始的路径内有正权重,你们可以返回无穷大

  • 使用dfs对有向图排序

  • 从叶子节点开始,返回最大值(叶子节点(leave1,z)的权重)

  • 对于当前节点,打印该节点并选择通过递归函数计算的权重最大的父节点。如果节点只有一个父节点,则选择此父节点,如果节点为v,则返回v的权重并打印它

  • 现在,将打印所有选定的节点

  • *计算节点的权重时

    `_节点的权重(x,z):

    如果z==0

       return - infinite 
    

    返回最大值(节点的权重(父节点1),节点的权重(父节点2),…)+当前节点的权重`,z-1)

    是的,对不起,我的意思是您只能通过N个节点。您好,非常感谢您的回答。我将努力实施它。尽管如此,我可以使用z作为我可以通过的节点数的算法吗?我想是的,我可以。这对你有帮助吗?非常感谢,我认为你的答案是可以接受的!我现在应该可以做了。