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

                встав( Д3, X, НД3).

        встав( в3( Д1, М2, Д2, М3, Д3), X,


                в2( Д1, М2, Д2), М3, в2( НД3а, Мб, НД3б) ) :-


                больше( X, М3),


                встав( Д3, X, НД3а, Мб, НД3б).

Рис. 10. 6.  Вставление элемента в 2-3 справочник. В этой


программе предусмотрено, что попытка повторного


вставления элемента терпит неудачу.

Программа для вставления нового элемента в 2-3 справочник показана полностью на рис. 10.6. На рис. 10.7 показана программа вывода на печать 2-3 деревьев.

Наша программа иногда выполняет лишние возвраты. Так, если встав с тремя аргументами терпит неудачу, то вызывается процедура встав с пятью аргументами, которая часть работы делает повторно. Можно устранить источник неэффективности, если, например, переопределить встав как

        встав2( Дер, X, Деревья)

где Деревья - список, состоящий либо из одного, либо из трех аргументов:

        Деревья = [ НовДер], если встав( Дер, X, НовДер)


        Деревья = [ НДа, Мб, НДб],


        если встав( Дер, X, НДа, Мб, НДб)

Теперь отношение доб23 можно переопределить так:

        доб23( Д, X, Д1) :-


                встав( Д, X, Деревья),


                соединить( Деревья, Д1).

Отношение соединить формирует одно дерево Д1 из деревьев, находящихся в списке Деревья.

Упражнения

10. 1.    Определите отношение

        внутри( Эдем, Дер)

для поиска элемента Элем в 2-3 справочнике Дер.

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

10. 2.    Введите в программу рис. 10.6 изменения для устранения лишних возвратов (определите отношения встав2 и соединить).

%  Отображение 2-3 справочников

        отобр(Д) :-                                                                                                         15


            отобр( Д, 0).                                                                                             --

        отобр( nil, _ ).                                                                                            15

        отобр( л(А), Н) :-                                                                                        --


                tab( H), write( A), nl.                                                                               13

        отобр( в2( Д1, М, Д2), Н) :-                                                                  --


                H1 is H + 5                                                                                       13


                отобр( Д2, H1),                                                                               --


                tab( H), write( --), nl,                                                                               12


                tab( H), write( M), nl,                                                                           --


                tab( H), write( --), nl,                                                                         12


                отобр( Д1, H1).                                                                                         10

        отобр( в3( Д1, M2, Д2, М3, Д3), H) :-                                                        10


                H1 is H + 5                                                                                             --


                отобр( Д3, H1),                                                                                          8


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

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

Слово о полку Игореве
Слово о полку Игореве

Исследование выдающегося историка Древней Руси А. А. Зимина содержит оригинальную, отличную от общепризнанной, концепцию происхождения и времени создания «Слова о полку Игореве». В книге содержится ценный материал о соотношении текста «Слова» с русскими летописями, историческими повестями XV–XVI вв., неординарные решения ряда проблем «слововедения», а также обстоятельный обзор оценок «Слова» в русской и зарубежной науке XIX–XX вв.Не ознакомившись в полной мере с аргументацией А. А. Зимина, несомненно самого основательного из числа «скептиков», мы не можем продолжать изучение «Слова», в частности проблем его атрибуции и времени создания.Книга рассчитана не только на специалистов по древнерусской литературе, но и на всех, интересующихся спорными проблемами возникновения «Слова».

Александр Александрович Зимин

Литературоведение / Научная литература / Древнерусская литература / Прочая старинная литература / Прочая научная литература / Древние книги