circulant_graph#

circulant_graph(n, offsets, create_using=None)[source]#

返回具有 \(n\) 个节点的循环图 \(Ci_n(x_1, x_2, ..., x_m)\)

循环图 \(Ci_n(x_1, ..., x_m)\)\(n\) 个节点 \(0, ..., n-1\) 组成,其中节点 \(i\) 与节点 \((i + x) \mod n\)\((i - x) \mod n\) 相连,对于所有 \(x\)\(x_1, ..., x_m\) 中。因此,\(Ci_n(1)\) 是一个环图。

(Source code, png)

../../_images/networkx-generators-classic-circulant_graph-1.png
Parameters:
n整数

图中的节点数。

offsets整数列表

节点偏移量列表,\(x_1\)\(x_m\),如上所述。

create_usingNetworkX 图构造函数,可选(默认=nx.Graph)

要创建的图类型。如果是图实例,则在填充之前清除。

Returns:
NetworkX 图,类型为 create_using

Examples

许多著名的图族是循环图的子族;例如,要创建 n 个点的环图,我们将每个节点与两侧的节点(偏移量加一或减一)连接。对于 n = 10,

>>> G = nx.circulant_graph(10, [1])
>>> edges = [
...     (0, 9),
...     (0, 1),
...     (1, 2),
...     (2, 3),
...     (3, 4),
...     (4, 5),
...     (5, 6),
...     (6, 7),
...     (7, 8),
...     (8, 9),
... ]
>>> sorted(edges) == sorted(G.edges())
True

类似地,我们可以使用偏移量集合 [1, 2] 创建 5 个点的完全图:

>>> G = nx.circulant_graph(5, [1, 2])
>>> edges = [
...     (0, 1),
...     (0, 2),
...     (0, 3),
...     (0, 4),
...     (1, 2),
...     (1, 3),
...     (1, 4),
...     (2, 3),
...     (2, 4),
...     (3, 4),
... ]
>>> sorted(edges) == sorted(G.edges())
True