Иван Братко - Программирование на языке Пролог для искусственного интеллекта

Тут можно читать онлайн Иван Братко - Программирование на языке Пролог для искусственного интеллекта - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Мир, год 1990. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на языке Пролог для искусственного интеллекта
  • Автор:
  • Жанр:
  • Издательство:
    Мир
  • Год:
    1990
  • Город:
    Москва
  • ISBN:
    5-03-001425-Х
  • Рейтинг:
    4.1/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Иван Братко - Программирование на языке Пролог для искусственного интеллекта краткое содержание

Программирование на языке Пролог для искусственного интеллекта - описание и краткое содержание, автор Иван Братко, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известного специалиста по программированию (Югославия), содержащая основы языка Пролог и его приложения для решения задач искусственного интеллекта. Изложение отличается методическими достоинствами — книга написана в хорошем стиле, живым языком. Книга дополняет имеющуюся на русском языке литературу по языку Пролог.

Для программистов разной квалификации, специалистов по искусственному интеллекту, для всех изучающих программирование.

Программирование на языке Пролог для искусственного интеллекта - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на языке Пролог для искусственного интеллекта - читать книгу онлайн бесплатно, автор Иван Братко
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

:- op( 870, fx, если).

:- op( 880, xfx, то).

:- op( 550, xfy, или).

:- op( 540, xfy, и).

:- op( 300, fx, 'выведено по').

:- op( 600, xfx, из).

:- op( 600, xfx, по).

% В программе предполагается,что op( 700, хfх, это), op( 500, fx, не)

рассмотреть( Цель, Трасса, Цель это правда

было 'найдено как факт') :-

факт : Цель.

% Предполагается, что для каждого типа цели

% существует только одно правило

рассмотреть( Цель, Трасса,

Цель это ПравдаЛожь

было 'выведено по' Прав из Ответ) :-

Прав : если Условие то Цель,

% Правило, относящееся к цели

рассмотреть( Условие, [Цель по Прав | Трасса], Ответ),

истинность( Ответ, ПравдаЛожь).

рассмотреть( Цель1 и Цель2, Трасса, Ответ) :- !,

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

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

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

рассм_да( Цель1, Трасса, Ответ);

% Положительный ответ на Цель1

рассм_да( Цель2, Трасса, Ответ).

% Положительный ответ на Цель2

рассмотреть( Цель1 или Цель2, Трасса,

Ответ1 и Ответ2) :- !,

not рассм_да( Цель1, Трасса, _ ),

not рассм_да( Цель2, Трасса, _ ),

% Нет положительного ответа

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

% Ответ1 отрицательный

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

% Ответ2 отрицательный

рассмотреть( Цель, Трасса,

Цель это Ответ было сказано) :-

ответпольз( Цель, Трасса, Ответ). % Ответ дан пользователем

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

рассмотреть( Цель, Трасса, Ответ),

положительный( Ответ).

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

положительный( Ответ1),

рассмотреть( Цель2, Трасса, Ответ2),

( положительный( Ответ2), Ответ = Ответ1 и Ответ2;

отрицательный( Ответ2), Ответ = Ответ2).

продолжить( Ответ1, Цель1 и Цель2, _, Ответ1) :-

отрицательный( Ответ1).

истинность( Вопрос это ПравдаЛожь было Найдено,

ПравдаЛожь) :- !.

истинность( Ответ1 и Ответ2, ПравдаЛожь) :-

истинность( Ответ1, правда),

истинность( Ответ2, правда), !,

ПравдаЛожь = правда;

ПравдаЛожь = ложь.

положительный( Ответ) :-

истинность( Ответ, правда).

отрицательный( Ответ) :-

истинность( Ответ, ложь).

Рис. 14.10.Основная процедура оболочки экспертной системы.

14.5.2. Процедура ответпольз

Прежде чем перейти к написанию процедуры ответпольз, давайте рассмотрим одну полезную вспомогательную процедуру

принять( Ответ)

В процессе диалога часто возникает ситуация, когда от пользователя ожидается ответ "да", "нет" или "почему". Процедура принятьпредназначена для того, чтобы извлечь один из этих ответов, понимая его правильно и в тех случаях, когда пользователь применяет сокращения ('д' или 'н') или делает ошибки. Если ответ пользователя непонятен, то принятьпросит дать другой вариант ответа.

принять( Ответ) :-

read( Ответ1),

означает( Ответ1, Значение), !,

% Ответ1 означает что-нибудь?

Ответ = Значение; % Да

nl, write( 'Непонятно, попробуйте еще раз, % Нет

пожалуйста'), nl,

принять( Ответ). % Новая попытка

означает( да, да).

означает( д, да).

означает( нет, нет).

означает( н, нет).

означает( почему, почему).

означает( п, почему).

Следует заметить, что процедурой принятьнужно пользоваться с осторожностью, так как она содержит взаимодействие с пользователем. Следующий фрагмент программы может служить примером неудачной попытки запрограммировать интерпретацию ответов пользователя:

принять( да), интерп_да( ...);

принять( нет), интерп_нет( ...);

...

Здесь, если пользователь ответит "нет", то программа попросит его повторить свой ответ. Поэтому более правильный способ такой:

принять( Ответ),

( Ответ = да, интерп_да( ...);

Ответ = нет, интерп_нет( ...);

... )

Процедура

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

спрашивает пользователя об истинности утверждения Цель. Ответ — это результат запроса. Трассаиспользуется для объяснения в случае, если пользователь спросит "почему".

Сначала процедура ответпольздолжна проверить, является ли Цельинформацией, которую можно запрашивать у пользователя. Это свойство объекта Цельзадается отношением

можно_спросить( Цель)

которое в дальнейшем будет усовершенствовано. Если спросить можно, то утверждение Цельвыдается пользователю, который, в свою очередь, указывает истинно оно или ложно. Если пользователь спросит "почему", то ему выдается Трасса. Если утверждение Цельистинно, то пользователь укажет также значения содержащихся в нем переменных (если таковые имеются).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать


Иван Братко читать все книги автора по порядку

Иван Братко - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование на языке Пролог для искусственного интеллекта, автор: Иван Братко. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x