2016-09-20 5 views
0

ниже Запрос Shortestpath возвращает много путей вместо одного пути.Запрос Shortestpath возвращает много путей вместо одного пути

MATCH PATHS=shortestPath((a:Endpoint{ nodeName: 'BRS-PE-SR7-X03B' }) -[*]-(b:Endpoint{ nodeName: 'LDN-PE-SR7-X03C' }) RETURN PATHS 

Может кто-нибудь объяснить, как iternally вычисляет пути и возвращает кратчайший путь для приведенных ниже сценариев.

Мое понимание заключается в том, что он должен возвращать ТОЛЬКО один путь. Я прав?

ответ

1

Функция SHORTESTPATH находит единственный короткий путь между двумя конкретными узлами.

Если несколько узлов Endpoint могут иметь одинаковое значение nodeName, это может объяснить, почему вы получаете несколько кратчайших путей.

Если это является причиной для результатов, по крайней мере один из 2-х отсчетов, возвращаемых этим запросом должно превышать 1:

MATCH 
    (a:Endpoint{ nodeName: 'BRS-PE-SR7-X03B' }), 
    (b:Endpoint{ nodeName: 'LDN-PE-SR7-X03C' }) 
RETURN COUNT(DISTINCT a), COUNT(DISTINCT b); 
+0

Спасибо cybersam.I проверит узлы, если они имеют одинаковые значения – raj

1

Самый короткий алгоритм пути, как это предусмотрено в REST API предоставляет все кратчайших между два узла. Это означает, что если минимальное количество переходов одинаково по нескольким путям, то вы получите все эти кратчайшие пути.

(https://neo4j.com/docs/rest-docs/current/#rest-api-find-all-shortest-paths).