# 图算法接口
# 接口列表:
# 中心度算法
# 分类/相似度算法
# 社群算法
# 路径查找算法
# 业务场景算法
# 中介中心度查询
# 简述
将图视为有向图,计算点的中介中心度。主要基于经过该点的最短路径数量。
# 方法
void query_betcentrality(score_return& _return,
const std::string& db_name,
const int32_t search_direction,
const int32_t hop);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
search_direction | int32_t | 搜索方向 | 否 | * | 2 | 方向参数说明 |
hop | int32_t | 终止跳数 | 否 | * | 5 | 大于等于1,如需搜索全图可给一个很大的数值如100 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | score_return | 返回了点id与其对应的中心度分数 | 否 | * | * |
# 接近中心度查询
# 简述
将图视为无向图,计算点的接近中心度。主要基于点到图中其他各点的最短路径长度。
# 方法
void query_clocentrality(score_return& _return,
const std::string& db_name,
const bool if_WF,
const int32_t hop);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
if_WF | bool | 是否使用Wasserman and Faust提出的改进方式 | 否 | * | 2 | 对于全联通图,是否使用改进方法结果不变。 |
hop | int32_t | 终止跳数 | 否 | * | 5 | 大于等于1,如需搜索全图可给一个很大的数值如100 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | score_return | 返回了点id与其对应的中心度分数 | 否 | * | * |
# 网页排名查询
# 简述
即pagerank算法。将图视为有向图,根据边上权重值,基于传播模型,计算图中节点的重要程度。用户可自定义传播模型参数。
# 方法
void query_pagerank(score_return& _return,
const std::string &db_name,
const double damping_factor,
const int32_t epoch_limit,
const double max_convergence_error,
const double vertex_init_value,
const std::string &edge_type,
const std::string &edge_props_name);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
damping_factor | double | 损耗因子 | 否 | * | 0.85 | |
epoch_limit | int | 迭代上限 | 否 | * | 5 | |
max_convergence_error | double | 最大收敛误差 | 否 | * | 0.0001 | |
vertex_init_value | double | 节点初始分数 | 否 | * | 1 | |
edge_type | string | 权重边类型 | 否 | * | "edge" | 如没有权重属性,此属性可给空串。 |
edge_props_name | string | 权重属性名 | 否 | * | "value" | 权重属性需为权重边上的数值类型属性。 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | score_return | 返回了点id与其对应的重要程度的分数 | 否 | * | * |
# 杰卡德相似度查询
# 简述
将图视为有向图,基于邻居节点,计算两个节点的相似度。
内容升级中。
# Louvain查询
# 简述
将图视为无向图,基于拓扑结构与边权重计算出的模块分数,为点划分社群。
# 方法
void query_louvain(community_return& _return,
const std::string& db_name,
const std::string& edge_type,
const std::string& edge_props_name);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
edge_type | string | 权重边 | 否 | * | “relation” | 如没有权重属性,此属性可给空串。 |
edge_props_name | string | 权重属性 | 否 | * | “weight” | 权重属性需为权重边上的数值类型属性。 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | community_return | 返回了点id与其对应的社群 | 否 | * | * |
# 标签传播查询
# 简述
Label Propagation Algorithm in semi-synchronous way,半同步标签传播算法,将图视为有向图,基于半同步标签传播理论,将图中的节点进行社群划分,分类表现较好。
# 方法
void query_lpa(community_return& _return,
const std::string& db_name,
const int32_t epoch_limit);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
epoch_limit | int | 迭代上限 | 否 | * | 20 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | community_return | 返回了点id与其对应的社群 | 否 | * | * |
# 同步标签传播查询
# 简述
Label Propagation Algorithm in synchronous way,将图视为有向图,基于同步标签传播理论,避免了循环传播情况,将图中的节点进行社群划分,速度快于标签传播算法。
# 方法
void query_lpa_sync(community_return& _return,
const std::string& db_name,
const int32_t epoch_limit);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
epoch_limit | int | 迭代上限 | 否 | * | 20 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | community_return | 返回了点id与其对应的社群 | 否 | * | * |
# 强连通分量查询
# 简述
Strongly Connected Components算法,将图视为有向图,查找图中的强连通分量。
# 方法
void query_scc(community_return& _return,
const std::string& db_name);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | community_return | 返回了点id与其对应的社群 | 否 | * | * |
# 弱连通分量查询
# 简述
Weakly Connected Components算法,将图视为无向图,查找图中的弱连通分量。
# 方法
void query_wcc(community_return& _return,
const std::string& db_name);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | community_return | 返回了点id与其对应的社群 | 否 | * | * |
# dijkstra查询
# 简述
将图视为有向图,根据边上的权重值,查找给定两点间最短路径。
内容升级中。
# 单条最短路径查询
# 简述
将图视为有向图,查找两个节点的一条最短路径。
内容升级中。
# 随机游走查询
# 简述
将图视为有向图,基于游走模型,给出给定节点的游走路线。用户可自定义游走模型的参数,控制深度搜索与广度搜索的比例。
内容升级中。
# 资金流向查询
# 简述
用于查找指定用户在指定时间范围内的资金流向情况。
# 方法
void query_money_flow(money_flow_return &_return,
const std::string &db_name,
const int32_t start_node,
const int64_t start_time,
const int64_t end_time,
const int32_t money_percent,
const int64_t time_window,
const std::string &edge_type,
const std::string &time_props,
const std::string &money_props,
const int32_t mode);
# 参数
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
db_name | string | 数据库名称 | 否 | * | "ezoo" | |
start_node | int32_t | 起点内部id | 否 | * | 0 | |
start_time | int64_t | 时间起点(毫秒级时间戳) | 否 | * | 0 | |
end_time | int64_t | 时间终点(毫秒级时间戳) | 否 | * | 1 | |
money_percent | int32_t | 金钱百分比,一个大于0小于100的整数,最终将仅考虑大于总钱数此比例大小的转账 | 否 | * | 1 | |
time_window | int64_t | 转账时间窗口,前后两笔转账的最大间隔时间 (毫秒级时间戳) | 否 | * | 1 | |
edge_type | string | 转账边类型 | 否 | * | "edge" | |
time_props | string | 转账时间属性 | 否 | * | "time" | |
money_props | string | 转账金钱属性 | 否 | * | "money" | |
mode | int32_t | 模式,当模式为0,仅返回资金流向图,当模式为1,返回资金流向图,各节点与起始节点的资金。 | 否 | * | 1 |
# 返回值
参数列表 | 类型 | 描述 | 是否可空 | 默认值 | 示例 | 备注 |
---|---|---|---|---|---|---|
_return | _return | 返回资金流向图与各节点上的资金。 | 否 | * | * |