付费求最短路径算法
发布于 7 年前 作者 globetour 3907 次浏览 来自 问答

一个数据表,里面分别是某人在某公司工作,现在给出里面的两个人,如何计算出最短的路径,你或你的朋友和另外一个人之间有共同的工作经历。

需要这种结果,比如 用户 a 同在公司 a 工作 用户 b 同在公司 b 工作 用户 c 同在公司 c 工作 用户 d

就是说用户 a 与 d 之间找到一个最短的路径算法。 qq 2277581

3 回复

MATCH (a:Person { name: '张三' }),(d:Person { name: '李四' }), p = shortestPath((a)-[*]-(d)) WHERE length(p)> 1 RETURN p

就这还要付费啊

你得先把 数据保存结构整理好, 如 人(标签为person)单独一个节点、公司(标签为company)单独为一个节点, 如果人在某个公司工作,就用关系 将此人指向此公司。 然后用allShortestPaths 或 楼上的shortestPath 方法查找最短路径 (最短路径不止一条allShortestPaths 可以返回全部最短路径) 查询指令如下:

MATCH path=allShortestPaths((a:Person { id: ‘a的id’ })-[rels *]-(b:Person { name: ‘b的id’ }) RETURN path

回到顶部