% Обработать все уровни, начиная с Уров
вывод( Дер, Уров, 0, Дальше), nl,
% Вывести вершины уровня Уров
Уров1 is Уров + 1,
уровни( Дер, Уров1, Дальше).
% Обработать следующие уровни
вывод( nil, _, _, _, _ ).
вывод( д( Лев, X, Прав), Уров, ГлубХ, Дальше) :-
Глуб1 is ГлубХ + 1,
вывод( Лев, Уров, Глуб1, Дальше),
% Вывод левого поддерева
( Уров = ГлубХ, !,
% X на нашем уровне?
write( X), Дальше = да;
% Вывести вершину, продолжить
write(' ') ),
% Иначе - оставить место
вывод( Прав, Уров, Глуб1, Дальше).
% Вывод левого поддерева
Глава 10
10. 1
внутри( Элем, л( Элем)). % Элемент найден в листе
внутри( Элем, в2( Д1, М, Д2) ):-
% Вершина имеет два поддерева
больше( М, Элем), !, % Вершина не во втором поддереве
внутри( Элем, Д1); % Поиск в первом поддереве
внутри( Элем, Д2). % Иначе - во втором поддереве
внутри( Элем, в3( Д1, М2, Д2, М3, Д3) ):-
% Вершина имеет три поддерева
больше( М2, Элем), !,
% Элемент не во втором и не в третьем поддереве
внутри( Элем, Д1); % Поиск в первом поддереве
больше( М3, Элем), !, % Элемент не в третьем поддереве
внутри( Элем, Д2); % Поиск во втором поддереве
внутри( Элем, Д3). % Поиск в третьем поддереве
10. 3
avl( Дер) :-
аvl( Дер, Глуб). % Дер является AVL-деревом глубины Глуб
avl( nil, 0). % Пустое дерево - AVL -дерево глубины 0
avl( д( Лев, Кор, Прав), Г) :-
avl( Лев, ГЛ),
avl( Прав, ГП),
( ГЛ is ГП; ГЛ is ГП + 1; ГЛ is ГП - 1),
% Глубины поддеревьев примерно совпадают
макс( ГЛ, ГП, Г).
макс1( U, V, М) :- % М = 1 + макс( U, V)
U > V, !, М is U + 1;
М is V + 1.
Глава 11
11. 1
вглубину1( [Верш | Путь], [Верш | Путь]) :-
цель( Верш).
вглубину1( [Верш | Путь], Решение) :-
после( Верш, Верш1),
not принадлежит( Верш1, Путь),
вглубину1( [ Верш1, Верш | Путь], Решение).
11. 6
решить( СтартМнож, Решение) :-
% СтартМнож - множество стартовых вершин
bagof( [Верш], принадлежит( Верш, СтартМнож),
Пути),
вширину( Пути, Решение).
Назад | Содержание | Вперёд
Назад | Содержание | Вперёд
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
А
абстракция данных
автомат недетерминированный
автоматический возврат ещё 1 ссылка
альфа-бета алгоритм
программная реализация
эффективность
анонимная переменная
арифметика в Прологе
арифметические
операторы
ребусы
арность
атом
атомы
декомпозиция ещё 1 ссылка
синтаксис
создание
ALO
реализация
AVL-справочник
вставление элемента
AVL-дерево
Б
база
данных в Прологе
знаний
быстрая сортировка
В
вариант предложения
вероятностные знания
возврат автоматический ещё 1 ссылка
возвращенные оценки
вопрос типа
"как" ещё 1 ссылка
"почему" ещё 1 ссылка
встроенные операторы
+, -, *, /, div, is, mod ещё 1 ссылка
встроенные процедуры
>, <, >=, =<, =:=, =\=
! ещё 1 ссылка
=..
==
\==
arg
assert
asserta
assertz
atom
atomic
bagof
call
consult
fail
findall
functor
get ещё 1 ссылка
get0 ещё 1 ссылка
integer
is
name ещё 1 ссылка
nl
nonvar
nospy
not
notrace
put
read
reconsult
repeat
retract
see
seen
setof
spy
tab
tell
told
trace
ttyflush
var
write
Г
гамильтонов цикл
главная цель
главный функтор
голова
предложения
списка
головоломка
"восемь"
"ханойская башня"
граф
И / ИЛИ ещё 1 ссылка
направленный
построение пути
представление
Д
двоичное дерево
двоично-троичное (2-3) дерево
двоично-троичный справочник
вставление элемента
двоичный справочник
вставление элемента ещё 1 ссылка
поиск
удаление элемента
двунаправленный поиск
Читать дальше