rustworkx.PyDAG.remove_node_retain_edges#

PyDAG.remove_node_retain_edges(node, /, use_outgoing=False, condition=None)#

从图中移除一个节点并从所有前置节点添加所有后继节点的边

默认情况下,移除节点后保留的边将使用原输入边的数据/权重。

该函数的最低时间复杂度为 \(\mathcal O(e_i e_o)\),其中 \(e_i\)\(e_o\) 分别表示入边和出边的数量。 如果你的 condition 条件可以转换为两个可哈希量之间的相等判断,建议 改用 remove_node_retain_edges_by_key();或者如果你的 condition 条件是 边权重的对象标识引用,建议使用 remove_node_retain_edges_by_id()

Parameters:
  • node (int) – 要移除的节点索引。如果图中不存在该索引,将被忽略,此函数将不会有任何效果。

  • use_outgoing (bool) – 如果设置为 True,来自 node 的外向边的权重/数据将用于保留的边中,而不是默认使用来自传入边的权重/数据。

  • condition (Callable) –

    一个可调用对象,将传入2个边权重/数据对象,一个来自进入node的输入边,另一个用于输出边,并返回一个bool值表示是否应保留该边。例如将此关键字参数设置为:

    lambda in_edge, out_edge: in_edge == out_edge
    

    将仅当输入到node的边具有与输出边相同的数据负载时才保留边缘。