Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

?- Х = f( X).

Успешным или неуспешным будет здесь сопоставление? По определению унификации в логике, сопоставление должно быть неуспешным, а что будет в соответствии с нашим определением сопоставления из раздела 2.2? Попробуйте объяснить, почему многие реализации Пролога отвечают на вышеприведенный вопрос так:

X = f(f(f(f(f(f(f(f(f(f(f(f(f(f(f( ...

Посмотреть ответ

Резюме

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

Расширения, преследующие цель приспособить язык к некоторым практическим нуждам, будут изучены дальше (гл. 3, 5, 6. 7). Важными моментами данной главы являются следующие:

Простые объекты в Прологе - это атомы, переменные и числа. Структурные объекты, или структуры, используются для представления объектов, которые состоят из нескольких компонент.

Структуры строятся посредством функторов. Каждый функтор определяется своими именем и арностью.

Тип объекта распознается исключительно по его синтаксической форме.

Область известности (лексический диапазон) переменных - одно предложение. Поэтому одно и то же имя в двух предложениях обозначает две разные переменные.

Структуры могут быть естественным образом изображены в виде деревьев. Пролог можно рассматривать как язык обработки деревьев.

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

Сопоставление, если оно завершается успешно, в качестве результата выдает наиболее общую конкретизацию переменных.

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

Запятая между целями означает их конъюнкцию. Точка с запятой между целями означает их дизъюнкцию.

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

Декларативный смысл программ на "чистом Прологе" не зависит от порядка предложений и от порядка целей в предложениях.

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

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

Кроме переупорядочивания существуют и другие, более общие методы предотвращения зацикливания, способствующие получению процедурно правильных программ.

В данной главе обсуждались следующие понятия:

объекты данных:

атом, число, переменная, структура

терм

функтор, арность функтора

главный функтор терма

сопоставление термов

наиболее общая конкретизация

декларативная семантика

конкретизация предложений,

вариант предложения

процедурная семантика

вычисление целевого утверждения Литература

Clocksin W. F. and Mellish С. S. (1981). Programming in Prolog. Springer-Verlag. [Имеется перевод: Клоксин У., Меллиш К. Программирование на языке Пролог.
– М.: Мир, 1987.]

Lloyd J. W. (1984). Foundations of Logic Programming. Springer-Verlag.

Nilsson N. J. (1981). Principies of Artificial Intelligence. Tioga; Springer-Verlag.

Robinson A. J. (1965). A machine-oriented logic based on the resolution principle. JACM 12: 23-41. [Имеется перевод: Робинсон Дж. Машинно-ориентированная логика, основанная на принципе резолюции.- В кн. Кибернетический сборник, вып. 7, 1970, с. 194-218.]

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

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

Глава 3

СПИСКИ, ОПЕРАТОРЫ, АРИФМЕТИКА

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

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

Список– это простая структура данных, широко используемая в нечисловом программировании. Список - это последовательность, составленная из произвольного числа элементов, например энн, теннис, том, лыжи. На Прологе это записывается так:

[ энн, теннис, том, лыжи ]

Однако таково лишь внешнее представление списков. Как мы уже видели в гл. 2, все структурные объекты Пролога - это деревья. Списки не являются исключением из этого правила.

Каким образом можно представить список в виде стандартного прологовского объекта? Мы должны рассмотреть два случая: пустой список и не пустой список. В первом случае список записывается как атом [ ]. Во втором случае список следует рассматривать как структуру состоящую из двух частей:

(1) первый элемент, называемый головой списка;

(2) остальная часть списка, называемая хвостом.

Например, для списка

[ энн, теннис, том, лыжи ]

Поделиться:
Популярные книги

Целительные силы. Книга 1. Очищение организма и правильное питание. Биосинтез и биоэнергетика

Малахов Геннадий Петрович
Дом и Семья:
здоровье и красота
4.00
рейтинг книги
Целительные силы. Книга 1. Очищение организма и правильное питание. Биосинтез и биоэнергетика

Записки

Врангель Петр Николаевич
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Записки

Мусульманские имена

Ибн Мирзакарим ал-Карнаки
Справочная литература:
справочники
словари
5.00
рейтинг книги
Мусульманские имена

Золушка (сборник)

Макбейн Эд
Мастера остросюжетного романа
Детективы:
полицейские детективы
5.00
рейтинг книги
Золушка (сборник)

Хроники Максима. Трилогия

Бадей Сергей
Фантастика:
юмористическое фэнтези
8.26
рейтинг книги
Хроники Максима. Трилогия

М. Ю. Лермонтов в воспоминаниях современников

Сборник
Серия литературных мемуаров
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
М. Ю. Лермонтов в воспоминаниях современников

Газлайтер. Том 6

Володин Григорий Григорьевич
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Дикари

Мож Роже
Приключения:
исторические приключения
6.25
рейтинг книги
Дикари

Мир Приключений 1963 г. №9

Днепров Анатолий
Альманах "Мир приключений"
Фантастика:
научная фантастика
5.00
рейтинг книги
Мир Приключений 1963 г. №9

Денис Котик и царица крылатых лошадей

Зорич Александр
1. Денис Котик
Детские:
детская фантастика
6.57
рейтинг книги
Денис Котик и царица крылатых лошадей

Том 2. Рассказы и пьесы 1904-1907

Андреев Леонид Николаевич
2. Собрание сочинений в шести томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 2. Рассказы и пьесы 1904-1907

Ермак. Регент

Валериев Игорь
10. Ермак
Фантастика:
попаданцы
альтернативная история
4.75
рейтинг книги
Ермак. Регент

Северное сияние

Робертс Нора
Любовные романы:
остросюжетные любовные романы
8.66
рейтинг книги
Северное сияние

Распутин (др.издание)

Наживин Иван Федорович
Проза:
историческая проза
5.75
рейтинг книги
Распутин (др.издание)