rustworkx.PyDAG.contract_nodes#

PyDAG.contract_nodes(nodes, obj, /, check_cycle=None, weight_combo_fn=None)#

使用一个新节点替换一组节点。

Parameters:
  • nodes (list[int]) – 一组待移除并被新节点替换的节点。图中不存在的任何节点将被忽略。 若为空,则此方法行为类似 add_node() (但速度较慢)。

  • obj (S) – 要关联到新节点的数据/权重。

  • check_cycle (bool) – 如果设为 True,会在修改图形前验证合并不引入环。如果设为 False,则跳过验证。如果未提供,将从当前 PyDiGraph 实例继承 check_cycle 的值。

  • weight_combo_fn (Callable) – 一个可选的 Python 可调用对象,当指定时,用于合并由收缩引入的并行边,这种情况会在 nodes 中的多个节点具有来自同一源节点的入边,或 nodes 中的多个节点具有指向同一目标节点的出边时发生。如果此实例为多重图,请保留此参数未指定以保留并行边。如果在非多重图时未指定,则会基于内部迭代顺序(可能发生变化)随机选择其中一个边的权重,对并行边及其权重进行合并。

Returns:

新创建节点的索引

Return type:

整数

Raises:

DAGWouldCycle – 循环检查已启用且该收缩操作将引入循环。