Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Глава 5. Унификация и поиск с возвратом. 84

Сопоставление и унификация 84

Поиск с возвратом. 87

Поиск всех решений 89

Упражнение на поиск с возвратом. 91

Детальный обзор поиска с возвратом. 91

Четыре основных принципа поиска с возвратом. 92

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

Управление поиском решений. 98

Использование предиката fail. 98

Упражнения. 100

Прерывание поиска с возвратом: отсечение. 100

Как использовать отсечение. 100

Предотвращение поиска с возвратом к предыдущей подцели в правиле. 101

Предотвращение поиска с возвратом к следующему предложению. 102

Детерминизм и отсечение. 103

Пример, использующий отсечение 104

Предикат not. 105

Пример 106

Упражнения. 107

Пролог с процедурной точки зрения. 109

Как представлять факты и правила в качестве процедур 110

Использование правил для условного ветвления (case). 110

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

Отсечение как goto. 112

Возврат вычисленного значения. 113

Обзор. 114

Глава 6. Простые и составные объекты 116

Простые объекты данных. 116

Переменные как объекты данных. 116

Константы как объекты данных. 116

Литеры. 116

Числа. 117

Атомы. 117

Составные объекты данных и функторы 118

Унификация составных объектов. 118

Использование знака равенства для унификации составных объектов. 119

Рассмотрение нескольких значений как единое целое. 119

Примеры использования функторов. 120

Пример использования составных объектов. 121

Упражнение. 124

Объявление доменов составных объектов. 124

Запись определений доменов: Обзор. 125

Многоуровневые составные объекты. 126

Пример, иллюстрирующий структуру предложения. 126

Упражнения. 127

Определения составных смешанных доменов. 127

Аргументы множественных типов. 128

Списки 128

Сравнение составных объектов. 129

Обзор 130

Глава 7. Повтор и рекурсия 132

Процесс повторения 132

Снова поиск с возвратом 132

Пример 133

Упражнение 134

Предварительные и последующие операции 134

Упражнение 135

Использование поиска с возвратом в замкнутых системах 136

Упражнения 137

Рекурсивные процедуры 137

Что же все-таки делает компьютер? 138

Преимущества рекурсии 138

Оптимизация хвостовой рекурсии 139

Как задать хвостовую рекурсию 139

Упражение 140

Как избежать хвостовой рекурсии 140

На помощь приходит команда "cut" 142

Использование аргументов в качестве переменных цикла 144

Упражнения 146

Рекурсивные структуры данных 147

Деревья - как типы данных 148

Обход дерева 149

Создание дерева 151

Бинарные поисковые деревья 153

Сортировка на основе дерева 154

Пример 155

Упражнения 156

Обзор 158

Глава 8. Списки и рекурсия 160

Что такое списки? 160

Объявление списков 160

Голова и хвост списка 161

Работа со списками 162

Использование списков 162

Печать списков 163

Упражнение 164

Подсчет элементов списка 164

Упражнение 165

Хвостовая рекурсия 166

Упражнение 167

Другой пример - изменения в списках 167

Снова о хвостовой рекурсии 167

Еще об изменении списков 168

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

Упражнение 169

Объединение одного списка с другим: декларативное и процедурное программирование 170

Рекурсии с процедурной точки зрения 170

Упражнение 171

Один предикат может иметь несколько вариантов использования 171

Упражнение 172

Немедленный поиск всех решений 173

Составные списки 174

Упражнение 175

Грамматический разбор списков 175

Заключение 178

Соседние файлы в папке Документация