Неизвестно - Prolog

Здесь есть возможность читать онлайн «Неизвестно - Prolog» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Prolog: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Prolog»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Prolog — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Prolog», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Все вышеизложенное можно запрограммировать (в качестве первой попытки) следующим образом:

остветпольз( Цель, Трасса, Ответ) :-

можно_спросить( Цель), % Можно ли спрашивать

спросить( Цель, Трасса, Ответ).

% Задать вопрос относительно утверждения Цель

спросить( Цель, Трасса, Ответ) :-

показать( Цель),

% Показать пользователю вопрос

принять(Ответ1), % Прочесть ответ

обработать( Ответ1, Цель, Трасса, Ответ).

% Обработать ответ

обработать( почему, Цель, Трасса, Ответ) :-

% Задан вопрос "почему"

показать_трассу( Трасса),

% Выдача ответа на вопрос "почему"

спросить( Цель, Трасса, Ответ).

% Еще раз спросить

обработать( да, Цель, Трасса, Ответ) :-

% Пользователь ответил, что Цель истинна

Ответ = правда,

запрос_перем( Цель);

% Вопрос о значении переменных

спросить( Цель, Трасса, Ответ).

% Потребовать от пользователя новых решений

обработать( нет, Цель, Трасса, ложь).

% Пользователь ответил, что Цель ложна

показать( Цель) :-

nl, write( 'Это правда:'),

write( Цель), write( ?), nl.

Обращение к процедуре запрос_перем( Цель)нужно для того, чтобы попросить пользователя указать значение каждой из переменных, содержащихся в утверждении Цель:

запрос_перем( Терм) :-

var( Терм), !, % Переменная ?

nl, write( Терм), write( '='),

read( Терм). % Считать значение переменной

запрос_перем( Терм) :-

Терм =.. [Функтор | Аргументы],

% Получить аргументы структуры

запрос_арг( Аргументы).

% Запросить значения переменных в аргументах

запрос_арг( [ ]).

запрос_арг( [Терм | Термы]) :-

запрос_перем( Терм),

запрос_арг( Термы).

Проведем несколько экспериментов с процедурой ответпольз. Пусть, например, известно, что пользователя можно спрашивать о наличии бинарного отношения ест:

можно_спросить( X ест Y).

(В приведенных ниже диалогах между пролог-системой и пользователем тексты пользователя даются полужирным шрифтом, а реплики пролог-системы курсивом ).

?- ответпольз( питер ест мясо, [ ], Ответ).

Это правда: питер ест мясо? % Вопрос пользователю

да. % Ответ пользователя

Ответ = правда

Более интересный пример диалога (с использованием переменных) мог бы выглядеть примерно так:

?- ответпольз( Кто ест Что, [ ], Ответ).

Это правда: _17 ест _18?

% Пролог дает переменным свои внутренние имена

да.

_17 = питер.

_18 = мясо.

Ответ = правда.

Кто = питер

Что = мясо; % Возврат для получения других решений

Это правда: _17 ест _18?

да.

_17 = сьюзен.

_18 = бананы.

Ответ = правда

Кто = сьюзен

Что = бананы;

Это правда : _17 ест _18?

нет.

Ответ = ложь

14. 5. 3. Усовершенствование процедуры ответпольз

Один из недостатков нашей процедуры ответпольз, который хорошо виден из приведенного выше диалога, - это появление на выходе системы имен, генерируемых пролог-системой, что выглядит довольно неуклюже. Символы, подобные _17, следовало бы заменить на более осмысленные слова.

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

Давайте исправим эти два дефекта. Во-первых, улучшение внешнего вида запросов системы будет основано на введении стандартного формата для каждой "запрашиваемой" цели. Для этого в отношение можно_спроситьмы добавим второй аргумент, который и будет задавать этот формат, как видно из следующего примера:

можно_спросить(Х ест Y, 'Животное' ест 'Что-то').

При передаче запроса пользователю каждая переменная вопроса должна быть заменена на ключевое слово, взятое из формата, например:

?- ответпольз( X ест Y, [ ], Ответ).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Prolog»

Представляем Вашему вниманию похожие книги на «Prolog» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Prolog»

Обсуждение, отзывы о книге «Prolog» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x