Рекомендуемая литература. Упражнения.
Прекрасное изложение базовых принципов применения правил в задачах искусственного интеллекта читатель найдет в книге Нильсона [Nilsson, 1980].
Дэвис и Кинг обобщили большой материал, касающийся продукционных систем, и проанализировали слабые и сильные стороны этой парадигмы программирования [Davis and King, 1977]. Эта работа до сих пор остается наиболее подробной.
Современные исследования, касающиеся возможности использовать параллелизм в продукционных системах, описаны в работе Шмольца [Schmolze, 1991].
Описание языка CLIPS, который можно рассматривать как одно из современных средств создания систем, базирующихся на правилах, читатель найдет в Приложении в конце данной книги. Естественно, что приведенное там описание не претендует на роль исчерпывающего справочника, но оно поможет представить, как на практике реализовать изложенные в этой книге концепции.
Читателей, интересующихся подробным описанием методики реализации стратегии управления производящими правилами, мы отсылаем к книге Браунстона [Brownston et al, 1985].
Упражнения
Упражнение 1
Как вы понимаете термин "разрешение конфликтов"?
Упражнение 2
Пусть А – это алфавит {а, b} и пусть в этом алфавите существуют аксиомы ab, bа.
Какие строки будут сформированы следующими порождающими правилами:
(Р1) $a › $ab (Р2) $b › $bа
Упражнение 3
Пусть А – это алфавит {а, b} и пусть в этом алфавите существуют аксиомы аа, bb.
Какой набор порождающих правил может сформировать строки вида аа, bb, aabb, bbaa, aabbaa, bbaabb, aabbaabb, bbaabbaa и т.д.
Упражнение 4
На языке CLIPS напишите программу, которая будет выполнять рассуждения на основании силлогизмов. Силлогизм – это множество правил, определяющих, какие умозаключения можно получить из множества суждений. Ниже приведен простой силлогизм:
Все Аi являются Вi Все Вi являются Сi Все Аi являются Сi Все Аi являются Еi Некоторые Аi являются С, Все Сi являются Вi Все Аi являются Вi Ни один из Сi не является Вi Ни один из Сi не является Аi
Эти суждения несложно представить в виде диаграмм Венна. Смоделируйте их с помощью языка CLIPS в виде трех правил.
Вам понадобится единственный шаблон, в котором будет определено, что утверждение (statement) состоит из квантификатора (quantifier), который может принимать одно из трех значений: all (все), some (некоторые) или по (ни один) и двух множеств.
(deftemplate statement (field quantifier (type SYMBOL)) (field set1 (type SYMBOL)) (field set2 (type SYMBOL))) Так, выражение "Все <strong>А1</strong> являются <strong>В</strong> примет вид (statement (quantifier all) (set1 As) (set2 Bs)) Проверить, как работает программа, можно на таких фактах: (deffacts the-facts (statement (quantifier all) (setl puppies) (set2 dogs)) (statement (quantifier all) (setl dogs) (set2 mammals)) (statement (quantifier all) (setl mammals) (set2 animals)) (statement (quantifier no) (setl sea-cretures) (set2 dogs)) (statement (quantifier some) (setl sea-cretures) (set2 mammals)))