Python:创建一个每个节点具有已定义边数的图形

时间:2014-02-28 01:33:21

标签: python networkx

如何使用

创建图表

- 每个节点的预定义连接数,例如3

- 给出连接的分配(比如给定均值的泊松分布)

谢谢

3 个答案:

答案 0 :(得分:3)

首先,您必须定义图表数据类型:

class Graph:
  def __init__(self):
    self.related_nodes = set()

然后为这个数据结构定义一个工厂函数,它可以满足你的需要。例如:

def build_n_edge_graph(n):
  nodes = [Graph() for _ in n]
  for i, node in enumerate(nodes):
    for j in range(n):
      if i != j:
        n.related.add(node)

(未经测试!)

或其他一些算法。

答案 1 :(得分:3)

如果您使用的是NetworkX,可以尝试使用“配置模型”。 这在SO问题Generating a graph with certain degree distribution?

中讨论过

在图论理论术语中,连接数称为“度”。并且具有均匀度的图(所有节点相同)被称为“常规图”。

答案 2 :(得分:1)

在我看来你应该

  1. 决定您将拥有多少个节点
  2. 生成所需分布中每个节点的链接数 - 确保总和为
  3. 开始随机连接节点对,直到满足所有链接要求
  4. 还有一些限制 - 不应该连接多对节点,没有节点应该有多个(节点数 - 1)链接,也许你想确保图形完全连接 - 但基本上就是它