问题描述
假设我有一个顶点为A
,B
,C
,D
,E
,F
,G
的图,X
,并使用如下所示的传出边缘requires
进行连接
A -> X
B -> A
C -> B
D -> C
D -> E
E -> X
F -> G
F -> X
G -> X
是否可以缩小给定的一组顶点,直到该组顶点中的每个顶点都不require
。例如:
input = [ C ]
desired output = [ C ]
input = [ A,B,C,D ]
desired output = [ A ]
input = [ A,E ]
desired output = [ A,E ]
input = [ A,D,E,G,F ]
desired output = [ A,G ]
解决方法
到目前为止,我已尽力而为,忽略了所有项目。可能有人可以帮助我如何在查询本身中过滤结果。
g.V().has('name',within('A','B','C','D')).
aggregate('N').
repeat(in().dedup()).
until(has('name','D'))).
aggregate('K').
V().has('name','D')).
where(without('K')).
dedup().
values('name')
您也可以使用问题https://gremlify.com/or7cziqjps
中给出的相同数据进行尝试更新:添加了Where
来过滤结果,但是,试图进一步简化查询以使其更加有效。
要使其他人更容易尝试更好的解决方案,请发布查询以添加数据。
g.addV('node').as('1').
property(single,'name','A').addV('node').as('2').
property(single,'B').addV('node').as('3').
property(single,'C').addV('node').as('4').
property(single,'D').addV('node').as('5').
property(single,'E').addV('node').as('6').
property(single,'F').addV('node').as('7').
property(single,'G').addV('node').as('8').
property(single,'X').
addE('requires').from('1').to('8').
addE('requires').from('2').to('1').
addE('requires').from('3').to('2').
addE('requires').from('4').to('3').
addE('requires').from('4').to('5').
addE('requires').from('7').to('8').
addE('requires').from('6').to('7').
addE('requires').from('5').to('8')