has_eulerian_path#
- has_eulerian_path(G, source=None)[source]#
当且仅当
G
具有欧拉路径时返回 True。欧拉路径是图中使用每条边恰好一次的路径。如果指定了
source
,则此函数检查是否存在从节点source
开始的欧拉路径。- 有向图具有欧拉路径当且仅当
至多一个顶点的出度 - 入度 = 1,
至多一个顶点的入度 - 出度 = 1,
所有其他顶点入度等于出度,
并且其所有顶点都属于底层无向图的单个连通分量。
如果
source
不是 None,则存在从source
开始的欧拉路径,当且仅当没有其他节点的出度 - 入度 = 1。这等价于存在欧拉回路,或者source
的出度 - 入度 = 1 且满足上述条件。- 无向图具有欧拉路径当且仅当
恰好有零个或两个顶点的度为奇数,
并且其所有顶点都属于单个连通分量。
如果
source
不是 None,则存在从source
开始的欧拉路径,当且仅当存在欧拉回路,或者source
的度为奇数且满足上述条件。具有孤立顶点(即度为零的顶点)的图不被认为具有欧拉路径。因此,如果图不连通(或者对于有向图,不强连通),则此函数返回 False。
- 参数:
- GNetworkX 图
要在其中查找欧拉路径的图。
- source节点, 可选
路径的起始节点。
- 返回:
- Bool如果 G 具有欧拉路径,则为 True。
另请参阅
示例
如果您希望允许具有孤立顶点的图也拥有欧拉路径,您可以先移除这些顶点,然后像下面的示例所示调用
has_eulerian_path
。>>> G = nx.Graph([(0, 1), (1, 2), (0, 2)]) >>> G.add_node(3) >>> nx.has_eulerian_path(G) False
>>> G.remove_nodes_from(list(nx.isolates(G))) >>> nx.has_eulerian_path(G) True