compute_v_structures#
- compute_v_structures(G)[source]#
生成表示图
G
中V结构的三节点元组。碰撞节点是指在有向无环图(DAG)中,两个父节点指向同一个子节点的三元组。V结构是碰撞节点的一种,其中两个父节点不相邻。在因果图设置中,父节点之间没有直接依赖关系,但以子节点为条件会提供一种关联。
- Parameters:
- G图
一个 networkx
DiGraph
。
- Yields:
- 一个V结构的3元组表示
每个V结构是一个3元组,包含父节点、碰撞节点和其他父节点。
- Raises:
- NetworkXNotImplemented
如果
G
是无向图。
See also
Notes
此函数旨在用于DAG,但它也适用于循环图。由于碰撞节点在循环因果图文献[2]中被提及,我们允许此函数中的循环图。建议您在需要该属性时,如示例中所示测试输入图是否为无环图。
References
[1]Pearl的PRIMER Ch-2 第50页:V结构定义。
[2]A Hyttinen, P.O. Hoyer, F. Eberhardt, M J ̈arvisalo, (2013) “Discovering cyclic causal models with latent variables: a general SAT-based procedure”, UAI’13: Proceedings of the Twenty-Ninth Conference on Uncertainty in Artificial Intelligence, pg 301–310, doi:10.5555/3023638.3023669
Examples
>>> G = nx.DiGraph([(1, 2), (0, 4), (3, 1), (2, 4), (0, 5), (4, 5), (1, 5)]) >>> nx.is_directed_acyclic_graph(G) True >>> list(nx.compute_v_structures(G)) [(0, 4, 2), (0, 5, 4), (0, 5, 1), (4, 5, 1)]