eulerian_circuit#

eulerian_circuit(G, source=None, keys=False)[source]#

返回一个在图 G 中的欧拉回路的边迭代器。

欧拉回路 是一个包含图中每条边恰好一次的闭合路径。

Parameters:
GNetworkX 图

一个图,可以是 directed 或 undirected。

source节点, 可选

回路的起始节点。

keysbool

如果为 False,此函数生成的边格式为 (u, v) 。否则,边格式为 (u, v, k) 。 此选项在 G 不是多图时被忽略。

Returns:
edges迭代器

欧拉回路中的边迭代器。

Raises:
NetworkXError

如果图不是欧拉图。

See also

is_eulerian

Notes

这是一个线性时间实现的算法,改编自 [1]。

关于欧拉回路的一般信息,参见 [2]。

References

[1]

J. Edmonds, E. L. Johnson. Matching, Euler tours and the Chinese postman. Mathematical programming, Volume 5, Issue 1 (1973), 111-114.

Examples

在无向图中获取欧拉回路:

>>> G = nx.complete_graph(3)
>>> list(nx.eulerian_circuit(G))
[(0, 2), (2, 1), (1, 0)]
>>> list(nx.eulerian_circuit(G, source=1))
[(1, 2), (2, 0), (0, 1)]

获取欧拉回路中的顶点序列:

>>> [u for u, v in nx.eulerian_circuit(G)]
[0, 2, 1]