Алгоритм TREAT похож на RETE, но не записывает частичные совпадения. В результате в определенных ситуациях он может использовать меньше памяти, чем RETE. Кроме того, если вы измените значительное количество известных фактов, то TREAT может быть намного быстрее, потому что вам не нужно тратить время на отводы.
Существует также RETE *, который балансирует между RETE и TREAT путем сохранения некоторого состояния узла соединения в зависимости от того, сколько памяти вы хотите использовать. Таким образом, вы по-прежнему экономите некоторое время утверждения, но также получаете экономию памяти и времени отвода в зависимости от того, как вы настраиваете свою систему.
Вы также можете проверить LEAPS , который использует ленивую схему оценки и включает элементы как RETE, так и TREAT.
У меня есть только личный опыт работы с RETE, но кажется, что RETE * или LEAPS - лучший, более гибкий выбор.