Читаем Prolog полностью

    линеаризация( Лев, Спис1),


    линеаризация( Прав, Спис2),


    конк( Спис1, [Кор | Спис2], Спис).

9. 12

максэлемент( д( _, Кор, nil), Кор) :-  !.


                            % Корень - самый правый элемент

максэлемент( д( _, _, Прав,), Макс) :-


                            % Правое поддерево непустое


    максэлемент( Прав, Макс).

9. 13

внутри( Элем, д( _, Элем, _ ), [ Элем]).

внутри( Элем, д( Лев, Кор, _ ), [Кор | Путь]) :-


    больше( Кор, Элем),


    внутри( Элем, Лев, Путь).

внутри( Элем,д( _, Кор, Прав), [Кор | Путь]) :-


    больше( Элем, Кор),


    внутри( Элем, Прав, Путь).

9. 14

% Отображение двоичного дерева, растущего сверху вниз


% Предполагается, что каждая вершина занимает при печати


% один символ

отобр( Дер) :-


    уровни( Дер, 0, да).


                            % Обработать все уровни


уровни( Дер, Уров, нет) :-  !.


                            % Ниже уровня Уров больше нет вершин


уровни( Дер, Уров, да) :-


                            % Обработать все уровни, начиная с Уров


    вывод( Дер, Уров, 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


Перейти на страницу:

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

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT