中心性#

template<typename vertex_t, typename edge_t, typename weight_t, typename result_t>
void betweenness_centrality(const raft::handle_t &handle, legacy::GraphCSRView<vertex_t, edge_t, weight_t> const &graph, result_t *result, bool normalized = true, bool endpoints = false, weight_t const *weight = nullptr, vertex_t k = 0, vertex_t const *vertices = nullptr)#

计算图的介数中心性。

一个顶点的介数中心性是所有通过该顶点的最短路径对的比例之和。

当前实现不支持带权图。

抛出:

cugraph::logic_error – 如果 result == nullptrnumber_of_sources < 0number_of_sources !=0 and sources == nullptr

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

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

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

  • result_t – 计算结果的类型。支持的值:float 或 double

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,将选择多 GPU 版本。

  • graph[in] cuGRAPH 图描述符,应包含 CSR 形式的连接信息

  • result[out] 中心性分数的设备数组

  • normalized[in] 如果为 true,返回归一化分数;如果为 false,返回未归一化分数。

  • endpoints[in] 如果为 true,分数计算包括路径的端点;如果为 false 则不包括。

  • weight[in] 如果指定,则为每条边的权重的设备数组

  • k[in] 如果指定,则为 vertices 数组中定义的顶点样本数量。

  • vertices[in] 如果指定,则为用于估计介数的顶点 ID 的主机数组,这些顶点将作为遍历算法的源以获取最短路径计数器。

  • total_number_of_source_used[in] 如果指定,当使用子采样时,使用此数字来归一化结果,这允许在多次调用中累积结果。

template<typename vertex_t, typename edge_t, typename weight_t, typename result_t>
void edge_betweenness_centrality(const raft::handle_t &handle, legacy::GraphCSRView<vertex_t, edge_t, weight_t> const &graph, result_t *result, bool normalized = true, weight_t const *weight = nullptr, vertex_t k = 0, vertex_t const *vertices = nullptr)#

计算图的边介数中心性。

一条边的介数中心性是所有通过该边的最短路径对的比例之和。当前不支持 weight 参数。

抛出:

cugraph::logic_error – 如果 result == nullptrnumber_of_sources < 0number_of_sources !=0 and sources == nullptrendpoints == true

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

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

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

  • result_t – 计算结果的类型。支持的值:float 或 double

参数:
  • handle[in] 库句柄 (RAFT)。如果在句柄中设置了通信器,将选择多 GPU 版本。

  • graph[in] cuGraph 图描述符,应包含 CSR 形式的连接信息

  • result[out] 中心性分数的设备数组

  • normalized[in] 如果为 true,返回归一化分数;如果为 false,返回未归一化分数。

  • weight[in] 如果指定,则为每条边的权重的设备数组

  • k[in] 如果指定,则为 vertices 数组中定义的顶点样本数量。

  • vertices[in] 如果指定,则为用于估计介数的顶点 ID 的主机数组,这些顶点将作为遍历算法的源以获取最短路径计数器。

  • total_number_of_source_used[in] 如果指定,当使用子采样时,使用此数字来归一化结果,这允许在多次调用中累积结果。

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> betweenness_centrality(const raft::handle_t &handle, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, std::optional<raft::device_span<vertex_t const>> vertices, bool const normalized = true, bool const include_endpoints = false, bool const do_expensive_check = false)#

计算图的介数中心性。

一个顶点的介数中心性是所有通过该顶点的最短路径对的比例之和。

当前实现不支持带权图。

vertices 是可选的。如果未指定,算法将计算精确介数(使用从所有顶点进行的遍历计算介数)。

如果将 vertices 指定为 device_span,它将使用提供的 vertices 作为遍历的种子来计算近似介数。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。必须是整数类型。

  • edge_t – 边标识符的类型。必须是整数类型。

  • weight_t – 边权重的类型。必须是浮点类型。

  • multi_gpu – 指示模板实例化应针对单 GPU(false)的标志

参数:
  • handle – RAFT 句柄对象,用于封装资源(例如 CUDA 流、通信器和各种 CUDA 库的句柄)以运行图算法。

  • graph_view – 图视图对象。

  • edge_weight_view – 可选的视图对象,用于存储 graph_view 的边权重。目前,edge_weight_view.has_value() 应为 false,因为我们尚不支持加权图。

  • vertices – 可选,如果指定,这提供了一个 device_span,用于标识预选顶点列表,作为遍历的种子以近似介数。

  • normalized – 指示结果是否应归一化的标志

  • include_endpoints – 指示路径端点是否应计入的标志

  • do_expensive_check – 对输入参数执行昂贵检查的标志(如果设置为 true)。

返回:

包含中心性的设备向量。

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
edge_property_t<graph_view_t<vertex_t, edge_t, false, multi_gpu>, weight_t> edge_betweenness_centrality(const raft::handle_t &handle, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, std::optional<raft::device_span<vertex_t const>> vertices, bool normalized = true, bool do_expensive_check = false)#

计算图的边介数中心性。

一条边的介数中心性是所有通过该边的最短路径对的比例之和。当前不支持 weight 参数。

vertices 是可选的。如果未指定,算法将计算精确介数(使用从所有顶点进行的遍历计算介数)。

如果将 vertices 指定为 device_span,它将使用提供的 vertices 作为遍历的种子来计算近似介数。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符的类型。必须是整数类型。

  • edge_t – 边标识符的类型。必须是整数类型。

  • weight_t – 边权重的类型。必须是浮点类型。

  • multi_gpu – 指示模板实例化应针对单 GPU(false)的标志

参数:
  • handle – RAFT 句柄对象,用于封装资源(例如 CUDA 流、通信器和各种 CUDA 库的句柄)以运行图算法。

  • graph_view – 图视图对象。

  • edge_weight_view – 可选的视图对象,用于存储 graph_view 的边权重。目前,edge_weight_view.has_value() 应为 false,因为我们尚不支持加权图。

  • vertices – 可选,如果指定,这提供了一个 device_span,用于标识预选顶点列表,作为遍历的种子以近似介数。

  • normalized – 指示是否归一化结果的标志

  • do_expensive_check – 对输入参数执行昂贵检查的标志(如果设置为 true)。

返回:

包含中心性的 edge_property_t

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> eigenvector_centrality(raft::handle_t const &handle, graph_view_t<vertex_t, edge_t, true, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, std::optional<raft::device_span<weight_t const>> initial_centralities, weight_t epsilon, size_t max_iterations = 500, bool do_expensive_check = false)#

计算特征向量中心性分数。

.*

此函数使用幂迭代法计算特征向量中心性分数。

抛出:

cugraph::logic_error – 当输入参数错误或在 max_iterations 之前未能收敛时。

模板参数:
  • vertex_t – 顶点标识符的类型。必须是整数类型。

  • edge_t – 边标识符的类型。必须是整数类型。

  • weight_t – 边权重的类型。必须是浮点类型。

  • multi_gpu – 指示模板实例化应针对单 GPU(false)还是多 GPU(true)的标志。

参数:
  • handle – RAFT 句柄对象,用于封装资源(例如 CUDA 流、通信器和各种 CUDA 库的句柄)以运行图算法。

  • graph_view – 图视图对象。

  • edge_weight_view – 可选的视图对象,用于存储 graph_view 的边权重。如果 edge_weight_view.has_value() == false,则假定边权重为 1.0。

  • initial_centralities – 可选的设备 span,包含特征向量中心性的初始值

  • epsilon – 检查收敛的误差容忍度。如果连续两次迭代之间特征向量中心性值的差异之和小于图的顶点数乘以 epsilon,则认为已收敛。

  • max_iterations – 幂迭代的最大次数。

  • do_expensive_check – 对输入参数执行昂贵检查的标志(如果设置为 true)。

返回:

包含中心性的设备向量。

template<typename vertex_t, typename edge_t, typename weight_t, typename result_t, bool multi_gpu>
void katz_centrality(raft::handle_t const &handle, graph_view_t<vertex_t, edge_t, true, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, result_t const *betas, result_t *katz_centralities, result_t alpha, result_t beta, result_t epsilon, size_t max_iterations = 500, bool has_initial_guess = false, bool normalize = false, bool do_expensive_check = false)#

计算 Katz 中心性分数。

.*

此函数计算 Katz 中心性分数。

抛出:

cugraph::logic_error – 当输入参数错误或在 max_iterations 之前未能收敛时。

模板参数:
  • vertex_t – 顶点标识符的类型。必须是整数类型。

  • edge_t – 边标识符的类型。必须是整数类型。

  • weight_t – 边权重的类型。必须是浮点类型。

  • result_t – Katz 中心性分数的类型。

  • multi_gpu – 指示模板实例化应针对单 GPU(false)还是多 GPU(true)的标志。

参数:
  • handle – RAFT 句柄对象,用于封装资源(例如 CUDA 流、通信器和各种 CUDA 库的句柄)以运行图算法。

  • graph_view – 图视图对象。

  • edge_weight_view – 可选的视图对象,用于存储 graph_view 的边权重。如果 edge_weight_view.has_value() == false,则假定边权重为 1.0。

  • betas – 指向一个数组的指针,该数组存储在每次迭代中要添加到每个顶点新的 Katz 中心性分数的值,或为 nullptr。如果设置为 nullptr,则使用常量 beta

  • katz_centralities – 指向输出 Katz 中心性分数数组的指针。

  • alpha – Katz 中心性衰减因子。此值应小于 graph 的邻接矩阵最大特征值的倒数。

  • beta – 在每次迭代中要添加到每个顶点新的 Katz 中心性分数的常数值。仅在 betasnullptr 时相关。

  • epsilon – 检查收敛的误差容忍度。如果连续两次迭代之间 Katz 中心性值的差异之和小于图的顶点数乘以 epsilon,则认为已收敛。

  • max_iterations – Katz 中心性迭代的最大次数。

  • has_initial_guess – 如果设置为 true,则 Katz 中心性输出数组中的值(由 katz_centralities 指向)将用作初始 Katz 中心性值。如果为 false,则使用零作为初始 Katz 中心性值。

  • normalize – 如果设置为 true,则最终的 Katz 中心性分数在返回之前会进行归一化(返回的 Katz 中心性分数数组的 L2 范数为 1.0)。

  • do_expensive_check – 对输入参数执行昂贵检查的标志(如果设置为 true)。