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)]