【问题标题】:How to get isolated vertices on a graph如何在图上获得孤立的顶点
【发布时间】:2017-12-14 08:10:22
【问题描述】:

如何获得图上的孤立顶点。我是 arangodb 的新手。 我想获取所有孤立的顶点并删除它们,以便我更轻松地分析数据。

【问题讨论】:

标签: graph-algorithm arangodb vertices


【解决方案1】:

使用 ArangoDB 3.x,以下 AQL 查询将计算 @nodes 中相对于特定边集合 @edges 的孤立节点:

FOR v IN @nodes
 LET degree = (FOR v1 IN 1..1 ANY v @edges 
               COLLECT WITH COUNT INTO c RETURN c)[0]
 FILTER degree==0
 COLLECT WITH COUNT into c
 RETURN c

如果可能有多个相关的 Edge 集合,则必须明确指定它们,除非您想依赖命名图中的现有规范。在这种情况下,您可以将上面的 @edges 替换为 GRAPH mygraph,其中 mygraph 是相关命名图的名称。

一旦你确认这是你想要的,你就可以修改上面的内容来删除顶点。

上述方法(基于计算边数)相当耗费资源,但我不知道更好的替代方法,因为即使在 JavaScript 中,您也可能不得不使用 inEdges() 和 outEdges()。可能以顶点为中心的索引可能会有所帮助。

有关边缘优先的方法,请参阅retrieve vertices with no linked edge in arangodb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多