链接分析#
- template<typename vertex_t, typename edge_t, typename weight_t, typename result_t, bool multi_gpu>
void pagerank(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<weight_t const*> precomputed_vertex_out_weight_sums, std::optional<vertex_t const*> personalization_vertices, std::optional<result_t const*> personalization_values, std::optional<vertex_t> personalization_vector_size, result_t *pageranks, result_t alpha, result_t epsilon, size_t max_iterations = 500, bool has_initial_guess = false, bool do_expensive_check = false)#计算 PageRank 分数。
- 已弃用
此 API 将被弃用,以被下方返回算法元数据的新版本取代。
此函数计算一般(如果
personalization_vertices
是nullptr
)或个性化(如果personalization_vertices
不是nullptr
)的 PageRank 分数。
- 抛出:
cugraph::logic_error – 在输入参数错误或在达到
max_iterations
前未能收敛时。- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
weight_t – 边权重的类型。需要是浮点类型。
result_t – PageRank 分数的类型。
multi_gpu – 标志,指示模板实例化是针对单 GPU (false) 还是多 GPU (true)。
- 参数:
handle – RAFT handle 对象,用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法。
graph_view – 图视图对象。
edge_weight_view – 可选视图对象,存储
graph_view
的边权重。如果edge_weight_view.has_value()
== false,则假定边权重为 1.0。precomputed_vertex_out_weight_sums – 指向数组的指针,该数组存储顶点的出边权重总和(用于重用),或者为
std::nullopt
。如果为std::nullopt
,则重新计算这些值。在此函数外部计算这些值可以减少内存分配/释放次数,并且用户可以使用同一图的不同个性化向量重复计算 PageRank 分数。personalization_vertices – 指向数组的指针,该数组存储个性化顶点标识符(计算个性化 PageRank),或者为
std::nullopt
(计算一般 PageRank)。personalization_values – 指向数组的指针,该数组存储个性化集中顶点的个性化值。仅当
personalization_vertices
不是std::nullopt
时相关。personalization_vector_size – 个性化集的大小。如果 @personalization_vertices 不是
std::nullopt
,则personalization_vertices
和personalization_values
指向的数组大小应为personalization_vector_size
。pageranks – 指向输出 PageRank 分数数组的指针。
alpha – PageRank 阻尼因子。
epsilon – 用于检查收敛的误差容忍度。如果连续两次迭代之间 PageRank 值差异的总和小于图中顶点数乘以
epsilon
,则假定收敛。max_iterations – PageRank 最大迭代次数。
has_initial_guess – 如果设置为
true
,则 PageRank 输出数组(由pageranks
指向)中的值用作初始 PageRank 值。如果为 false,则初始 PageRank 值设置为 1.0 除以图中的顶点数。do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为
true
)。
- template<typename vertex_t, typename edge_t, typename weight_t, typename result_t, bool multi_gpu>
std::tuple<rmm::device_uvector<result_t>, centrality_algorithm_metadata_t> pagerank(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>> precomputed_vertex_out_weight_sums, std::optional<std::tuple<raft::device_span<vertex_t const>, raft::device_span<result_t const>>> personalization, std::optional<raft::device_span<result_t const>> initial_pageranks, result_t alpha, result_t epsilon, size_t max_iterations = 500, bool do_expensive_check = false)#计算 PageRank 分数。
.*
此函数计算一般(如果
personalization_vertices
是nullptr
)或个性化(如果personalization_vertices
不是nullptr
)的 PageRank 分数。
- 抛出:
cugraph::logic_error – 在输入参数错误或在达到
max_iterations
前未能收敛时。- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
weight_t – 边权重的类型。需要是浮点类型。
result_t – PageRank 分数的类型。
multi_gpu – 标志,指示模板实例化是针对单 GPU (false) 还是多 GPU (true)。
- 参数:
handle – RAFT handle 对象,用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法。
graph_view – 图视图对象。
edge_weight_view – 可选视图对象,存储
graph_view
的边权重。如果edge_weight_view.has_value()
== false,则假定边权重为 1.0。precomputed_vertex_out_weight_sums – 指向数组的指针,该数组存储顶点的出边权重总和(用于重用),或者为
std::nullopt
。如果为std::nullopt
,则重新计算这些值。在此函数外部计算这些值可以减少内存分配/释放次数,并且用户可以使用同一图的不同个性化向量重复计算 PageRank 分数。personalization – 可选元组,包含顶点的设备跨度,其中包含顶点标识符和个性化值(计算个性化 PageRank),或
std::nullopt
(计算一般 PageRank)。initial_pageranks – 可选设备跨度,包含初始 PageRank 值。如果指定,此数组将用作初始值,并且 PageRank 值将在原地更新。如果未指定,则初始值将设置为 1.0 除以图中的顶点数,并且返回值将包含一个包含结果 PageRank 值的
rmm::device_uvector
。alpha – PageRank 阻尼因子。
epsilon – 用于检查收敛的误差容忍度。如果连续两次迭代之间 PageRank 值差异的总和小于图中顶点数乘以
epsilon
,则假定收敛。max_iterations – PageRank 最大迭代次数。
do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为
true
)。- 返回:
包含可选 PageRank 结果(如果
initial_pageranks
设置为std::nullopt
则填充)以及指示运行多少次迭代以及算法是否收敛的元数据的元数据结构的元组。
- template<typename vertex_t, typename edge_t, typename result_t, bool multi_gpu>
std::tuple<result_t, size_t> hits(raft::handle_t const &handle, graph_view_t<vertex_t, edge_t, true, multi_gpu> const &graph_view, result_t *hubs, result_t *authorities, result_t epsilon, size_t max_iterations, bool has_initial_hubs_guess, bool normalize, bool do_expensive_check)#计算 HITS 分数。
.*
此函数计算图中顶点的 HITS 分数
- 抛出:
cugraph::logic_error – 在输入参数错误时
- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
multi_gpu – 标志,指示模板实例化是针对单 GPU (false) 还是多 GPU (true)。
- 参数:
handle – RAFT handle 对象,用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法。
graph_view – 图视图对象。
hubs – 指向输入/输出 hub 分数数组的指针。
authorities – 指向输出 authorities 分数数组的指针。
epsilon – 用于检查收敛的误差容忍度。如果连续两次迭代之间 hub 值差异的总和小于
epsilon
,则假定收敛。max_iterations – HITS 最大迭代次数。
has_initial_guess – 如果设置为
true
,则 hubs 输出数组(由hubs
指向)中的值用作初始 hub 值。如果为 false,则初始 hub 值设置为 1.0 除以图中的顶点数。normalize – 如果设置为
true
,则在返回之前对最终的 hub 和 authority 分数进行归一化(返回的 hub 和 authority 分数数组的 L1 范数为 1.0)。do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为
true
)。- 返回:
std::tuple<result_t, size_t> 包含最后两次迭代的 hub 分数差异总和以及达到最终结果所需的总迭代次数的元组