由于你使用的是 单点最短路径
1、每一次的conjunctPath 都会判断是否有最短路径,如果有,则立即结束拓展,否则直到5步拓展完
2、BFS 是提取了 下一步要拓展的点 ,并且把当前的 边保存了下来
1 个赞
Reid00
3
GetNeighbors 不也是获得下一跳(邻居)的节点吗?
getNeighbors 不仅仅获取下一跳的节点, 还可以获取 起始点的属性和边的属性
1 个赞
Reid00
5
你好,假设有路径, 边都是相同的 edge
A → B ->C ->D
A ← E ->D->F
从A 出发,第一层的时候
BFS 是提取了 下一步要拓展的点 ,并且把当前的 边保存了下来
那BFS 是可以获取BE vid 并 保存edge 的vid ?
getNeighbors 不仅仅获取下一跳的节点, 还可以获取 起始点的属性和边的属性
是获取 A,B,E的属性信息?
是这样理解吗?
1 个赞
比如 find shortest path from “A” to “F” over like yield path as p
因为是 双向BFS(从起点A 正向出发, 从终点F 方向出发)
第一步拓展时候 先getNeighbor 算子,然后 执行BFS 算子
getNeighbors 算子的输出是BFS算子的输入
正向拓展的 BFS 算子结果里 保存了 B(vid) 和 A->B (edge)
反向拓展的BFS 算子结果里 保存了 D(vid) 和 D->F (edge)
在BFS算子中, 会将 B(vid) 和 D(vid) 放入 getNeightbors算子的 输入中,这样第二步的时候,getNeightbors 就可以从b和d 分别进行拓展了
至于 BFS 算子中保存的 A->B (edge) 和 D->F(edge) 是为了在conjunctPath 算子中 拼接成路径使用的,如果 有交集,就拼接为一个完成的路径,否则就分别构造正向单边的路径和反向单边的路径,等下一步拓展后继续拼接
2 个赞
system
关闭
8
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。