Рекомендуемая литература. Упражнения.
В качестве наиболее доступного руководства по языку LISP я бы рекомендовал книгу Уинстона и Хорна [Winston and Horn, 1988], а в книгах Чарняка [Charniak et al., 1987] и Грехема [Graham, 1994] можно уточнить многие детали применения LISP для решения задач искусственного интеллекта.
В прекрасной книге Норвига [Norvig, 1992] подробно описан базовый диалект Common LISP, а в книге Рассела и Норвига [Russel and Norvig, 1995] основное внимание уделено программированию задач искусственного интеллекта.
В книге Кратко [Braico, 1990] читатель найдет обширный материал по использованию языка PROLOG для решения задач искусственного интеллекта. Кроме того, желающим изучить язык PROLOG я также рекомендую прочесть книгу Стерлинга и Шапиро [Sterling and Shapiro, 1994].
Упражнения
Упражнение 1
Что означает понятие "символ" применительно к проблематике искусственного интеллекта? Являются ли символами изображение и слово?
Упражнение 2
Что представляет собой гипотеза физической символической системы! Является ли она, по вашему мнению, правдоподобной?
Упражнение 3
Пусть L – список: (а (b) с ((d) е (f) g).
Какое значение вернет следующее выражение, состоящее из вложенных функций:
first(first(rest(rest(rest(L))))).
Запишите приведенное выше выражение в синтаксисе примитивов LISP.
Упражнение 4
Пусть функция f определяется следующим образом:
f(X Y) = (ЛX)(if Y = 0 then 1, else X f(X, Y -1)).
Какое значение будет иметь такое применение этой функции: f(2 3)?
Запишите приведенное выше выражение в синтаксисе примитивов LISP.
Упражнение 5
Усовершенствуйте приведенную в тексте программу анализа соответствия таким образом, чтобы она могла обрабатывать списки с произвольной вложенностью. Эта программа должна быть способна, например, показать, что список:
(lisp (a functional language) (invented by (John mccarthy)))
Соответствует образцу:
(lisp (a? language) (invented by (? mccarthy))),
Но не соответствует образцу:
(lisp (a? language) (invented by (mаrу?))).
Упражнение 6
Усовершенствуйте приведенную в тексте программу анализа соответствия таким образом, чтобы она возвращала подстановку значений для переменных, которая будет превращать образец в пример. Образец для переменной имеет в таком случае вид:
(? Variable-name),
И тогда образцу:
(at (? X) (? Y))
Будет соответствовать пример:
(at robot room),
А программа должна вернуть подстановку:
((X robot) (Y room))
В виде списка. Можно положить, что пример представляет собой простой список.
Упражнение 7
Скомбинируйте программы, разработанные в упр. 5 и 6, таким образом, чтобы результирующая программа могла обрабатывать вложенные списки и формировать подстановку. Эта программа должна быть способна, например, показать, что список (lisp (a functional language) (invented by (John mccarthy))) соответствует образцу:
(lisp (a (? type) language) (invented by ((? name) mccarthy))),
И вернуть подстановку:
((type functional) (name John)).