Гремлин вложенные циклы и двойные операторы повторения - PullRequest
0 голосов
/ 21 ноября 2018

Как gremlin интерпретирует двойные повторы, как описано здесь для алгоритма самого низкого общего предка?http://tinkerpop.apache.org/docs/3.2.3-SNAPSHOT/recipes/#_lowest_common_ancestor

Похоже, это интерпретируется как вложенный цикл внутри другого цикла O (n ^ 2), а не как два независимых цикла.Я хотел бы проверить это поведение.Могу ли я получить подробное объяснение семантики здесь.

Если это поведение, есть ли способ разорвать внешний цикл при условии внутреннего цикла?

1 Ответ

0 голосов
/ 21 ноября 2018

Это не вложенный repeat() (т.е. один repeat() внутри другого) - первый repeat() заканчивается первым emit(), а затем начинается новый repeat().Таким образом, он говорит, что обход сначала пройдет out(), испуская каждую вершину, с которой он сталкивается, и каждая из этих вершин будет проходить in(), испуская только вершину "D".

Вложенные циклы не поддерживались в 3.2.3 и фактически возможны только в скором выпуске 3.4.0, который вы можете прочитать о здесь и выглядит так:

gremlin> g.V().repeat(__.in('traverses').repeat(__.in('develops')).emit()).emit().values('name')
==>stephen
==>matthias
==>marko

Здесь вы можете увидеть repeat() на самом деле внутри repeat()

...