Читаем Prolog онлайн бесплатно

Вперёд >>>

Иван Братко

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

Перевод с английского.

Москва, "МИР", 1990      подробнее...

Электронную версию книги создал Иванов Виктор Михайлович. Книга размещена на сайте http://dstu2204.narod.ru/   ( на этой странице ).

ОГЛАВЛЕНИЕ

Обложка

От редактора перевода

Предисловие

Предисловие автора

ЧАСТЬ 1. ЯЗЫК ПРОЛОГ

Глава 1.  Общий обзор языка Пролог

1.1.  Пример программы: родственные отношения

1.2.  Расширение программы-примера с помощью правил

1.3.  Рекурсивное определение правил

1.4.  Как пролог-система отвечает на вопросы

1.5.  Декларативный и процедурный смысл программ

Глава 2.  Синтаксис и семантика пролог-программ

2.1.  Объекты данных

2.1.1.  Атомы и числа

2.1.2.  Переменные

2.1.3.  Структуры

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

2.3.  Декларативный смысл пролог-программ

2.4.  Процедурная семантика

2.5.  Пример: обезьяна и банан

2.6.  Порядок предложений и целей

2.6.1.  Опасность бесконечного цикла

2.6.2.  Варианты программы, полученые путем переупорядочивания предложений и целей

2.6.3.  Сочетание декларативного и процедурного подходов

2.7.  Замечания о взаимосвязи между Прологом и логикой

Глава 3.  Списки. Операторы. Арифметика

3.1.  Представление списков

3.2.  Некоторые операции над списками

3.2.1.  Принадлежность к списку

3.2.2.  Сцепление ( конкатенация)

3.2.3.  Добавление элемента

3.2.4.  Удаление элемента

3.2.5.  Подсписок

3.2.6.  Перестановки

3.3.  Операторная запись (нотация)

3.4.  Арифметические действия

Глава 4.  Использование структур: примеры

4.1.  Получение структурированной информации из базы данных

4.2.  Абстракция данных

4.3.  Моделирование недетерминированного автомата

4.4.  Планирование поездки

4.5.  Задача о восьми ферзях

4.5.1.  Программа 1

4.5.2.  Программа 2

4.5.3.  Программа 3

4.5.4.  Заключительные замечания

Глава 5.  Управление перебором

5.1.  Ограничение перебора

5.1.1.  Эксперимент 1

5.1.2.  Эксперимент 2

5.2.  Примеры, использующие отсечение

5.2.1.  Вычисление максимума

5.2.2.  Процедура проверки принадлежности списку, дающая единственное решение

5.2.3.  Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования)

5.2.4.  Задача классификации объектов

5.3.  Отрицание как неуспех

5.4.  Трудности с отсечением и отрицанием

Глава 6.  Ввод и вывод

6.1.  Связь с файлами

6.2.  Обработка файлов термов

6.2.1.  reаd  и  write

6.2.2.  Вывод списков

6.2.3.  Формирование термов

6.2.4.  Обработка произвольного файла термов

6.3.  Обработка символов

6.4.  Создание и декомпозиция атомов

6.5.  Ввод программ: consult,   reconsult

Глава 7.  Другие встроенные процедуры

7.1.  Проверка типов термов

7.1.1.  Предикаты  var,  nоnvar,  atom,  integer,  atomic

7.1.2.  Решение числового ребуса с использованием   nonvar

7.2.  Создание и декомпозиция термов : = ..; functor, arg, name

7.3.  Различные виды равенства

7.4.  Работа с базой данных

7.5.  Средства управления

7.6. bagof, setof и findall

Глава 8.  Стиль и методы программирования

8.1.  Общие принципы хорошего программирования

8.2.  Как представлять себе программы на Прологе

8.2.1.  Использование рекурсии

8.2.2.  Обобщение

8.2.3.  Использование рисунков

8.3.  Стиль программирования

8.3.1.  Некоторые правила хорошего стиля

8.3.2.  Табличная организация длинных процедур

8.3.3.  Комментирование

8.4.  Отладка

8.5.  Эффективность

8.5.1.  Повышение эффективности решения задачи о восьми ферзях

8.5.2.  Повышение эффективности программы раскраски карты

8.5.3.  Повышение эффективности конкатенации списков за счет совершенствования структуры данных

8.5.4.  Повышение эффективности зa счет добавления вычисленных фактов к базе данных

ЧАСТЬ 2. ПРОЛОГ В ИСКУССТВЕННОМ ИНТЕЛЛЕКТЕ

Глава 9.  Операции над структурами данных

9.1.  Представление списков. Сортировка

9.1.1.  Замечания в некоторых альтернативных способах представления списков

9.1.2.  Сортировка списков

9.2.  Представление множеств двоичными деревьями

9.3.  Двоичные справочники: добавление и удаление элемента

9.4.  Отображение деревьев

9.5  Графы

9.5.1.  Представление графов

9.5.2.  Поиск пути в графе

9.5.3.  Построение остовного дерева

Глава 10.   Усовершенствованные методы представления множеств деревьями

10.1.  Двоично-троичные справочники

10.2.  AVL-дерево: приближенно сбалансированное дерево

Глава 11.  Основные стратегии решения задач

11.1.  Предварительные понятия и примеры

11.2.  Стратегия поиска в глубину

11.3.  Поиск в ширину

11.3.1.  Списковое представление множества кандидатов

11.3.2.  Древовидное представление множества кандидатов

11.4.  Замечания относительно поиска в графах, оптимальности и сложности

Глава 12.  Поиск с предпочтением: эвристический поиск

12.1.  Поиск с предпочтением

12.2.  Поиск с предпочтением применительно к головоломке "игра в восемь"

12.3.  Применение поиска с предпочтением к планированию выполнения задач

Глава 13.  Сведение задач к подзадачам. И/ИЛИ-графы

13.1  Представление задач в виде И/ИЛИ-графов

13.2  Примеры И/ИЛИ-представления задач

13.2.1.  И / ИЛИ-представление задачи поиска маршрута

13.2.2.  Задача о ханойской башне

13.2.3.  Формулировка игровых задач в терминах И / ИЛИ-графов

13.3.  Базовые процедуры поиска в И/ИЛИ-графах

13.4.  Поиск с предпочтением в И/ИЛИ-графах

13.4.1.  Эвристические оценки и алгоритм поиска

13.4.2.  Программа поиска

13.4.3.  Пример отношений, определяющих конкретную задачу: поиск маршрута

Глава 14.  Экспертные системы

14.1.  Функции, выполняемые экспертной системой

14.2.  Грубая структура экспертной системы

14.3.  Правила типа "если-то" для представления знаний

14.4.  Разработка оболочки

14.4.1.  Процесс рассуждений

14.4.2.  Формирование ответа на вопрос "почему"

14.4.3.  Формирование ответа на вопрос "как"

14.5.  Реализация

14.5.1.  Процедура  рассмотреть

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

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

14.5.4.  Процедура  выдать

14.5.5.  Драйвер верхнего уровня

14.5.6.  Одно замечание по поводу программы-оболочки

14.5.7.  Цели с отрицанием

14.6.  Работа с неопределенностью

14.6.1.  Степень достоверности

14.6.2.  Модель Prospector'а

14.6.3.  Принципы реализации

14.7.  Заключительные замечания

Глава 15.  Игры

15.1.  Игры двух лиц с полной информацией

15.2.  Минимаксный принцип

15.3.  Альфа-бета алгоритм: эффективная реализация минимаксного принципа

15.4.  Минимаксные игровые программы: усовершенствования и ограничения

15.5.  Знания о типовых ситуациях и механизм "советов"

15.5.1.  Цели и ограничения на ходы

15.5.2.  Выполнимость совета

15.5.3.  Правила и таблицы советов

15.6.  Программа на языке ALO для игры в шахматном эндшпиле

15.6.1.  Миниатюрный интерпретатор языка AL0

15.6.2.  Программа на языке советов для эндшпиля  "король и ладья против короля"

Глава 16.  Программирование в терминах типовых конфигураций

16.1.  Архитектура, ориентированная на типовые конфигурации

16.1.1.  Основные понятия

16.1.2.  Прологовские программы как системы, управляемые образцами

16.1.3.  Пример составления программы

16.2.  Простой интерпретатор программ, управляемых образцами

16.3.  Простая программа для автоматического доказательства теорем

16.4.  Заключительные замечания

Ответы к некоторым упражнениям

Предметный указатель

3-я страница обложки

Вперёд >>>

Назад | Содержание | Вперёд

PROLOG

PROGRAMMING

FOR ARTIFICIAL

INTELLIGENCE

Ivan Bratko

E. Kardelj University • J. Stefan Institute

Yugoslavia

ADDISON-WESLEY

PUBLISHIHG

COMPANY

Wokingham, England • Reading, Massachusetts • Menlo Park,California • Don Mills, Ontario • Amsterdam • Bonn • Sydney • Singapore • Tokyo • Madrid • Bogota • Santiago • San-Juan

И.  БРАТКО

ПРОГРАММИРОВАНИЕ

НА ЯЗЫКЕ ПРОЛОГ

ДЛЯ ИСКУССТВЕННОГО

ИНТЕЛЛЕКТА

Перевод с английского

А.И. Лупенко и A.M.Степанова

под редакцией A.M. Степанова

Москва "МИР" 1990

ББК 22.19

         Б 87

УДК 519.68

Братко И.

Б  87    Программирование на языке Пролог для искусственного интеллекта: Пер. с англ. -М.: Мир, 1990.- 560 с., ил.

ISBN 5-03-001425-Х

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

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

                                         ББК 22.19

Редакция литературы по математическим наукам

ISBN 5-03-001425-X (русск.)

ISBN 0-201-14224-4 (англ.)

(c) 1986 Addison-Wesley Publishing Company, Inc.

(c) перевод на русский язык, Лупенко А.И., Степанов A.M., 1990

Электронную версию книги создал Иванов Виктор Михайлович (студент Донского Государственного Технического Университета (ДГТУ), г. Ростов-на-Дону, специальность 2204 "Программное обеспечение АС и ВТ", 5 курс) 2 апреля 2004 года. Книга размещена на сайте http://dstu2204.narod.ru/   ( на этой странице ).

При создании книги были использованы главы 2-12 из книги в электронном виде в черновом варианте, взятые с этой страницы (что, впрочем, составило не более 15% от всей работы) и бумажный экземпляр книги из библиотеки ДГТУ. Для создания gif-картинок применялся CorelDRAW 12 , для редактирования htm-страниц - MS FrontPage Editor 3.0 . Для графического дизайн-оформления, максимально похожего на исходное, использована hmtl-графика + JavaScript.

Текст и картинки электронной версии книги проверены на совпадение с оригиналом.

Улучшения по сравнению с бумажной версией книги:

Расширено оглавление путём добавления подпунктов (с трёхцифровым кодом).

Сделан алфавитно-предметный указатель на JavaScript (полностью соответствующий тому, который есть в бумажной книге) на гиперссылках (вместо номеров страниц, как в бумажной книге) с выделением ключевого слова и сбросом выделения через "Обновить" в броузере (F5).

Сделана система быстрого получения ответов на упражнения по такому же принципу.

Памяти погибшей Югославии посвящается

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

ОТ РЕДАКТОРА ПЕРЕВОДА

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

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

Главы 1-8 перевел А. И. Лупенко, а предисловия и главы 9-16 - А.М. Степанов. Подготовку оригинала-макета книги на ЭВМ выполнили А.Н. Черных и Н.Г. Черных.

Эту книгу можно рекомендовать как тем читателям, которые впервые приступают к изучению Пролога и искусственного интеллекта, так и программистам, уже имеющим опыт составления пролог-программ.

А. М. Степанов

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

ПРЕДИСЛОВИЕ

В средние века знание латинского и греческого языков являлось существенной частью образования любого ученого. Ученый, владеющий только одним языком, неизбежно чувствовал себя неполноценным, поскольку он был лишен той полноты восприятия, которая возникает благодаря возможности посмотреть на мир сразу с двух точек зрения. Таким же неполноценным ощущает себя сегодняшний исследователь в области искусственного интеллекта, если он не обладает основательным знакомством как с Лиспом, так и с Прологом - с этими двумя основополагающими языками искусственного интеллекта, без знания которых невозможен более широкий взгляд на предмет исследования.

Похожие книги