【问题标题】:how do i find the betweenness centrality of a node in gremlin?如何在 gremlin 中找到节点的中介中心性?
【发布时间】:2019-01-08 16:01:25
【问题描述】:

节点 V 的中介中心性定义为 所有节点对之间最短路径的比例 通过V。

我查看了 tinkerpop 食谱文档,发现它没有帮助/不起作用。即它返回一个

......1> 

当我运行查询时。

运行的查询是:

g.V().as("v").repeat(both().simplePath().as("v")).emit().
           filter(project("x","y","z").by(select(first, "v")).
                                       by(select(last, "v")).
                              by(select(all,"v").count(local)).as("triple").
                  coalesce(select("x","y").as("a").
                             select("triples").unfold().as("t").
                             select("x","y").where(eq("a")).
                             select("t").
                           store("triples")). 
                  select("z").as("length").
                  select("triple").select("z").where(eq("length"))).
           select(all, "v").unfold().
           groupCount().next()

我正在使用劳伦斯提供的航线数据,如本指南http://kelvinlawrence.net/book/Gremlin-Graph-Guide.pdf 中所述。它不包含中心性度量。我从下面开始,a)不给出任何循环路径,b)发射()调制器“输出”所有遍历的顶点

g.V().repeat(both().simplePath()).emit() 

我如何从这里开始计算节点的中间中心度/或者还有其他地方可以开始。

【问题讨论】:

  • 您能否更具体地说明一下配方中的哪些问题?从控制台获取该类型的输出表示某种形式的语法错误,其中控制台需要右括号或一些额外的输入。请提供您尝试过的代码。
  • 请参阅编辑。它取自 tinkerpop 食谱文档tinkerpop.apache.org/docs/current/recipes/#degree-centrality

标签: graph gremlin tinkerpop


【解决方案1】:

您实际上修改了 Gremlin 食谱网站上的查询,select("t")store("triples") 之间应该有一个逗号,而不是句点。但是,此查询可能不适用于航线图,因为它有太多路径。如配方下面所述,查询仅适用于非常小的(子)图。即使您有足够的内存进行计算,我认为您也必须等待很长时间(几个小时?)才能看到结果。

IMO,您应该为这种大小的图考虑不同的中心性算法。最后,算法之间的结果并没有太大差异,通常,你的图越大,你就越不关心每个顶点的准确中心值。例如,经典的 PageRank 算法在较大的图上运行得非常好。

【讨论】:

  • 我的问题是我找不到任何替代算法
  • 那么,PageRank 呢?在我的系统上,PageRank 算法在 770 毫秒内处理完整的航线图。
  • 我认为页面排名与中介中心性不同
  • 这是不同的,但是如果你比较几种算法的结果,你会发现它们在加权顶点的方式上有相似之处。
  • 这可能对您来说很有趣:datastax.com/2017/04/…
猜你喜欢
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多