2015-10-29 71 views
2

我對Gremlin非常陌生。深度爲x的頂點列表周圍的所有網絡鄰域x

我有一個Pregel(GraphX)算法,它執行以下操作:給定一個頂點列表,找到所有網絡鄰域高達N級(相鄰頂點和與它們相鄰的頂點,重複N次),以便最遠頂點之間的邊數不超過N)

在Pregel中,這基本上是從源頂點開始執行最短路徑遍歷,但在N次迭代後停止。

如何使用Gremlin(tinkerpop3)我可以實現相同的行爲?

使用案例是 - 在一個社交網絡,發現所有的朋友,朋友的朋友,朋友的一個人的朋友,朋友等等......

這聽起來像一個很常見的情況,但我不能找不到執行它的語法。

回答

1

一種可能的解決方案:

g.V(1, 2, 3).repeat(
    bothE().dedup().store('edges').bothV().dedup().store('vertices') 
).times(2).cap('vertices', 'edges') 

此方法返回一個鍵vertices對象包含頂點的含有邊緣的陣列的陣列和密鑰edges

返回頂點和邊是帶有ID(1,2,3)的頂點的鄰域,直到距離2

+0

太棒了,謝謝! –