Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пролог.doc
Скачиваний:
15
Добавлен:
10.11.2018
Размер:
1.44 Mб
Скачать

2.2.9. Запросы класса b.

Запросы этого класса требуют конкретный ответ.

Пример. F(x,y) – x – отец y.

ГБД - F(Иван, Сергей) – Иван отец Сергея.

Вопрос. Кто отец Сергея (вычислить значение x, что F(x, Сергей)).

Информация для ответа здесь извлекается из подстановок в процессе логического вывода. Действуем следующим образом. После построения отрицания к теореме приписываем к ней предикат ANS(x) и в результате вывода стремятся получить не пустой клоз, а клоз, состоящий только из предиката ANS, при этом переменная в предикате примет нужное значение.

//вывод (21)

F (Иван, Сергей)

 F (x, Сергей)  ANS (x) {Иван/x}

 F (Иван, Сергей)

ANS (Иван)

Иногда вопрос может содержать сразу несколько переменных. В этом случае и предикат ANS будет содержать несколько переменных. Запросы класса B возникают при попытке решения задачи определения объекта по его свойствам (например, задача определения сорта вина по результатам дегустации). Этот подход находит применение и при решении задач распознавания образов.

2.2.10. Запросы класса c.

Запрос класса C – это запрос на выявление последовательности действий для достижения какой-либо цели. Отличительной особенностью здесь является то, что приходится оперировать с функторами.

В качестве демонстрационного примера приведем задачу об обезьяне. Обезьяна находится в комнате, в которой в определенной точке под потолком подвешен банан. Достать банан она может, только встав на стул строго под бананом. Что же должна сделать обезьяна, чтобы съесть банан?

Введем предикаты.

P(x,y,z,s) – обезьяна в точке x, стул в точке y, а банан в точке z, а вся система при этом условно находится в состоянии s.

R(s) – в состоянии s обезьяна может достать банан.

Обратим внимание на абстрактное понятие состояния системы. Оно необходимо для описания возможных действий с помощью функторов.

f(x,y,s) – функция перемещения обезьяны из точки x в точку y, s – исходное состояние системы до перемещения, результат функции – состояние системы после перемещения.

g(x,y,s) – функция переноса стула из точки x в точку y, s – исходное состояние системы до переноса стула, результат функции – состояние системы после переноса стула.

k(x,s) – обезьяна залезает на стул в точке x. Система при этом переходит из состояния s в новое, выражаемое результатом функции.

Итак, опишем исходные данные, т.е. ГБД.

P(a,b,c,s1) – в начальный момент обезьяна находится в точке а, стул в точке b, банан – в точке с, абстрактная система – в абстрактном состоянии s1.

БЗ составляют следующие.

xyzs [P(x,y,z,s)->P(y,y,z,f(x,y,s))] – где бы ни была обезьяна, она может подойти к стулу.

xys [P(x,x,y,z)->P(y,y,y,g(x,y,s))] – если обезьяна и стул в одной точке, то обезьяна может поднести стул к банану.

xs [P(x,x,x,s)->R(k(x,s))] – если обезьяна, стул и банан в одной точке то она может лезть на стол и есть банан.

В качестве теоремы предполагают, что существует состояние системы, в котором обезьяна может достать банан - s R(s). К этой теореме приписываем предикат ANS(s).

//вывод (22)

P(a, b, c, S1)

 P (x, y, Z, S)

P (y, y, Z, f (x, y, S))

 P (x, x, y, S)

P (y, y, y, g (x, y, S))

 P (x, x, x, S)

R(k (x, S))

 R (S)

ANS (S) {k (x, S)/S}

R (k (x, S))

 P (x, x, x, S) {y/x, g(x, y, S)}/S

ANS(k(x, S))

 P (x, y, Z, S)

P (y, y, Z, f (x, y, S))

 P (x, x, y, S)

P (y, y, y, g (x, y, S))

P(a, b, c, S)

 R(k(y) g(x, y, S)))

 P(y,y,y, G(x, y, S))

 P(x,x,y,S)

ANS(k(y)g(x,y,S))

{y/x, z/y,f(x,y,S)/S}

 P (x, y, Z, S)

P (y, y, Z, f (x, y, S))

P(a, b, c, S1)

 R(k(z,g(y,z)f(x,y,S)))

 P(z,z,z,g(y,z),f(x,y,S)))

 P(y,y,z,f90x,y,S)

 P(x,y,z,S

ANS(k(z,g(yz,f(x,y,S)))) {a/x, b/y, c/z, S1/S}

P (a,b,c,S)

 R(k(c,g(b,c,f(a,b,S1))))

 P(c,c,c,g(b,c,f(a,b,S1)))

 P(b,b,c,f(a,b,S1))

 P(a,b,c,S1)

ANS (k(c,g(b,cf(a,b,S1))))

ANS (k(c,g(b,c,f(a,b,S 1)))

Интерпретируя последовательность вложенных функций «изнутри», получают содержательный ответ.

//интерпретируем (23)

k(c,g(b,c,f(a,b,S1))):

- f(a,b,S1) – обезьяна переходит из точки a в точку b.

g(b,c,f(a,b,S1)) – обезьяна переносит стул из точки b в точку c.

k(c,g(b,c,f(a,b,S1))) – обезьяна лезет на стул в точке c.