首先,我想说这是我关于Stack Overflow的第一个问题,如果我的问题没有被正确询问,或者这是一个我不应该问的问题,请告诉我,我可以解决它(我已经阅读了导游,但你永远不知道!)
让我们开始吧:我试图在有向无环和加权图中制作算法(权重可以是负数或正数)。该算法必须找到从特定节点开始具有最大权重的路径,并且该路径可以通过最多N个节点(如果它将获得更好的权重,则可以使用更少的节点)。
我明白我必须使用动态编程才能做到这一点,但我不知道如何做到这一点。我做了很多研究,而且我只提出了从节点u到节点v"的最长路径算法。但这并不是我想要实现的目标。
我熟悉Dijkstra的算法,但我不认为这是我应该使用的。
非常感谢您阅读我,并提前感谢您的帮助。
答案 0 :(得分:2)
输入v,z的算法:
找到强连接组件,知道你是否有从节点v开始的正重量循环,你可以返回无限
使用dfs
从叶子节点开始并返回最大值(weight_of_node(leave1,z),.....)
对于当前节点打印它并选择由递归函数计算的权重最大的父节点。如果节点只有一个父亲选择这个父亲,如果该节点是v,则返回v的权重并打印它
现在打印所有选定的节点
*计算节点的重量时
`weight_of_node(x,z):
如果z == 0
return - infinite
返回最大值(weight_of_node(father_node1),weight_of_node(father_node2),...)+ current_node_weight`,z - 1)