Neo4j: кратчайший путь между известным начальным узлом и несколькими конечными узлами

У меня есть график с ~10000 узлов, я пытаюсь найти самый длинный путь между известным начальным узлом и неизвестным конечным узлом, но с Reader известного типа.

Когда у меня было 1000 узлов, это вычислялось нормально за 4 секунды, но теперь это занимает много времени, вероятно из-за большого списка возможных конечных узлов.

Мне интересно, есть ли лучший алгоритм для этого, моя единственная возможная мысль - добавить некоторую фильтрацию к p2, чтобы сократить размер списка, однако это не идеально, так как я хотел бы соответствовать множеству крайних случаев.

MATCH (p1:Book{id: '0532013000'})-[r*1..5]-(p2:Reader) 
CALL apoc.algo.dijkstraWithDefaultWeight(
  p1, p2, 'REL_ONE|REL_TWO|REL_THREE|REL_FOUR', 'mean', 1) YIELD path, weight
RETURN path, weight
ORDER by weight DESC
LIMIT 5

0 ответов

Другие вопросы по тегам