Термин CS для алгоритмов сопоставления правил в кортежах обязательных и необязательных условий

Я пытаюсь исследовать литературу по алгоритмам для решения конкретной проблемы, но не думаю, что знаю правильный поисковый запрос, чтобы описать то, что я ищу.

Цель состоит в том, чтобы иметь доступную для запросов базу данных правил, где каждое правило задано как условия кортежа - некоторые обязательные, некоторые необязательные. Запрос в систему состоит из кортежа фактов о мире и возвращает список всех правил, обязательные условия которых совпадают с фактами в запросе. Каждое правило оценивается по количеству × весу сопоставленных необязательных условий, и таким образом список сортируется.

Так, например, если бы я использовал это для написания службы сопоставления соседей по комнате, правила были бы примерно такими

alice : { mandatory : { nightowl = no, smoker = no, pets < 2 }, 
          optional : { pets = 0 } }
bob :   { mandatory : { nightowl = yes, pets = 0 }, 
          optional : {smoker = no} }
charlie : { mandatory : { musician = no }, 
            optional : {nightowl = yes, pets < 2 } }

и запрос будет

( nightowl = no, pets = 1, smoker = no, musician = no )

вернуть

( charlie : 1/1 mandatory matched, 1/2 optional matched,
  alice   : 3/3 mandatory matched, 0/1 optional matched )

Я знаю, что это проблема, которую уже много раз решали в информатике, но я не знаю, по каким ключевым словам искать. Это не функция расстояния , потому что некоторые условия являются дискретными отклонениями истинности / ложности, тогда как другие являются необязательными или имеют линейные оценки.Это не сопоставление с образцом или нечеткое сопоставление , потому что они, похоже, относятся в основном к строкам и графикам. Это не производственная система или механизм правил , как алгоритм Rete , потому что он не делает выводов IF-THEN из правил и не запоминает факты из один звонок к другому.

Как он называется?

Мне нужны только исследования или описания алгоритмов, а не фактические реализации. Наше приложение имеет такие серьезные ограничения реального времени и памяти, что нам в любом случае придется создать собственную реализацию, но я хотел бы знать, что еще было сделано в этом пространстве, прежде чем я начну изобретать код. Документ ACM, из которого я мог бы искать цитаты, тоже был бы отличным.

5
задан Crashworks 17 August 2011 в 00:57
поделиться