В информатике система, основанная на правилах , — это компьютерная система, в которой знания, относящиеся к предметной области , представлены в форме правил, а для решения задач в этой области используются рассуждения общего назначения.
В 1970-х годах в области искусственного интеллекта появились два различных типа систем, основанных на правилах :
Различия и взаимосвязи между этими двумя типами систем, основанных на правилах, стали основным источником недопонимания и путаницы.
Оба типа систем на основе правил используют либо прямую , либо обратную цепочку , в отличие от императивных программ , которые выполняют команды, перечисленные последовательно. Однако системы логического программирования имеют логическую интерпретацию, тогда как производственные системы — нет.
Классическим примером системы, основанной на правилах производства, является предметно-ориентированная экспертная система , которая использует правила для выводов или выбора. [1] Например, экспертная система может помочь врачу выбрать правильный диагноз на основе группы симптомов или выбрать тактические ходы для игры.
Системы, основанные на правилах, могут использоваться для выполнения лексического анализа с целью компиляции или интерпретации компьютерных программ или для обработки естественного языка . [2]
Программирование на основе правил пытается вывести инструкции по выполнению из начального набора данных и правил. Это более косвенный метод, чем тот, который используется императивным языком программирования , который последовательно перечисляет шаги выполнения.
Типичная система, основанная на правилах, состоит из четырех основных компонентов: [3]
В то время как фаза сопоставления в механизме вывода имеет логическую интерпретацию, фазы разрешения конфликтов и действия не имеют. Вместо этого «их семантика обычно описывается как ряд применений различных операторов изменения состояния, что часто становится довольно сложным (в зависимости от выбора, сделанного при принятии решения о том, какие правила ECA срабатывают, когда и т. д.), и их вряд ли можно считать декларативными». [5]
Семейство логического программирования компьютерных систем включает язык программирования Prolog , язык баз данных Datalog и язык представления знаний и решения проблем Answer Set Programming (ASP). Во всех этих языках правила записываются в форме предложений :
A :- B1, ..., Bn.
и читаются как повествовательные предложения в логической форме:
A if B1 and ... and Bn.
В простейшем случае предложений Хорна (или «определенных» предложений), которые являются подмножеством логики первого порядка , все A, B 1 , ..., B n являются атомарными формулами .
Хотя программы с логическими предложениями Хорна являются полными по Тьюрингу , [6] [7] для многих практических приложений, полезно расширять программы с предложениями Хорна, допуская отрицательные условия, реализуемые отрицанием как неудача . Такие расширенные логические программы обладают возможностями представления знаний немонотонной логики .
Наиболее очевидное различие между двумя типами систем заключается в том, что правила производства обычно пишутся в прямом направлении, если A, то B , а правила логического программирования обычно пишутся в обратном направлении, B, если A. В случае правил логического программирования это различие поверхностное и чисто синтаксическое. Оно не влияет на семантику правил. Оно также не влияет на то, используются ли правила для рассуждений в обратном направлении, в стиле Prolog, для сведения цели B к подцелям A , или они используются, в стиле Datalog, для вывода B из A.
В случае правил производства прямое направление синтаксиса отражает характер стимула-реакции большинства правил производства, при этом стимул A предшествует ответу B. Более того, даже в случаях, когда ответ заключается просто в том, чтобы сделать вывод B из предположения A , как в modus ponens , цикл сопоставления-решения-действия ограничивается рассуждениями вперед от A к B. Рассуждения назад в системе производства потребовали бы использования совершенно иного типа машины вывода.
В своем «Введении в когнитивную науку» [8] Пол Тагард включает логику и правила как альтернативные подходы к моделированию человеческого мышления. Он не рассматривает логические программы в целом, но считает, что Пролог — это не система, основанная на правилах, а «язык программирования, который использует логические представления и дедуктивные методы» (стр. 40).
Он утверждает, что правила, которые имеют форму ЕСЛИ условие ТО действие , «очень похожи» на логические условные предложения, но они проще и имеют большую психологическую правдоподобность (стр. 51). Среди других различий между логикой и правилами он утверждает, что логика использует дедукцию, а правила используют поиск (стр. 45) и могут использоваться для рассуждений как вперед, так и назад (стр. 47). Предложения в логике «должны интерпретироваться как универсально истинные », но правила могут быть значениями по умолчанию , которые допускают исключения (стр. 44). Он не замечает, что все эти особенности правил применимы к системам логического программирования.
{{cite journal}}
: CS1 maint: несколько имен: список авторов ( ссылка )