概述
诱导子图算法可以根据一组给定的点计算出相应的诱导子图(Induced Subgraph),并以路径的形式返回该诱导子图中的边。诱导子图是图论中的一个基本概念,常用来挖掘目标实体之间的直接关联关系。
基本概念
诱导子图
指定图中的一组点为初始点,并找出两个端点均为这些初始点的所有边,这些初始点和找到的边就构成了一张诱导子图。

上图中所有红色边的两个端点均为红色节点,其余黑色边均至少有一个端点不是红色节点,图中红色节点和红色边即为一张诱导子图。
特殊处理
孤点、不连通图
孤点是有效的起始点。
如果给定的多个初始点位于图的不同连通分量中,那么这些初始点将会在各连通分量中分别产生诱导子图。
自环边
起始点的自环边必然是诱导子图中的边。
有向边
对于有向边,本算法会忽略边的方向,按照无向边进行计算。
结果和统计值
以下面包含 10 个点的图为例,运行诱导子图算法:

算法结果:指定点 UUID = 1,3,4,7,10,返回找到的诱导子图(一步路径列表)
1 -->[102]--> 3
3 -->[105]--> 4
4 -->[106]--> 1
4 -->[107]--> 1
7 -->[109]--> 7
算法统计值:无
命令和参数配置
- 命令:
algo(subgraph)
params()
参数配置项如下:
名称 | 类型 | 默认值 |
规范 |
描述 |
---|---|---|---|---|
ids 或 uuids | []_id 或 []_uuid |
/ | 必填 | 需要组装的点的 ID 或 UUID 列表 |
limit | int | -1 | >=-1 | 需要返回的结果条数,-1 或忽略表示返回所有结果 |
算法执行
任务回写
1. 文件回写
配置项 |
各列数据 | 描述 |
---|---|---|
filename | _id--[_uuid]--_id |
起点 ID -- 边 UUID -- 终点 ID |
示例:指定点 UUID = 1,3,4,7,10 计算诱导子图,将算法结果回写至名为 paths 的文件
algo(subgraph).params({
uuids: [1,3,4,7,10]
}).write({
file:{
filename: "paths"
}
})
2. 属性回写
算法不支持属性回写。
3. 统计回写
算法无统计值。
直接返回
别名序号 |
类型 |
描述 | 列名 |
---|---|---|---|
0 | []path |
构成子图的一步路径,即起点、边、终点 | _uuid -- _uuid -- _uuid 在同一列 |
示例:指定点 UUID = 1,3,4,7,10 计算诱导子图,将算法结果定义为别名 path 返回
algo(subgraph).params({
uuids: [1,3,4,7,10]
}) as path
return path
流式返回
别名序号 |
类型 |
描述 | 列名 |
---|---|---|---|
0 | []path |
构成子图的一步路径,即起点、边、终点 | _uuid -- _uuid -- _uuid 在同一列 |
示例:指定点 UUID = 6,7 计算诱导子图,返回构成子图的路径的全部信息
algo(subgraph).params({
uuids: [6,7]
}).stream() as p
with pedges(p) as e
find().edges(e) return edges{*}
实时统计
算法无统计值。