Как бы вы структурировали альфа-узлы в сети Rete, в которой есть правило с двумя условиями, найденными в других правилах? - PullRequest
0 голосов
/ 10 июля 2020

Допустим, у меня есть три правила:

  1. Когда свойство объекта foo равно 1, вывести «foo»
  2. Когда свойство bar объекта равно 1, вывести «bar»
  3. Когда свойство объекта foo равно 1, а свойство bar равно 1, вывести «и foo, и bar»

Как будет выглядеть структура альфа-узлов в этом сценарии? Я видел примеры, где, учитывая правила 1 и 2, это могло бы выглядеть так:

      foo == 1 - "foo"
root<
      bar == 1 - "bar"

И, учитывая 3:

root - foo == 1 - bar == 1 - "both foo and bar"

И, учитывая 3 и 1:

                  "foo"
root - foo == 1 <
                  bar == 1 - "both foo and bar"

Учитывая 3, 2 и 1, будет ли это выглядеть примерно так:

       foo == 1 - "foo"
root <           
                  "bar"
       bar == 1 < 
                  foo == 1 - "both foo and bar"

или

       foo == 1 - "foo"
     /
root-- bar == 1 - "bar"
     \
       foo == 1 - bar == 1 - "both foo and bar"

Или как-то иначе?

1 Ответ

1 голос
/ 13 июля 2020

Если вы совместно используете узлы и сохраняете порядок, в котором проверяются свойства, это будет выглядеть так:

       bar == 1 - "bar"
root <           
                  "foo"
       foo == 1 < 
                  bar == 1 - "both foo and bar"
...