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 – 循环检查已启用且该收缩操作将引入循环。