Программирование на языке Пролог для искусственного интеллекта | страница 26



>+   и  >-  записываются как инфиксные операторы. Детали того, как программист может определять свои собственные операторы, мы приведем в гл. 3.

В качестве последнего примера рассмотрим некоторые простые электрические цепи, изображенные на рис. 2.6. В правой части рисунка помещены древовидные представления этих цепей. Атомы >r1, >r2, >r3 и >r4 — имена резисторов. Функторы >пар и >посл обозначают соответственно параллельное и последовательное соединение резисторов. Вот соответствующие прологовские термы:

>посл( r1, r2)

>пар( r1, r2)

>паp( rl, пap( r2, r3))

>пар( r1, посл( пар( r2, r3), r4))

Рис. 2.6. Некоторые простые электрические цепи и их представление: (а) последовательное соединение резисторов r1 и r2; (b) параллельное соединение двух резисторов; (с) параллельное соединение трех резисторов; (d) параллельное соединение r1 и еще одной цепи.

Упражнения

2.1. Какие из следующих выражений представляют собой правильные объекты в смысле Пролога? Что это за объекты (атомы, числа, переменные, структуры)?

(а)  >Диана

(b)  >диана

(с)  >'Диана'

(d)  >_диана

(e)  >'Диана едет на юг'

(f)  >едет( диана, юг)

(g)  >45

(h)  >5( X, Y)

(i)  >+( север, запад)

(j)  >три( Черные( Кошки))

2.2. Предложите представление для прямоугольников, квадратов и окружностей в виде структурных объектов Пролога. Используйте подход, аналогичный приведенному на рис. 2.4. Например, прямоугольник можно представить четырьмя точками (а может быть, только тремя точками). Напишите несколько термов конкретных объектов такого типа с использованием предложенного вами представления. 

2.2. Сопоставление

В предыдущем разделе мы видели, как используются термы для представления сложных объектов данных. Наиболее важной операцией над термами является сопоставление. Сопоставление само по себе может производить содержательные вычисления.

Пусть даны два терма. Будем говорить, что они сопоставимы, если:

(1) они идентичны или

(2) переменным в обоих термах можно приписать в качестве значений объекты (т.е. конкретизировать их) таким образом, чтобы после подстановки этих объектов в термы вместо переменных, последние стали идентичными.

Например, термы >дата( Д, М, 1983) и >дата( Д1, май, Y1) сопоставимы. Одной из конкретизации, которая делает эти термы идентичными, является следующая:

• >Д  заменяется на >Д1

• >М  заменяется на >май

• >Y1 заменяется на >1983

Более компактно такая подстановка записывается в привычной форме, т.е. в той, в которой пролог-система выводит результаты: