我希望networkx能够找到有向无环图中的绝对最长路径。我知道Bellman-Ford算法,因此我将我的图长度取反。问题是:networkx的bellman_ford()需要一个源节点。我想找到绝对最长路径(或在取反后的情况下的最短路径),而不是从给定节点开始的最长路径。
当然,我可以在图中的每个节点上运行bellman_ford()并进行排序,但是否有更有效的方法呢?
根据我所读的(例如,http://en.wikipedia.org/wiki/Longest_path_problem),实际上可能没有更有效的方法,但我想知道是否有人有任何想法(和/或已经证明了P=NP(微笑))。
编辑:我图中的所有边长度都为+1(或在取反后为-1),因此简单地访问最多节点的方法也可以工作。通常,当然不可能访问所有节点。
当然,我可以在图中的每个节点上运行bellman_ford()并进行排序,但是否有更有效的方法呢?
根据我所读的(例如,http://en.wikipedia.org/wiki/Longest_path_problem),实际上可能没有更有效的方法,但我想知道是否有人有任何想法(和/或已经证明了P=NP(微笑))。
编辑:我图中的所有边长度都为+1(或在取反后为-1),因此简单地访问最多节点的方法也可以工作。通常,当然不可能访问所有节点。
编辑:好的,我刚意识到我可以添加一个额外的节点,将其与图中的每个其他节点连接起来,然后从该节点运行贝尔曼-福德算法。还有其他建议吗?