作为警告,我对python还是有点缺乏经验
我正在尝试使用 networkx 库执行有向图的传递缩减。我想出了一个算法,但我在实现它时遇到了麻烦。快速搜索后,我在其他堆栈交换问题中发现了与我相似的算法,但没有演示如何实际编码算法。
这是我的算法:
For X in Nodes
For Y in Nodes
For z in Nodes
if (x,y) != (y,z) and (x,y) != (x,z)
if edges xy and yz are in Graph
delete xz
这是我在 python 中表达这一点的尝试:
G = graph
N = G.Nodes()
for x in N:
for y in N:
for z in N:
if (x,y) != (y,z) and (x,y) != (x,z):
if (x,y) and (y,z) in G:
G.remove_edge(x,z)
我认为我没有正确调用网络中边缘的每个排列,并且正在考虑尝试使用 itertools。即使我有所有可能的排列,我也不知道如何使用该信息实现算法。
任何帮助都会很棒。谢谢!