AOP_Tom1 (1021736), страница 123

Файл №1021736 AOP_Tom1 (Полезная книжка в трёх томах) 123 страницаAOP_Tom1 (1021736) страница 1232017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 123)

Третий, и последний, из нужных иам алгоритмов имеет отиошсние к команде МОЧЕ СОБКЕБРОМО1МО. Прежде чем приступить к созданию алгоритма, нужно четко сформулировать его назначение. В языке СОВОГО выражение МОЧЕ СОНЕЕБРОМО1МО а ТО Д, (7) где а и Д вЂ” ссылки наподобие (б) иа элементы данных, обозначает сокращенную запись множества всех выражений типа МОЧЕ а' ТО Д', для которых существует такое целое число и > О и такие и имен Ае, Аы, .., А -ы что а'=Ас ОРА1 ОР ... ОБА„1 ОРа, (8) д' = А, ОР А1 ОР... ОР А„, ОР )у и либо а', либо,9' является простейшим элемеитом (а не группой элементов). Более того, иеобходимо, чтобы в (8) была указана полная квалификация первых уровней, а именно — что А +1 является родителем А для 0 < ) < и.

а' и Д' должвы располагаться в дереве на и уровней виже, чем а и Д. Для рассматриваемого здесь примера (4) выражение МОЧЕ СОВВЕБРОМО1МО А ТО Н является сокращенной формой записи выражений МОЧЕ В ОР А ТО В ОР Н МОЧЕ 6 ОР Р ОР А ТО 0 ОР Р ОР Н Алгоритм- для распознавания соответствующих пар а',,8' несмотря на свою простоту довольно интересен, т. е. необходимо совершить обход дерева с корнем а в прямом порядке, одновременно выискивая в дереве 8 совпадающие имена и пропуская поддеревья, в которых появление соответствующих элементов невозможно. Имена Ло,...,Л„~ из (8) располагаются в обратном порядке: Л„ы...,Ло.

Алгоритм С (Поиск соошоеплсплоующпх пар). Для заданных РО и ЦО, которые указывают иа позиции таблицы данных для а и 8 соответственно, этот алгоритм последовательно находит все пары указателей (Р, Ц) на элементы (а', ))'), удовлетворяющие упомянутым выше требованиям. С1. [Инициализация.] Установить Р ~ — РО, Ц е — ЦО. (В оставшейся части этого алгоритма указательные. переменные Р и Ц совершают обход деревьев с корнями а и ~3 соответственно.) С2.

[Простейший элемент?] Если СН1ЕО(Р) = Л или СН1ЕО(Ц) = Л, то вывести (Р, Ц) как одну из искомых пар и перейти к шагу С5. В противном случае установить Р ( — СН1ЕО(Р), Ц +- СН1ЕР(Ц). (На этом шаге Р и Ц указывают на элементы а' и ЛЧ', удовлетворяющие (8), а команду МОЧЕ а' ТО Д' необходимо выполнять тогда и только тогда, когда либо а', либо ))' (или оба сразу) — простейший элемент.) СЗ. [Сравнение имен.] (Р и Ц указывают на элементы данных, которые соответственно имеют квалификацию в виде Л ОРЛлОР...ОРЛ„ и В ОРЛИНОЕ...ОРЛо ~ОР,З. Теперь задача заключается в том, чтобы узнать, можно ли сделать так, чтобы Ве = .4о, проверяя все имена в группе Л~ ОР...

ОР .4„, ОР )).) Если МАМЕ(Р) = МАМЕ(Ц), то перейти к шагу С2 (найдено совладение). В противном случае, если Б1В(Ц) Э~ Л, установить Ц <- Б1В(Ц) и повторить шаг СЗ. (Если БХВ(Ц) = Л, значит, в этой группе иет соответствующего имени и следует перейти к шагу С4.) С4. [Продвижение.] Если Б1В(Р) ф Л, то установить значения Р < — Б1В(Р), Ц <— СН1ЕО(РАВЕМТ(Ц)) и вернуться к шагу СЗ. Если Б1В(Р) = Л, то установить Р ~- РАВЕМТ(Р) и Ц ~ — РАКЕМТ(Ц) Сб. [Готово?] Если Р = РО, то прекратить выполнение алгоритма; в противном случае перейти к шагу С4. 3 Блок-схема этого алгоритма показана на рис. 41.

Доказательство корректности алгоритма можно легко получить с помощью метода индукции по размеру обрабатываемых деревьев (см. упр. 9). ответств найдено Рис. 41. Алгоритм для выполнения команды ИОЧЕ ООААЕБРОМО1МО. Теперь рассмотрим способы применения пяти полей евязи (РЕЕЧ, РАЕЕМТ, МАМЕ, СИ11.О и Б1В) в алгоритмах В и С. Замечательно то, что эти связи образуют "полный набор" в том смысле, что алгоритмы В и С действительно выполняют минимальный объем работы при продвижении по таблице данных. И всякий раз, когда нужно сослаться на другую позицию таблицы данных, ее адрес сразу же становится доступным, поэтому нет необходимости проводить дополнительный поиск. Трудно представить, как можно было бы сделать алгоритмы В и С более быстрыми, включив в таблицу дополнительную иггформацггю о связях (см., однако, упр.

11). Каждое поле связи может рассматриваться как ключ к этой программе, который используется длн ускорения работы алгоритмов, (Конечно, алгоритм для построения таблиц, т. е, алгоритм А, выполняется медленнее, поскольку он имеет больше связей, которые необходимо заполнить. Но таблица строится лишь один раз,) С другой стороньг, ясно, что в построенной выше таблице данных содержится гораздо больше избыточной информации.

Посмотрим, что произойдет, если ггдалцпгь некоторые поля связи. Связь РВЕЧ, хотя она и не используется в алгоритме С, имеет большое значение в алгоритме В и, похоже, является существенной частью любого компилятора языка СОВОГО, за исключением случаев, когда требуется выполнять длительные операции поиска, Следовательно, поле, которое связывает все элементы с одинаковыми именами, имеет большое значение для эффективной работы.

Поэтому стратегию действий в такой ситуации можно слегка модифицировать и вместо связи Л в когще каждого списка применить циклическое связывание. Но этого не стоит делать, когда поля связи не изменяются и не удаляются. Связь РАМЕМТ используется в алгоритмах В и С, хотя можно обойтись и без нее, если в алгоритме С применить вспомогательный стек или добавить связь Б1В так, чтобы задействовать связи-нити (как в разделе 2.3,2). Таким образом, становится ясно, что связь РАИЕМТ используется только е алгоритме В.

Если бы поле Б1В было связью-нитью, чтобы элементы со значением поля связи Б1В = Л содержалн вместо него значение Б1В = РАВЕМТ, можно было бы найти родителя любого элемента данных, следуя по связям Б1В. Добавлеггггые связи-нити можно отличить либо с помощью нового поля ТАО в каждом узле, в которокг указывалось бы, что поле Б1В содержит снязь-нить, либо с помощью условия Б1В(Р) < Р, если позиции таблицы данных хранятся последовательно в памяти в порядке появления, Это значит, что на шаге В5 придется выполнить короткий поиск, а сам алгоритм соответственно станет работать медленнее, Связь МАМЕ используется в этих алгоритмах только на шагах Вб и СЗ.

В обоих сггучанх можно было бы выполнить проверку МАМЕ(Б) = Р» и МАИЕСР) = МАИЕЯ) иначе, если бы связь ИЛИЕ отсутствовала (см, упр, 10), ио это существеиио замедлила бы выполнение внутренних циклов в алгоритмах В и С. Ясна, чта здесь снова имеет место компромисс между экономией пространства для связи и скоростью выполнения алгоритмов. (Скорость работы алгоритма С ие так уж важна для компиляторов языка СОВОЬ, если рассматривать типичные способы употребления команд ИбтЕ СОЯЯЕВРСНЭХНС, Однако алгоритм В должен работать быстро.) Известно, что связи ИЛИЕ используются и для выполнения других важных задач в компиляторе языка СОВ01., особенно при выводе диагностической информации.

Алгоритм А постепенно создает таблицу данных, причем никогда ие приходится возвращать узлы в область свободной памяти, Поэтому позиции таблицы данных обычно располагаются в последовательных ячейках памяти в порядке появления элементов даииых в исходиой программе иа языке СОВОЬ, Таким образом, в нашем примере (б) ячейки А1, ВЗ, ... будут располагаться одна за другаЯ, Такой последовательный харахтер размещения ячеек в таблице даипых позволяет существенна упростить работу. Например, связь СН1Ю каждого узла либо раева Л, либо указывает иа узел, который следует сразу же эа пим, поэтому пале СН1Ы можно сократить до размера 1 бит, Или поле СН1Ы можно удалить и вместо нега проверить условие РЛНЕНТ(Р+ с) я: Р, где с — размер узла в таблице данных. Таким образом, необязательно испольэовать сразу все пять полей связи, хата оии очень палезиы для ускорения работы алгоритмов В и С, Эта ситуация весьма типична для большинства многосвязных структур, Иитересио отметить, что по крайней мере полдюжины разработчиков компиля.

торов СОВО1 в начале 60-х гадов независимо пришли к одному способу оргаиизеции таблицы данных с помощью пяти связей (или четырех из пяти, так как связь СН100 обычно це испальзуетсв), Впервые описание такога метода было опубликовапа Г. В. Лоусоном (мл.) (Н. %. 1азуэап,,1г.) [см, АСМ А2аг)опа1 Сапйегепсе 0!Наес (Вугаспэе, ХХл 1060]. Одиако Дэвид Дам (йау!б Ов)зщ) в 1063 гсщу предложил оригинальный метод, который позволяет получить тат же результат, что и при работе с алгоритмами В и С, ио с использованием двух полей связи и паследовательиога распределения позиций в таблице данных беэ существенного снижения скорости выпалиеиия (см.

упр. 10-14), УПРАЖНЕНИЯ 1. 100] Если конфигурации даииых в языке ООВОь рягсмятрияать как древовидные структуры, то в каком порядке оии записяиы: в прямом, обратном или ии в одном из иих2 й. ]!О] Оцените время вьщолиоиия алгоритме А, 3. ]яб] Структуры дяииых языка Рь/! подобны структурам языка ООВО1., ио в иик допугтимя любая последоватольиость номеров уровией.

Например, последовательность 1 Л 1 Л 3 В 3 В Б С зкеивялеития последовательности 3 С 4 и 3 б 3 В 3 В В итоге правило (а) изменяется таким образом: "Элементы группы должны имать иезозрастзющую послоловательиогть номеров уровиой, причем вге оии должны быть болыпе номере уровия группы ляпиоя группы". Кяк иообхсдимо измаиигь ялгоритм А, чтобы выполнить переход от соглашений, принятых для языка СОВОЬ, к соглашениям, принятым для языка Р1./1? 4. [35) Алгоритм А не позволит обнаружить ошибку, если программист в СОВО1.-программе нарушит упомянутое в этом разделе правило (с). Как следует изменить алгоритм А, чтобы принимались только те структуры, которые удовлетворяют правилу (с)? б. [30) На практике алгоритм В может получать из входного потока связанный список ссылок на таблицу символов, а не то, что прежде называлось "Ра,Ры,Р„".

Пусть Т является такой указательной переменной, что ТМРО(Т) гя Ра, ТЕРО(ЕЬТМБ(Т)) = — Р„ ..., ТЕРО(БЬТМЕ1"1(Т)) = Р„, БЬТМБ("+О(Т) = А. Покажите, как изменить алгоритм В, чтобы в нем в качестве входного потока можно было использовать связанный список. 6. (23) В языке Р1./1 допускается использование структур данных, которые во многом подобны структурам языка СОВОЬ, на без применения ограничения (с). Вместо этого получим правило, по которому квалифицированная ссылка (Б) является однозначной, если Указана "полнаЯ" квалификациЯ, т. е. если Аз<.~ — Родитель А~ длЯ О < 1 < и и если А„не имеет родителя. Ограничение (с) теперь сведено к простому условию, согласно которому никакие два элемента данных группы не могут иметь одно и то же имя, На второе появление СС в (2) можно было бы недвусмысленно сослаться с помощью ссылки "СС ОР АА", а на трн элемента данных 1 А 2 А 3 А можно было бы в соответствии с соглашениями, принятыми в языке РЬ/1, сослаться в такой форме: "А", "А ОР А", "А ОР А ОР А".

Характеристики

Тип файла
DJVU-файл
Размер
7,53 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее