Если взглянуть на (возможно, более старые) руководства по Drools или некоторым другим движкам правил, то одной из иллюстраций их добавленной стоимости является решение головоломок, таких как головоломка Miss Manners (руководство по Drools). Теперь такие головоломки естественным образом формулируются и решаются с использованием Prolog или более поздних языков программирования с ограничениями, и возникает вопрос, зачем кому-то использовать Drools для этой цели. Дополнительной ценностью, которую Prolog и CPL придают в этом случае, является их способность естественным образом формулировать головоломку как набор логических предикатов и автоматически искать пространство решений (с CPL, более эффективным в этом отношении). Но какова добавленная стоимость таких продуктов, как Drools (я имею в виду, помимо всего прочего, взятие, например, файла Excel и перевод его в набор правил)?
В частности, Prolog реализует поиск по возвратному следу, CLP - поиск по возвратному следу с распространением ограничений, и поэтому вместо поиска, так сказать, всего декартова произведения пространств для отдельных переменных, они сокращают большие части этого пространства товаров. Это то, что делает их эффективными и полезными. Пролог и CLP широко обсуждаются в литературе.
С другой стороны, хотя ясно, что алгоритм Rete кэширует набор правил в виде некоторой структуры (структур) данных, таким образом (насколько я понимаю) более эффективно оценивать выходные данные, если некоторые входные данные изменились, и предоставляя средства для эффективного обновления этой структуры данных для постепенных изменений, мне (для меня) трудно понять основную идею и, тем более, ее эффективность (по сравнению с тем, что от «Пролог» до CLP)? К сожалению, трудно найти хорошие ссылки, которые рассматривают алгоритм Rete в этом более широком контексте.
Документация Drools, к сожалению, не очень информативна в этом отношении. Максимум, что я смог найти, было: «Алгоритм Rete, алгоритм Leaps и его потомки, такие как Drools Reteoo (и Leaps), предоставляют очень эффективные способы сопоставления шаблонов правил с данными ваших доменных объектов. Они особенно эффективны, когда у вас есть наборы данных, которые не меняются полностью (так как механизм правил может помнить прошлые матчи). Эти алгоритмы проверены битвой ». Очень эффективно - по сравнению с чем? Битва доказана - можно ли указывать на реальные приложения?
Я был бы признателен, если бы можно было пролить немного света на эту тему или дать правильную ссылку.