Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 10

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 10 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 102021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Второй способ применения процедуры состоит в вызове ее с помощью оператора вызова процедуры (8в), Этот оператор есть, по существу, имя процедуры, за которым идет список фактических параметров. Оператор вызова процедуры может изменить и (обыч- гл. ь модвли зычислвнии но изменяет) данные (значения переменных, массивов и т. д.) вызываемой программы.

В определении вызываемой таким способом процедуры ге1цгп-оператор не нужен, Завершение выполнения последнего оператора процедуры завершает и выполнение оператора ее вызова. Например, следующий оператор определяет процедуру ВЗАИМОЗАМЕНА; ргосег)пге ВЗАИМОЗАМЕНА (х, у): Ьей(п 1 х; х у; у-1 епо Для обращения к этой процедуре можно было оы написать оператор вызова процедуры, такой, как ВЗАИМОЗАМЕНА (.А 11), Л 11!) Обмен информацией между процедурами можно осуществлять двумя способами. Во-первых, с помощью глобальных переменных. Мы предполагаем, что глобальные переменные неявно описаны в некоторой универсальной области. В этой области есть подобласть, в которой определены процедуры. Во-вторых, связь между процедурами можно осуществлять с помощью параметров. В Алголе 60 используется вызов по значению и вызов по наименованию.

Прн вызове по значеииюформальные параметры процедуры трактуются как локальные переменные, которым в качестве начальных значений придаются значения фактических параметров. При вызове по наименованию формальные параметры служат указателями места в программе, куда подставляются фактические параметры вместо каждого вхождения соответствующих формальных параметров.

Для простоты мы отходим от Алгола 60 и используем вызов по ссылке. При вызвав по ссьике параметры обрабатываются с помощью указателей на фактические параметры. Если фактический параметр является выражением (возможно, постоянной), то соответствующий формальный параметр трактуется как локальная переменная, которой в качестве начального значения присвоено значение этого выражения. Поэтому вес реализации вычисления функции или выполнения вызова процедуры на РАМ и РАСП равен сумме весов выполнения опера~оров в определении соответствующей процедуры.

Вес выполнения процедуры, вызывающей другие процедуры (возможно, себя), обсуждается в гл. 2. 9. Смысл геад-оператора н ътНе-оператора очевиден. Вес геадоператора равен 1. Вес ит! 1е-оператора на 1 больше веса вычисления значения выражения, стоящего за выделенным словом итИе. 52 ЬВ. ЯЗЫК ВЫСОКОГО УРОВНЯ УПРОЩЕННЫЙ АЛГОЛ !О. сопнпеп1-оператор позволяет вставлять замечания, облегчающие понимание программы, и имеет вес О.

! ! В дополнение к операторам общепринятых языков программирования мы включили под именем "произвольные" любые операторы, благодаря которым алгоритм можно понять легче, чем эквивалентную последовательность стандартных операторов языка программирования. Такие операторы используются в ситуациях, когда детали реализации либо несущественны, либо очевидны или когда желательно дать описание на языке еще более высокого уровня. Приведем примеры обычно используемых "произвольных*' операторов: а) пусть а будет наименьшим элементом множества 5 б) пометить элемент а как "старый" ') в) тт!1!ГОН!!Онзо1 депега!Ну (ти!й) считаем, что... О1)тетэм!Зе ...

!п оператор Например, ту!д считаем а (Ь о1!тепч!Зе переставить с и д !п оператор означает, что если а(Ь, то стоящий дальше оператор следует выполнять так, как он записан, а если а)Ь, то выполнять этот оператор, предварительно поменяв в нем с и с! местами. Реализация таких операторов в терминах общепринятых языков программирования или команд РАМ не вызывает затруднений, но она очень утомительна.

Приписывание весов операторам такого типа зависит от контекста, в котором оказывается данный опера яр. Дальнейшие примеры операторов такого рода не раз встретятся нам в этой книге в программах на Упрощенном Алголе. Поскольку переменные обычно не будут описываться, условимся об областях их действия. В одной программе или процедуре мы не будем употреблять одинаковые имена для двух разных переменных. Поэтому в качестве области действия переменной обычно можно брать всю процедуру или программу, в которую она входит '). Одно важное исключение возникает в случае, когда несколько процедур действуют на общей базе данных. В этом случае предполагается, что переменные общей базы данных глобальны, а переменные, используемые процедурой для временного запоминания в ходе работы с базой данных, локальны для этой процедуры.

Всякий раз, когда может возникнуть недоразумение по поводу области действия переменной, будет даваться явное описание. ') Под втнм мы подрввумеваем, что имеется массив СОСТОЯНИЕ, такой, что СОСТОЯНИЕ!а! есть й если а — «стврый«элемент, и О, если а — «новый». ') Это утверждение имеет нескольно несуюественных исключений.

Например, в процедуру могут входить двв невложенпых !ог-опервторв, обв с индексом а Строго говоря, область действия индексе 1ог-опервторв — это свм !от-опервтор, н потому вти индексы « являютсн разными переменными. ГЛ. ! МОДЕЛИ ВЫЧИСЛЕНИЙ УПРАЖНЕНИЯ 1.1. Докажите, что д(п) есть 0(((п)), если (а) )(п))е для некоторого В)О и для почти всех (т. е. для всех, кроме конечного числа) и и (б) существуют такие постоянные с,>0 и с,>0, чтой(п)<с,~(и)+ +с„для почти всех п)О.

1.2. Будем писать ~(п)<д(п), если существует такая положительная постоянная с, что ((и) =сд(п) для всех п. Покажите, что 1,<й, и (,<д, влечет (,+~.,~й,+д,. Какие еще свойства сохраняет отношение <? 1.3. Напишите программы для РАМ, РАСП и на Упрощенном Алголе для следующих задач: (а) Вычислить и! по входу и.

(б) Прочитать п положительных чисел, за которыми следует концевой маркер О, а затем напечатать их в порядке неубывания. (в) Допустить все входы вида 1"2"'О. 1.4. Проанализируйте временную и емкостную сложности ваших программ из упр. 1,3 при (а) равномерном и (б) логарифмическом весе. Введите меру "размера" входа.

*1.5. Напишите РАМ-программу для вычисления п" с временной сложностью О(!оя п) при равномерном весе, Докажите, что ваша программа правильна. *1.6. Покажите, что для любой РАМ-программы с временной сложностью Т(п) при логарифмическом весе существует эквивалентная РАМ-программа с временной сложностью 0(Т'(и)), в которой нет команд М1Л Т и 1)!У. Указании: Смоделируйте М1Л Т и О!У подпрограммами, в которых регистры с четными номерами используются для промежуточной памяти. В случае МЫЬТ покажите, что если 1 надо умножить на 1, то можно сосчитать каждое из ! (() частичных произведений и сложить их за О(!(()) шагов, а каждый шаг занимает время О(!(!)). *1.7, Что случится с вычислительной силой РАМ или РАСП, если из системы команд убрать МЫЬТ вместе с (?1У? Как это огра.

зится на весе вычисления? **1.8. Покажите, что любой язык, допускаемый РАМ, может допустить РАМ без косвенной адресации. Указание: Покажите, что всю ленту машины Тьюринга можно целиком закодировать одним целым числом. Таким образом, машину Тьюринга можно смоделировать в конечном числе регистров РАМ. 1.9. Покажите, что при (а) равномерном и(б) логарифмическом весах РАМ и РАСП эквивалентны в смысле равенства емкостных сложностей с точностью до постоянного множителя. УПРАЖНЕНИЯ 1.10.

Найдите неветвящуюся программу, которая вычисляет определитель (ЗхЗ)-матрицы по ее 9 элементам в качестве входов. 1.11. Напишите последовательность битовых операций для вычисления произведения двух двуразрядных двоичных целых чисел. 1.12. Покажите, что множество функций, вычислимых любой и-строчной неветвящейся программой с двоичными входами и булевыми операциями, можно реализовать в виде комбинационной логической сети из и булевых элементов. 1.13. Покажите, что любую булеву функцию можно вычислить неветвящейся программой. *1.14. Пусть граф с л узлами представлен множеством двоичных вектоРов Уо где !ЕЯ компонента вектоРа У, Равна 1 тогДа и только тогда, когда узлы ! и ! соединены ребром.

Найдите алгоритм сложности Одв(п), строящий вектор р„у которого на 1-м месте стоит 1 тогда и только тогда, когда есть путь из узла 1 в узел !. Можно применить поразрядные битовые логические операции на двоичных векторах, арифметические операции (на переменных типа "целые"), команды, которые преобразуют отдельные компоненты данных векторов в 0 или 1, и команду, которая присваивает значение 1 целочисленной переменной а, если самая левая единица в векторе у находится в разряде!, и полагает а=О, если у состоит из одних нулей.

"1.15. Постройте машину Тьюринга, которая по двум данным двоичным целым числам на лентах 1 и 2 печатает их сумму на ленте 3. Можете считать, что левые концы лент отмечены специальным символом 4~. 1.16. Приведите последовательность конфигураций (мгновенных описаний) МТ с рис. 1.21, если входом является (а) 0010, (б) О!!10. *1.17. Постройте МТ, которая (а) печатает 0" на ленте 2, начиная работу с 0" на ленте 1, (б) допускает входы вида 0" 10", 1.18.

Укажите множество состояний и функцию переходов МТ, моделирующей РАМ-команду 1.0АП 3, как в доказательстве теоремы 1.3. 1.19. Постройте РАМ-программу, вычисляющую 2' по данному а за 0(п) шагов. Чему равны (а) равномерный и (б) логарифмический веса вашей программы? *1.20. Определим д(т, и) равенствами д(0, п)=п и д(т, л)= =2з' -' "' при лг»О. Напишите РАМ-программу, вычисляющую й(л, п) по и. Как соотносятся равномерный и логарифмический веса вашей программы? ГЛ. Ь МОДЕЛИ ВЫЧИСЛЕНИЙ 1.2[. Выполните процедуру ВЗАИМОЗАМВНА из равд.

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

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

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

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