对撞机#

colliders(G)[source]#

生成表示图 G 中对撞机的 3 节点元组。

在有向无环图 (DAG) 中,如果你有三个节点 A、B 和 C,并且存在从 A 到 C 以及从 B 到 C 的边,那么 C 就是一个对撞机 [1]。在因果图设置中,这意味着事件 A 和 B 都“导致”了 C,并且即使 A 和 B 之间没有直接的因果关系,以 C 为条件也会在 A 和 B 之间产生关联。

参数:
G

一个 networkx DiGraph 对象。

生成:
对撞机的 3 元组表示

每个对撞机都是一个包含父节点、对撞机节点和另一个父节点的 3 元组。

抛出:
NetworkXNotImplemented

如果 G 是无向图。

另见

v_结构

说明

此函数最初是为 DAG 设计的,但它也适用于循环图。由于循环因果图文献中也提到了对撞机 [2],因此此函数允许使用循环图。如果你需要输入图是无环的,建议像示例中那样进行测试。

参考文献

[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

示例

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