在给定数量的节点的情况下,如何获得所有树形图? Networkx

问题描述 投票:0回答:1

我想知道是否有办法使用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个树。有没有办法可以更有效地做到这一点?谢谢!

python networkx
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.