Cypher allShortestPaths просто возвращают один путь? - PullRequest
0 голосов
/ 07 мая 2019

Справочная информация:

  • У меня есть график, подобный приведенному ниже: enter image description here

  • Я хочу найтивесь путь между узлом A и узлом F (что-то вроде того, сколько способов я могу добраться до F от A), затем мой шифр, как показано ниже:

MATCH (start:kg:test), (end:kg:test),  p = allShortestPaths((start)-[*..8]-(end))
    where start.value = 'A' and end.value = 'F'
    RETURN start, end, p
  • Как я и ожидал, этот запрос вернет весь график, но он просто возвращает A-> F (возвращает то же самое с использованием функции shortestPath), как показано ниже: enter image description here

Проблемы

  • Почему этот запрос не возвращает все различные пути в графе?
  • Неужели я неправильно использую функцию allShortestPaths?
  • Как мне пройти весь путь от узла A до узла F?

спасибо

1 Ответ

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

shortestPath() возвращает один кратчайший путь между узлами (и, если существует несколько одинакового размера, он просто возвращает первый найденный).

Если существует несколько путей, которые могли быть возвращенына shortestPath() (все они будут иметь одинаковый размер), то allShortesPaths() вернет их.

Если вы просто хотите найти все возможные пути между двумя узлами (длина пути не имеет значенияи вам совсем не нужны кратчайшие пути), тогда вам не нужно использовать ни одну из этих функций.

MATCH p=(start:kg:test)-[*..8]-(end:kg:test)
    where start.value = 'A' and end.value = 'F'
    RETURN start, end, p
...