Гремлин: нужен эффективный запрос, чтобы проверить, связаны ли две вершины? - PullRequest
0 голосов
/ 31 мая 2019

Наше приложение должно проверить, связаны ли две вершины каким-либо путем.

Приложение не заботится о сегментах в пути или кратчайшем пути.

Приложению нужно только знать, имеют ли две вершины общий подграф.

Мой вопрос: учитывая две вершины с id (ами) A и B соответственно, какой запрос gremlin хорошо работает, чтобы ответить на вопрос "связаны ли A и B каким-либо образом?"

1 Ответ

1 голос
/ 31 мая 2019

Этот должен сделать трюк:

g.V(A).
  repeat(both().dedup()).
    until(hasId(B)).
  hasNext()

Начните с A, затем начните посещать соседей, не посещайте никакую вершину дважды и остановитесь, если достигнуто B. Очевидно, что это может привести к тайм-аутам (или проблемам с памятью), если вы имеете дело с огромными подграфами.

...