2015-05-03 2 views
1

Я хотел бы иметь в качестве входных N вершин, тогда я хотел бы вернуть все пути до определенной длины, которые находятся между все пары из N вершин. Как это можно сделать в Гремлине?Как найти все пути до определенной длины среди пар, содержащихся в наборе из N вершин с Gremlin

Некоторые объяснения - имеющие этот граф (представленный в путях):

(n)-[r1]-(n1)-[r2]-(n2)-[r3]-(m)-[r5]-(n3) 
(y)-[r4]-(n1)-[r2]-(n2)-[r3]-(m)-[r6]-(n4) 

() node 
-[]- relation 

Eg они должны быть пути до длины 3 среди (п, т, у)

(n)-[r1]-(n1)-[r2]-(n2)-[r3]-(m) 
(y)-[r4]-(n1)-[r2]-(n2)-[r3]-(m) 
(n)-[r1]-(n1)-[r2]-(n1)-[r4]-(y) 

Это мой Gremlin пример 2 Вершины:

g = new OrientGraph("remote:localhost/graphdb") 
v = g.v('#12:110') 
y = g.v('#12:109') 
hops = 3 
v 
    .as('looop') 
     .inE.has('label','EdgeClass') 
     .outV.has('@class','NodeClass') 
     .outE.has('label','EdgeClass') 
     .inV.except([v]).dedup() 
    .loop('looop'){it.loops<hops}{it.object.rid==y.rid}.path 

Благодаря

+0

Все пути определенной длины, которые между всеми парами вершин N означает, длина пути равна 1. –

+0

Это может быть уместным. http://mathoverflow.net/questions/18603/finding-all-paths-on-undirected-graph –

+0

@DonLarynx Спасибо! Среди всех пар, которые являются подмножеством N вершин (см. Мой пример). Я смог сделать это между двумя вершинами –

ответ

3

Вот пример, используя график игрушки Tinkergraph:

gremlin> vertices = g.v(2,3,5).toSet() 
==>v[2] 
==>v[3] 
==>v[5] 
gremlin> vertices._().as("x").bothE().bothV().simplePath().loop("x") {it.loops <= 3} {it.object in vertices}.simplePath().path() {it} {it.label} 
==>[v[2], knows, v[1], created, v[3]] 
==>[v[2], knows, v[1], knows, v[4], created, v[3]] 
==>[v[2], knows, v[1], knows, v[4], created, v[5]] 
==>[v[3], created, v[4], created, v[5]] 
==>[v[3], created, v[1], knows, v[2]] 
==>[v[3], created, v[4], knows, v[1], knows, v[2]] 
==>[v[3], created, v[1], knows, v[4], created, v[5]] 
==>[v[5], created, v[4], created, v[3]] 
==>[v[5], created, v[4], knows, v[1], created, v[3]] 
==>[v[5], created, v[4], knows, v[1], knows, v[2]] 
+0

Спасибо, Даниэль! –

 Смежные вопросы

  • Нет связанных вопросов^_^