Давайте предположим, что у меня есть следующие категории (с их возможными значениями):правила, соответствующие данному входной (алгоритм)
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) И некоторые входные значения.
Q. Существует ли алгоритм, который решает проблему поиска правильности сопоставления (с приоритетом, заданным для определенного конкретного правила) в соответствии с введенным вводом?
Ex.1:
input (animal:dog, color:gray, gender:male)
было бы назвать "у"
Ex.2:
input (color:gray, gender:female)
было бы назвать "г"
ли более подходящим способ сделать это - построить дерево поиска на основе правил (каждый уровень дерева является категорией)?
нравится:
- any animal
- any color
- any gender => z
- gray
- male => x
- dog
- gray
- male => y
Есть ли лучший способ сделать это?
Спасибо!
Что вы хотите сделать для галстуков, т. Е. Если какие-либо правила, серый, женский и собачий, серый, любой и данный вход (цвет: серый), что он должен делать? – hatchet
Какое определение «более конкретное»? Является ли это тем, что категории имеют порядок специфичности, или количество совпадений категорий, что определяет более конкретное правило? IOW, что более конкретно, подходит собака, любой, любой или любой, серый, женский? – hatchet
@hatchet: количество совпадений категорий (правило, в котором меньше «any») –