当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cugraph.linear_assignment.hungarian用法及代码示例


用法:

cugraph.linear_assignment.hungarian(G, workers, epsilon=None)

针对对称的加权二分图执行匈牙利算法。

作为二分图,图的顶点集可以划分为两个不相交的集合,使得所有边都将一个集合的顶点连接到另一个集合的顶点。工人变量标识一组顶点,另一组是不在工人集中的所有顶点(V - 工人)。

边权重反映了将特定工作分配给工人的成本。

匈牙利算法识别出最低成本的顶点匹配,这样所有可以分配工作的工人都被准确地分配到工作中。

参数

Gcugraph.Graph

cuGraph 图说明符,应包含连接信息作为边列表。边权重是必需的。如果未提供边列表,则将对其进行计算。

workerscudf.Series 或 cudf.DataFrame

一个序列或列,用于标识工作集中顶点的顶点 ID。如果是multi-column 顶点,它应该是一个 cudf.DataFrame。 G 中所有不在工作集中的顶点都被隐式分配给工作集。

epsilonfloat/double(匹配图中的权重),可选(默认=无)

用于确定值何时足够接近零以考虑 0。在 C++ 代码中默认(如果未指定)为 1e-6。不用于整数权重类型。

返回

cost匹配 cost.dtype

整体任务的成本

dfcudf.DataFrame

df[‘vertex’][i] 给出第 i 个顶点的顶点 ID。此列中仅定义工作人员列表中的顶点。

df[‘assignment’][i] 给出分配给相应顶点的“job” 的顶点id。

例子

>>> # Download dataset from https://github.com/rapidsai/cugraph/datasets/..
>>> #  M = cudf.read_csv(datasets_path / 'bipartite.csv', delimiter=' ',
>>> #                   dtype=['int32', 'int32', 'float32'], header=None)
>>> # G = cugraph.Graph()
>>> # G.from_cudf_edgelist(M, source='0', destination='1', edge_attr='2')
>>> # cost, df = cugraph.hungarian(G, workers)

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cugraph.linear_assignment.hungarian。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。