Да, сомнение - полезная штука, без него может быть и не было бы прогресса.
По поводу delta-stepping, он у них все еще single source, а не двунаправленный для поиска путей между source и target, что у меня и реализовано, как раз примерно в то же время, когда у них это только появилось.
allshortestpaths - это же обычный двунаправленный BFS, веса ребер он не учитывает вообще. Ваш случай - это невзвешенный поиск, и в нем neo4j хорош, я это и не оспаривал. Я же писал про другую задачу - кратчайшие пути во взвешенном графе, где веса пересчитываются под каждый запрос. Это другой класс алгоритмов. В neo4j для этого есть GDS и APOC. APOC-овская дейкстра идет по хранилищу и на каждом шаге читает вес из свойства ребра - на сотнях миллионов ребер это секунды и минуты. GDS быстрее, но считает поверх in-memory проекции, куда вес должен быть спроецирован заранее как свойство, и дейкстра там однопоточная на куче. Если веса зависят от запроса - проекцию надо перестраивать, а это дорого. И я не про надирание зада. neo4j хороший инструмент, просто не серебряная пуля для всех задач по графам. Возможно и у автора задача не особо ложится на neo4j.
neo4j далеко не панацея... Зависит от задачи... если граф из сотни миллионов узлов и несколько сотен миллионов ребер и кратчайший путь/пути нужно найти во взвешенном графе (с возможностью перевзвешивания на каждом запросе), то это для neo4j - далеко не миллисекунды и даже не секунды. Поэтому порой приходится делать свои решения, которые решают подобные задачи за миллисекунды (а на gpu даже за микросекунды)
Да, сомнение - полезная штука, без него может быть и не было бы прогресса.
По поводу delta-stepping, он у них все еще single source, а не двунаправленный для поиска путей между source и target, что у меня и реализовано, как раз примерно в то же время, когда у них это только появилось.
allshortestpaths - это же обычный двунаправленный BFS, веса ребер он не учитывает вообще.
Ваш случай - это невзвешенный поиск, и в нем neo4j хорош, я это и не оспаривал.
Я же писал про другую задачу - кратчайшие пути во взвешенном графе, где веса пересчитываются под каждый запрос. Это другой класс алгоритмов.
В neo4j для этого есть GDS и APOC.
APOC-овская дейкстра идет по хранилищу и на каждом шаге читает вес из свойства ребра - на сотнях миллионов ребер это секунды и минуты.
GDS быстрее, но считает поверх in-memory проекции, куда вес должен быть спроецирован заранее как свойство, и дейкстра там однопоточная на куче. Если веса зависят от запроса - проекцию надо перестраивать, а это дорого.
И я не про надирание зада. neo4j хороший инструмент, просто не серебряная пуля для всех задач по графам.
Возможно и у автора задача не особо ложится на neo4j.
neo4j далеко не панацея...
Зависит от задачи... если граф из сотни миллионов узлов и несколько сотен миллионов ребер и кратчайший путь/пути нужно найти во взвешенном графе (с возможностью перевзвешивания на каждом запросе), то это для neo4j - далеко не миллисекунды и даже не секунды. Поэтому порой приходится делать свои решения, которые решают подобные задачи за миллисекунды (а на gpu даже за микросекунды)
Месяца на два с новостью опоздали, они уже давно верифицируют https://support.claude.com/ru/articles/14328960-проверка-личности-на-claude