如何在Apache AGE中检查图的连通性?
如果节点被标记为“顶点”,边被标记为“距离”,那么,这是我的Cypher查询:
MATCH (start:vertex)
OPTIONAL MATCH path = (start)-[:distance*]-(end:vertex)
WHERE end IS NULL
RETURN CASE WHEN path IS NULL THEN 'Graph is not connected' ELSE 'Graph is connected' END AS result;
在此查询中,MATCH子句匹配标记为“vertex”((start:vertex))的起始节点。OPTIONAL MATCH子句然后尝试使用“距离”关系找到从起始顶点到图中的任何其他顶点的路径(path =(start)-[:distance*]-(end:vertex))。
谁能给予我一个完整的实施指南?
3条答案
按热度按时间2g32fytz1#
通过自动化检查图的正确性是一个挑战,所以我建议只根据直觉来做。如果您对数据有足够的了解,那么您应该能够知道从输出中可以期待什么。使用AGE查看器也有助于可视化数据以查看关系。
至于您的代码,
(end:vertex)
和WHERE end IS NULL
处将发生错误,因为end
令牌将被解释为END
命令,因此您必须将别名重命名为其他名称。虽然我怀疑它是否能通过你所寻找的,从从句的选择来判断。这样的东西可能是你正在寻找的:你可以在网上找到几个指南,包括AGE master documentation甚至Neo4j cypher documentation,用于更具体和复杂的查询(尽管注意,与Neo4j的密码语言相比,AGE的功能有限)。如果您专门尝试从数据中查找路径,则会问一些密切相关的问题,例如这个问题。
aij0ehis2#
如果图是连通的,你可以使用N作为顶点的总数,那么从开始顶点到结束顶点,它们之间需要N-1条边。所以,基本上你首先得到图的顶点数:
现在,您使用此信息构建一个检查连通性的查询,假设我们有10个顶点:
这样,我们就知道每个顶点都有一条与其相邻的边。你也可以动态地尝试一下:
pbwdgjma3#
您可以使用以下准则进行实现。
1.首先创建图形并包括顶点和边标签。
1.要检查有效性和正确性,请尝试以下查询:
MATCH(start:vertex)
可选匹配路径=(开始)-[:距离 *]-(结束:顶点)
WHERE end为NULL
当路径为空时返回大小写THEN '图形未连接' ELSE '图形已连接' END作为结果;