我需要在一个无权重的图中找到从s到t的最长路径。
我正在使用NetworkX,该库有一个用于在有向无环图中查找最长路径的算法,但我无法指定源节点和目标节点。
我没有找到任何相关信息,但这似乎是一个很显然的算法。我有没有办法做到这一点?
我需要在一个无权重的图中找到从s到t的最长路径。
我正在使用NetworkX,该库有一个用于在有向无环图中查找最长路径的算法,但我无法指定源节点和目标节点。
我没有找到任何相关信息,但这似乎是一个很显然的算法。我有没有办法做到这一点?
from typing import List
import networkx as nx
def longest_simple_paths(graph, source, target) -> List[List]:
longest_paths = []
longest_path_length = 0
for path in nx.all_simple_paths(G, source=source, target=target):
if len(path) > longest_path_length:
longest_path_length = len(path)
longest_paths.clear()
longest_paths.append(path)
elif len(path) == longest_path_length:
longest_paths.append(path)
return longest_paths
G = nx.complete_graph(4)
longest_paths = longest_simple_paths(G, source=0, target=3)
if longest_paths:
print(f"Longest simple path contains {len(longest_paths[0])} nodes")
print(longest_paths)
Longest simple path contains 4 nodes
[[0, 1, 2, 3], [0, 2, 1, 3]]
[1] 维基百科贡献者。"最长路径问题"。维基百科,自由的百科全书。可从以下链接获取:https://en.wikipedia.org/wiki/Longest_path_problem。访问日期为2020年11月8日。