Graph 如何使用Gremlin在包含在一组N个顶点中的对之间找到所有长度不超过特定长度的路径

Graph 如何使用Gremlin在包含在一组N个顶点中的对之间找到所有长度不超过特定长度的路径,graph,orientdb,gremlin,Graph,Orientdb,Gremlin,我想输入N个顶点,然后返回N个顶点中所有对之间的特定长度的所有路径。如何在小精灵中做到这一点 一些解释-具有此图形(以路径表示): 例如,这些路径应为(n、m、y)中长度不超过3的路径 这是我的两个顶点的小精灵示例: g = new OrientGraph("remote:localhost/graphdb") v = g.v('#12:110') y = g.v('#12:109') hops = 3 v .as('looop') .inE.has('label','E

我想输入N个顶点,然后返回N个顶点中所有对之间的特定长度的所有路径。如何在小精灵中做到这一点

一些解释-具有此图形(以路径表示):

例如,这些路径应为(n、m、y)中长度不超过3的路径

这是我的两个顶点的小精灵示例:

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
g=new-OrientGraph(“远程:localhost/graphdb”)
v=g.v(“#12:110”)
y=g.v(“#12:109”)
跳数=3
v
.as('looop')
.inE.has('label','EdgeClass'))
.outV.has(“@class”,“NodeClass”)
.outE.has('label','EdgeClass'))
.inV.except([v]).dedup()

.loop('looop'){it.loops下面是一个使用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]]
gremlin>顶点=g.v(2,3,5).toSet()
=>v[2]
=>v[3]
=>v[5]
gremlin>顶点。().as(“x”).bothE().bothV().simplePath().loop(“x”){it.loops[v[2],knows,v[1],created,v[3]]
==>[v[2],知道,v[1],知道,v[4],创建,v[3]]
==>[v[2],知道,v[1],知道,v[4],创建,v[5]]
==>[v[3],已创建,v[4],已创建,v[5]]
==>[v[3],已创建,v[1],知道,v[2]]
==>[v[3],已创建,v[4],知道,v[1],知道,v[2]]
==>[v[3],已创建,v[1],知道,v[4],已创建,v[5]]
==>[v[5],已创建,v[4],已创建,v[3]]
==>[v[5],已创建,v[4],知道,v[1],已创建,v[3]]
==>[v[5],已创建,v[4],知道,v[1],知道,v[2]]

所有N个顶点对之间的所有特定长度的路径都意味着路径长度为1。这可能是相关的。@Donthronous谢谢!在所有N个顶点对的子集中(参见我的示例).我能在两人之间成功vertices@DonLarynx我想知道是否有比为N..2个节点:1对、3个节点:3对、4个节点:6对、5个节点:10对等的集合中的每一对运行我的单对算法更好的方法,但这是最好的方法吗?
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
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]]