线性#

template<typename vertex_t, typename edge_t, typename weight_t>
weight_t hungarian(raft::handle_t const &handle, legacy::GraphCOOView<vertex_t, edge_t, weight_t> const &graph, vertex_t num_workers, vertex_t const *workers, vertex_t *assignments)#

在加权二分图上计算匈牙利算法。

匈牙利算法计算“作业”到“工人”的分配。此函数接受一个加权图和一个标识“工人”的顶点列表。加权图中的权重标识了将特定作业分配给工人的成本。该算法计算最小成本分配,并返回成本以及标识分配的向量。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。支持的值:int (有符号, 32位)

  • edge_t – 边标识符的类型。支持的值:int (有符号, 32位)

  • weight_t – 边权重的类型。支持的值:float 或 double。

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,

  • graph[in] cuGRAPH COO 图

  • num_workers[in] 工人集合中的顶点数量

  • workers[in] 指向工人顶点 ID 数组的设备指针

  • assignments[out] 指向将写入分配结果的数组的设备指针。该数组应与 num_workers 等长,并标识分配给该工人的顶点 ID(作业)

template<typename vertex_t, typename edge_t, typename weight_t>
weight_t hungarian(raft::handle_t const &handle, legacy::GraphCOOView<vertex_t, edge_t, weight_t> const &graph, vertex_t num_workers, vertex_t const *workers, vertex_t *assignments, weight_t epsilon)#

在加权二分图上计算匈牙利算法。

匈牙利算法计算“作业”到“工人”的分配。此函数接受一个加权图和一个标识“工人”的顶点列表。加权图中的权重标识了将特定作业分配给工人的成本。该算法计算最小成本分配,并返回成本以及标识分配的向量。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。支持的值:int (有符号, 32位)

  • edge_t – 边标识符的类型。支持的值:int (有符号, 32位)

  • weight_t – 边权重的类型。支持的值:float 或 double。

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,

  • graph[in] cuGRAPH COO 图

  • num_workers[in] 工人集合中的顶点数量

  • workers[in] 指向工人顶点 ID 数组的设备指针

  • assignments[out] 指向将写入分配结果的数组的设备指针。该数组应与 num_workers 等长,并标识分配给该工人的顶点 ID(作业)

  • epsilon[in] 定义将权重减少到零时的比较精度的参数。

template<typename vertex_t, typename weight_t>
weight_t hungarian(raft::handle_t const &handle, weight_t const *costs, vertex_t num_rows, vertex_t num_columns, vertex_t *assignments)#

在加权二分图上计算匈牙利算法。

匈牙利算法计算“作业”到“工人”的分配。此函数接受一个加权图和一个标识“工人”的顶点列表。加权图中的权重标识了将特定作业分配给工人的成本。该算法计算最小成本分配,并返回成本以及标识分配的向量。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。支持的值:int (有符号, 32位)

  • weight_t – 边权重的类型。支持的值:float 或 double。

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,

  • costs[in] 指向成本数组的指针,按行主序存储

  • num_rows[in] 密集矩阵中的行数

  • num_cols[in] 密集矩阵中的列数

  • assignments[out] 指向将写入分配结果的数组的设备指针。该数组应与 num_cols 等长,并标识分配给该工人的顶点 ID(作业)

template<typename vertex_t, typename weight_t>
weight_t hungarian(raft::handle_t const &handle, weight_t const *costs, vertex_t num_rows, vertex_t num_columns, vertex_t *assignments, weight_t epsilon)#

在加权二分图上计算匈牙利算法。

匈牙利算法计算“作业”到“工人”的分配。此函数接受一个加权图和一个标识“工人”的顶点列表。加权图中的权重标识了将特定作业分配给工人的成本。该算法计算最小成本分配,并返回成本以及标识分配的向量。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。支持的值:int (有符号, 32位)

  • weight_t – 边权重的类型。支持的值:float 或 double。

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,

  • costs[in] 指向成本数组的指针,按行主序存储

  • num_rows[in] 密集矩阵中的行数

  • num_cols[in] 密集矩阵中的列数

  • assignments[out] 指向将写入分配结果的数组的设备指针。该数组应与 num_cols 等长,并标识分配给该工人的顶点 ID(作业)

  • epsilon[in] 定义将权重减少到零时的比较精度的参数。