Предположим, у меня есть следующие категории (с их возможными значениями):
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
Есть способ сделать это лучше?
Спасибо!