v_结构#

v_structures(G)[source]#

生成表示 G 中 v-结构的三节点元组。

碰撞子是有向无环图 (DAG) 中的三元组,其中两个父节点指向同一个子节点。V-结构是碰撞子,其中两个父节点不相邻。在因果图设置中,父节点不直接相互依赖,但以子节点为条件会产生关联。

参数:
G

一个 networkx DiGraph 对象。

生成:
表示 v-结构的三元组

每个 v-结构是一个包含父节点、碰撞节点和另一个父节点的三元组。

引发:
NetworkXNotImplemented

如果 G 是无向图。

另请参阅

碰撞子

注意

此函数最初是为有向无环图 (DAG) 设计的,但它也适用于循环图。由于循环因果图文献 [2] 中也提到了碰撞子,因此此函数允许处理循环图。如果您需要输入图具有无环属性,建议您像示例中那样对其进行测试。

参考文献

[1]

Pearl 的 PRIMER 第 2 章第 50 页:v-结构定义。

[2]

A Hyttinen, P.O. Hoyer, F. Eberhardt, M J ̈arvisalo, (2013) “发现带有潜在变量的循环因果模型:一种基于 SAT 的通用过程”,UAI’13:第二十九届人工智能不确定性会议论文集,第 301-310 页,doi:10.5555/3023638.3023669

示例

>>> 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.dag.v_structures(G))
[(0, 4, 2), (0, 5, 1), (4, 5, 1)]