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的边具有与输出边相同的数据负载时才保留边缘。