0

在我的原始程序中,我试图遍历edge_list长度约为 70K 的所有路径。脚本永远不会出现(运行超过一天)有关如何加快此操作的任何提示?它适用于像下面这样的较小列表(长度 4)

尝试了函数式和迭代式编程。

import networkx as nx
edge_list =[(0, 1), (1, 2), (0, 3), (3, 2)]
G = nx.DiGraph(edge_list)
roots = (v for v, d in G.in_degree() if d == 0)
leaves = (v for v, d in G.out_degree() if d == 0)

函数式编程方法

from itertools import chain
from itertools import product
from itertools import starmap
from functools import partial
chaini = chain.from_iterable
paths = partial(nx.all_simple_paths, G)
all_paths = list(chaini(starmap(paths, product(roots, leaves))))
print(all_paths)

迭代编程方法

all_paths = []
for root in roots:
    for leaf in leaves:
        paths = nx.all_simple_paths(G, root, leaf)
        all_paths.extend(paths)
print(all_paths)

输出 : [[0, 1, 2], [0, 3, 2]]

4

0 回答 0