Я был действительно счастлив увидеть движок правил в Node, а также изучал Drools в мире Java и во время чтения документации (в частности: http://docs.jboss.org/drools/release/6.1.0.Final/drools-docs/html_single/index.html#PHREAK)found, что Drools 6.0 эволюционировал и теперь использует метод PHREAK для сопоставления правил. Конкретный параграф, который представляет интерес:
Каждая успешная попытка соединения в RETE создает кортеж (или токен, или частичное совпадение), который будет распространен на дочерние узлы. По этой причине он характеризуется как алгоритм, ориентированный на кортежи. Для каждого дочернего узла, которого он достигает, он будет пытаться соединиться с другой стороной узла, и снова каждая успешная попытка соединения будет распространяться немедленно. Это создает эффект рекурсии спуска. Разбивая сеть узлов, когда она колеблется вверх и вниз, влево и вправо от точки входа в бета-сеть ко всем доступным конечным узлам.
Для сложных правил и правил, превышающих определенный предел, в приведенной выше цитате говорится, что метод на основе RETE довольно сильно уничтожает память, и поэтому он был преобразован в PHREAK.
Поскольку nools основан на алгоритме Rete, действительно ли вышесказанное? Есть ли какие-нибудь оптимизации, похожие на PHREAK? Любые сравнения, сделанные с Drools?