Вопрос

В прошлом мне приходилось разрабатывать программу, которая выполняла роль оценщика правил.У вас был антецедент и несколько последовательностей (действий), так что, если антецедент принял значение true, действия, которые были выполнены.

В то время я использовал модифицированную версию Повторный алгоритм (существует три версии RETE, только первая является общедоступной) для сопоставления с предыдущим шаблоном.Здесь мы говорим о большой системе с миллионом операций на правило и некоторыми операторами, "повторяющимися" в нескольких правилах.

Возможно, мне придется реализовать все это заново на другом языке, и, хотя у меня есть опыт работы с RETE, кто-нибудь знает о других алгоритмах сопоставления с образцом?Есть предложения или мне следует продолжать использовать RETE?

Это было полезно?

Решение

Алгоритм ОБРАБОТКИ похож на RETE, но не фиксирует частичные совпадения.В результате в определенных ситуациях он может использовать меньше памяти, чем RETE.Кроме того, если вы измените значительное количество известных фактов, то ЛЕЧЕНИЕ может быть намного быстрее, потому что вам не придется тратить время на опровержения.

Есть также RETE* который балансирует между RETE и TREAT, сохраняя некоторое состояние узла соединения в зависимости от того, сколько памяти вы хотите использовать.Таким образом, вы по-прежнему экономите некоторое время подтверждения, но также получаете экономию памяти и времени восстановления в зависимости от того, как вы настраиваете свою систему.

Возможно, вы также захотите ознакомиться ПРЫЖКИ, который использует схему ленивой оценки и включает в себя элементы как RETE, так и TREAT.

У меня есть только личный опыт работы с RETE, но, похоже, RETE * или LEAPS - лучший и более гибкий выбор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top