rustworkx.PyDiGraph.remove_node_retain_edges_by_key#

PyDiGraph.remove_node_retain_edges_by_key(node, /, key=None, *, use_outgoing=False)#

从图中移除一个节点,并在入边和出边具有相同权重的情况下,通过 Python 对象相等性为前驱节点与后继节点之间添加边。

此函数的最低时间复杂度为 \(\mathcal O(e_i + e_o)\),其中 \(e_i\) 表示传入边的数量,\(e_o\) 表示传出边的数量 (完整复杂度取决于需要创建的新边的数量)。

所有具有相等权重的前驱和后继节点对之间将添加边。因此,任何仅出现在前驱边上的权重将不会出现在输出中,因为没有后继节点与之配对。

如果存在多条权重相同的边,新边所使用的确切Python对象是一个实现细节,可能会发生变动。唯一保证的是:对于给定图,该过程将是确定性的;若 use_outgoing=False(默认值),则从入边中选取;若 use_outgoing=True,则从出边中选取。

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

  • key (Callable) – 一个可调用的Python对象,对每个连接的边调用一次,用于生成该权重的"key"。该对象仅接收一个位置参数(边的权重),并应返回一个可哈希且能与其他相关键实现相等性检查的Python对象。如果未提供,则直接使用边的权重。

  • use_outgoing (bool) – 如果为 False(默认值),新边将使用传入边的权重。如果为 True,则它们将使用传出边的权重。