Я пытался использовать neo4j и его библиотеку процессов apoc, чтобы получить кратчайший путь между двумя узлами.
Например, я создаю 2 узла, как показано ниже.
CREATE (:Point {title:'A'})
CREATE (:Point {title:'B'})
Затем я устанавливаю их отношения как таковые
MATCH (u1:Point {title:'A'}), (u2:Point {title: 'B'})
CREATE (u1)-[:distance {value:10}]->(u2)
Теперь я установил прямые отношения от А к Б, а не наоборот. Итак, когда я вызываю apoc Dijkstra, как показано ниже
MATCH (start:Point {title: 'B'}), (end:Point {title: 'B'})
CALL apoc.algo.dijkstra(start, end, 'distance', 'value') YIELD path, weight
RETURN path, weight
Я не должен получать никакого результата, поскольку у них нет прямого пути от B к A. Но я получаю тот же результат, что и при запуске запроса, используя путь от A до B.
Может кто-нибудь сказать мне, почему это так? Почему Дейкстра игнорирует направление? Любая помощь приветствуется.