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

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

Программирование на языке Пролог для искусственного интеллекта: краткое содержание, описание и аннотация

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

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

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

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

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

Интервал:

Закладка:

Сделать

Цель

retract( С)

приводит к противоположному эффекту: удаляет предложение, сопоставимое с С. Следующий диалог иллюстрирует их работу:

?- кризис.

no

?- assert( кризис).

yes

?- кризис.

yes

?- retract( кризис).

yes

?- кризис.

no

Предложения, добавленные к программе таким способом, ведут себя точно так же, как и те, что были в "оригинале" программы. Следующий пример показывает, как с помощью assertи retractможно работать в условиях изменяющейся обстановки. Предположим, что у нас есть такая программа о погоде:

хорошая :-

солнечно, not дождь.

необычная :-

солнечно, дождь.

отвратительная :-

дождь, туман.

дождь.

туман.

Ниже приводится пример диалога с этой программой, во время которого база данных постепенно изменяется:

?- хорошая.

no

?- отвратительная.

yes

?- retract( туман).

yes

?- отвратительная.

no

?- assert( солнечно).

yes

?- необычная.

yes

?- retract( дождь).

yes

?- хорошая.

yes

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

быстр( энн).

медл( том).

медл( пат).

К этой программе можно добавить правило:

?- assert(

( быстрее( X, Y) :-

быстр( X), медл( Y) ) ).

yes

?- быстрее( А, В).

А = энн

В = том

?- retract( медл( X) ).

X = том;

X = пат;

?- быстрее( энн, _ ).

Заметьте, что при добавлении нового правила синтаксис требует, чтобы оно (как аргумент assert) было заключено в скобки.

При добавлении нового предложения может возникнуть желание указать, на какое место в базе данных его следует поместить. Такую возможность обеспечивают предикаты asserta и assertz. Цель

asserta( С)

помещает С в начале базы данных. Цель

assertz( С)

— в конце. Вот пример, иллюстрирующий работу этих предикатов:

?- assеrt( p( a)), assertz( p( b) ), asserta( p( c) ).

yes

?- p( X).

X = с;

X = а;

X = b

Между consultи assertzсуществует связь. Обращение к файлу при помощи consultможно в терминах assertzопределить так: считать все термы (предложения) файла и добавить их в конец базы данных.

Одним из полезных применений предиката assertaявляется накопление уже вычисленных ответов на вопросы. Пусть, например, в программе определен предикат

решить( Задача, Решение)

Мы можем теперь задать вопрос и потребовать, чтобы ответ на него был запомнен, с тем чтобы облегчить получение ответов на будущие вопросы:

?- решить( задача1, решение),

asserta( решить( Задача1, Решение) ).

Если в первой из приведенных целей будет успех, ответ ( Решение)будет сохранен, а затем использован так же, как и любое другое предложение, при ответе на дальнейшие вопросы.

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

Развитие этой идеи состоит в использовании assertдля порождения всех решений в виде таблицы фактов. Например, создать таблицу произведений всех чисел от 0 до 9 можно так: породить пару чисел X и Y, вычислить Z, равное X * Y, добавить эти три числа в виде строки в таблицу произведений, а затем создать искусственно неуспех. Неуспех вызовет возврат, в результате которого будет найдена новая пара чисел, и в таблицу добавится новая строка и т.д. Эта идея реализована в процедуре

таблица :-

L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],

принадлежит( X, L), % Выбрать первый сомножитель

принадлежит( Y, L), % Выбрать второй сомножитель

Z is X*Y,

assert( произв( X,Y,Z) ),

fail.

Вопрос

?- таблица.

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

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

Интервал:

Закладка:

Сделать

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

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


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

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

x