图引擎服务 GES
图引擎服务 GES
- 最新动态
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 如何使用图引擎服务
- 准备工作
- 权限管理
- 元数据操作
- 创建图
- 管理图
- 数据迁移
- 访问图和分析图
- 查看图任务
- 配置图操作权限
- 运维监控
- 套餐包管理
-
算法参考
- 算法一览表
- PageRank算法
- PersonalRank算法
- k核算法(k-core)
- k跳算法(k-hop)
- 最短路径算法(Shortest Path)
- 全最短路算法(All Shortest Paths)
- 带一般过滤条件最短路径(Filtered Shortest Path)
- 单源最短路算法(SSSP)
- 点集最短路(Shortest Path of Vertex Sets)
- 关联路径算法(n-Paths)
- 紧密中心度算法(Closeness Centrality)
- 标签传播算法(Label Propagation)
- Louvain算法
- 关联预测算法(Link Prediction)
- Node2vec算法
- 实时推荐算法(Real-time Recommendation)
- 共同邻居算法(Common Neighbors)
- 连通分量算法(Connected Component)
- 度数关联度算法(Degree Correlation)
- 三角计数算法(Triangle Count)
- 聚类系数算法(Cluster Coefficient)
- 中介中心度算法(Betweenness Centrality)
- 边中介中心度(Edge-betweenness Centrality)
- OD中介中心度(OD-betweenness Centrality)
- 单点环路检测(Single Vertex Circles Detection)
- 点集共同邻居(Common Neighbors of Vertex Sets)
- 点集全最短路(All Shortest Paths of Vertex Sets)
- 带一般过滤条件环路检测(filtered circle detection)
- 子图匹配(Subgraph Matching)
- 带过滤全对最短路径(Filtered All Pairs Shortest Paths)
- 带过滤全最短路径(Filtered All Shortest Paths)
- TopicRank算法
- 带过滤的n_paths算法(filtered_n_paths)
- 时序路径分析(Temporal Paths)
- 开发指南
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 管理面API(V2)
-
业务面API
-
内存版
- 点操作API
- 边操作API
- 元数据操作API
- 索引操作API
- Gremlin操作API
-
算法API
- 执行算法(1.0.0)
-
算法API参数参考
- 算法公共参数
- pagerank算法(1.0.0)
- personalrank算法(1.0.0)
- k核算法(kcore)(1.0.0)
- k跳算法(k_hop)(1.0.0)
- 共同邻居(common_neighbors)(1.0.0)
- 点集共同邻居(common_neighbors_of_vertex_sets)(2.2.13)
- 关联预测(link_prediction)(1.0.0)
- 最短路径(shortest_path)(2.1.5)
- 全最短路(all_shortest_paths)(1.0.12)
- 带一般过滤条件最短路径(filtered_shortest_path)(2.2.4)
- 单源最短路(sssp)(1.0.0)
- 点集最短路(shortest_path_of_vertex_sets)(2.1.5)
- 关联路径(n_paths)(1.1.2)
- 带过滤的n_paths算法(filtered_n_paths)(2.2.22)
- 带过滤全对最短路径(filtered_all_pairs_shortest_paths)(2.2.17)
- 点集全最短路(all_shortest_paths_of_vertex_sets)(2.2.15)
- 带过滤全最短路径(filtered_all_shortest_paths)(2.2.17)
- 连通分量(connected_component)(1.0.0)
- 标签传播(label_propagation)(2.1.8)
- louvain算法(louvain)(2.2.1)
- node2vec算法(node2vec)(1.0.5)
- 实时推荐(realtime_recommendation)(2.2.21)
- 度数关联度(degree_correlation)(1.0.0)
- 三角计数(triangle_count)(1.0.0)
- 聚类系数(cluster_coefficient)(1.0.0)
- 紧密中心度(closeness)(1.0.0)
- 中介中心度算法(betweenness)(2.2.4)
- 边中介中心度(edge_betweenness)(2.2.4)
- OD中介中心度(od_betweenness)(2.2.4)
- 单点环路检测(single_vertex_circles_detection)(2.2.4)
- 带一般过滤条件环路检测(filtered_circle_detection)(2.2.15)
- 子图匹配(subgraph_matching)(2.2.16)
- topicrank算法(topicrank)(2.2.20)
- 动态图分析API
- 路径API
- 图统计API
- 图操作API
- 子图操作API
- Job管理API
- 自定义操作API
- Cypher操作API(2.2.16)
- Filtered-query API(2.2.13)
- Filtered-query V2(2.3.6)
- DSL查询API(2.3.14)
- 通过导入文件更新点边的指定属性(2.2.13)
- 通过读取文件删除点边(2.2.15)
- 运维监控API
-
持久化版
- 持久化版规格说明
- 点操作API
- 边操作API
- 元数据操作API
- 索引操作API
- HyG图管理API
-
HyG算法API
- 执行算法
-
算法API参数参考
- 算法公共参数
- pagerank算法
- personalrank算法(personalrank)
- k核算法(kcore)
- k跳算法(k_hop)
- 点集共同邻居(common_neighbors_of_vertex_sets)
- 最短路径(shortest_path)
- 全最短路(all_shortest_paths)
- 全对最短路径(all_pairs_shortest_paths)
- 单源最短路算法(sssp)
- 点集最短路(shortest_path_of_vertex_sets)
- 点集全最短路(all_shortest_paths_of_vertex_sets)
- 连通分量(connected_component)
- 三角计数算法(triangle_count)
- 紧密中心度算法(closeness)
- 中介中心度算法(betweenness)
- 边中介中心度(edge_betweenness)
- OD中介中心度(od_betweenness)
- 单点环路检测(single_vertex_circles_detection)
- topicrank算法(topicrank)
- louvain算法(louvain)
- Bigclam算法(bigclam)
- Cesna算法(cesna)
- infomap算法(infomap)
- 标签传播算法(label_propagation)
- 子图匹配算法(subgraph matching)
- 关联预测算法(link_prediction)
- n_paths算法(n_paths)
- 聚类系数算法(cluster_coefficient)
- 算法结果TXT格式说明
- 执行DSL算法
- DSL语法说明
- HyG Job管理API
- 原生算法API
- 图统计API
- 图操作API
- Job管理API
- Cypher操作API
- 交互式事务API
- 运维监控API
-
内存版
- 应用示例
- 权限策略和授权项
- 云监控服务监控指标说明
- 历史API
- 附录
- 常见问题
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
自定义图分析算法编程示例
自定义SSSP算法
# 导入必要的包 from hyg.analytics.graph import load_base_graph from hyg.analytics.model import pregel_types, PregelModel # 指定graph_name参数,加载图数据 graph = load_base_graph("movie") # 通过外部id获取内部id SOURCE_NODE = graph.nid(100) # 基于Pregel模型实现自定义SSSP算法,并设置顶点值类型ntype为int, # 消息类型mtype默认和ntype保持一致,combiner类型设置为min @pregel_types(ntype=int, combiner=min) class PregelSSSP(PregelModel): @staticmethod def compute(ctx, nid, msgs): if ctx.superstep == 0: ctx.set_value(nid, 10000) min_dist = 0 if nid == SOURCE_NODE else 10000 if len(msgs) != 0: min_dist = min(min_dist, min(msgs)) if min_dist < ctx.value(nid): ctx.set_value(nid, min_dist) for e in ctx.out_edges(nid): ctx.send(ctx.edge_dst(e), min_dist + 1) ctx.halt(nid) # 运行自定义SSSP算法,并获取结果 result = graph.run_pregel(PregelSSSP) print(type(result), result)
自定义PageRank算法
# 导入必要的包 from hyg.analytics.graph import load_base_graph from hyg.analytics.model import pregel_types, PregelModel # 指定graph_name参数,加载图数据 graph = load_base_graph("movie") # 基于Pregel模型实现自定义PageRank算法, # 设置顶点值类型ntype为float,消息类型mtype默认 # 和ntype保持一致,combiner类型设置为sum @pregel_types(ntype=float, combiner=sum) class PregelPageRank(PregelModel): @staticmethod def init(ctx, nid): ctx.set_value(nid, 1.0) @staticmethod def compute(ctx, nid, msgs): if ctx.superstep >= 1: new_value = 0.85 * sum(msgs) + 0.15 / ctx.num_nodes if (abs(new_value - ctx.value(nid)) < 0.001 or ctx.superstep == 1000): ctx.halt(nid) return ctx.set_value(nid, new_value) # 仅在debug模式debug_mode=True时, # 支持自定义算法中使用print调试语句 print(f"in step {ctx.superstep}, node nid {nid}, " f"value {ctx.value(nid)}") out_edges = ctx.out_edges(nid) if len(out_edges) > 0: new_msg = ctx.value(nid) / len(out_edges) for e in out_edges: ctx.send(ctx.edge_dst(e), new_msg) # debug运行自定义PageRank算法,并获取结果 result = graph.run_pregel(PregelPageRank, debug_mode=True) print(type(result), result)
自定义khop算法
# 导入必要的包 from hyg.analytics.graph import load_base_graph from hyg.analytics.model import pregel_types, PregelModel # 指定graph_name参数,加载图数据 graph = load_base_graph("movie") # 设置全局值用于在自定义算法中使用 INFINITY_VALUE = False SOURCE_NODE = graph.nid("100") MAX_HOP = 3 # 基于Pregel模型实现自定义khop算法, # 设置顶点值类型ntype为bool,用来表示是否被遍历到, # bool类型不支持combiner使用,即使设置了combiner也会被忽略掉 @pregel_types(ntype=bool) class PregelKHop(PregelModel): @staticmethod def compute(ctx, nid, msgs) -> None: if ctx.superstep == 0: if nid == SOURCE_NODE: ctx.set_value(nid, True) if ctx.superstep < MAX_HOP: for e in ctx.out_edges(nid): ctx.send(ctx.edge_dst(e), True) else: ctx.set_value(nid, INFINITY_VALUE) else: if ctx.value(nid) == INFINITY_VALUE: ctx.set_value(nid, True) if ctx.superstep < MAX_HOP: for e in ctx.out_edges(nid): ctx.send(ctx.edge_dst(e), True) ctx.halt(nid) # 运行自定义khop算法,并对结果通过result_filter参数进行过滤 result = graph.run_pregel(PregelKHop, result_filter= lambda ctx, nid: nid != SOURCE_NODE and ctx.value(nid)) print(len(result), result.keys())
父主题: DSL语法说明