我想知道是否有办法使用Networkx获得所有不同的树?众所周知,具有n
个节点的树数为n^(n-2)
(使用Cayley公式),因此,如果有3个节点,则它有3个树图,如果有4个节点,则它有16棵树,依此类推。我想要的是使用prufer序列对所有树进行编码,我知道Networkx具有创建随机树的功能,但是我有机会获得重复的树,我想到的就是使用Numpy,因此我可以找到所有列表中的唯一元素,这是我的代码:
import numpy as np
import networkx as nx
n = 3 #Number of nodes
aux = []
prufer = []
for i in range(10):
aux.append(nx.random_tree(n))
for j in aux:
prufer.append(nx.to_prufer_sequence(j))
arr = np.array(prufer)
newarr = np.unique(arr, axis = 0)
这里的问题是我生成了10个随机树,但最终我只想要3个树,但是当我想使用4个节点查找所有树时,如果我只想使用16个,我不想生成50个树。有没有办法可以更有效地做到这一点?谢谢!