Сопоставление правил с заданными входными данными (алгоритмом)

Предположим, у меня есть следующие категории (с их возможными значениями):

animal: any, cat, dog
color: any, white, black, gray
gender: any, male, female
[...]

или в более общем плане ...

category: <array of values>

(1) Давайте скажем, у меня есть набор настраиваемых правил, например:

when animal is any, color is gray, gender is male, call x
when animal is dog, color is gray, gender is male, call y
when animal is any, color is any, gender is any, call z
[...]

(2) И некоторые входные значения.

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

Пример 1:

input (animal:dog, color:gray, gender:male)

он будет называть «y»

Пример 2:

input (color:gray, gender:female)

он будет называть «z»

Более подходящий способ сделать это - построить дерево поиска на основе правил (каждый уровень дерева является категорией)?

например:

- any animal
  - any color
    - any gender => z
  - gray
     - male => x
- dog
  - gray
     - male => y

Есть способ сделать это лучше?

Спасибо!

5
задан Mike Gleason jr Couturier 12 January 2012 в 20:54
поделиться