Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 1

Д. Кнут - Искусство программирования том 1 (1119450), страница 74

Файл №1119450 Д. Кнут - Искусство программирования том 1 (Д. Кнут - Искусство программирования том 1) 74 страницаД. Кнут - Искусство программирования том 1 (1119450) страница 742019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

ГЬП, «. 1 Переустановить указатель буфера вывода. В+- О. Проверить значение СООИТ[Ь) . Не равно ли оно нулю? 011ИК[В) +- й. В+- Ь. Р+- ЦАХИК [ОБ Т5. Вые начала оче Сохранить Р в области буфера. Не равно ли нулю значение Р? Увеличить указатель буфера. Проверить, заполнен ли буфер.

Если дополнен, переписать блок на ленту. Переустановить указатель буфера. И+- И вЂ” 1. Р +- ТОР(РК Тб. У аненне отношений. г14 +- БОС(Р) СОСИ? ЬН4) — 1 -+ СОВЕТ [г14Е Достигнут ли нуль? Если достигнут, установить ЦХТИК[М) +- г14. М+- г14. Р +- ИЕХТ(Р).

Если Р Р' й, повторить. Т7. У аленне нз оче н. Р +- 011ИК(Р), перейти к шагу Т5. У8. К Вывести последний блок и перемотать ленту. Останов с выводом значения И на консоль. Начало области таблицы. $ Анализ алгоритма Т достаточно просто можно выполнить с помощью закона Кирхгофа. Используя этот закон, время выполнения можно приблизительно оценить с помощью формулы с1 т+ сзи, где т — количество введенных отношений, и— количество объектов, а с1 и сз — константы.

Более быстрый алгоритм для решения этой задачи просто невозможно себе представить! Что касается программы Т, то для нее можно получить точную оценку времени выполнения, используя следующие параметры; а = количество объектов, не имеющих предшественника, Ь = количество блоков на входе, = Ит+ 2)/501, и с = количество блоков на выходе = ~(и+1)/1001. Если не принимать во внимание продолжительность операций ввода-вывода, общее время выполнения в таком случае будет равно всего лишь (52т+ 24и+ 7Ь+ 2с+16) и. Метод топологической сортировки, аналогичный алгоритму Т (но без важной особенности связанных списков), впервые был опубликован А.

Б. Каном (А. В. Кайн, САСМ 5 (1962), 558-562), а доказательство того„что топологическая сортировка частичного упорядочения всегда возможна, было впервые опубликовано Э. Шпильрайном (Е. Вхрйга)п, Ешь)атепса МасЬетаНса 16 (1930), 386 — 389). Он доказал этот результат как для бесконечных, так и для конечных множеств, причем упомянул, что он уже был известен некоторым из его коллег. Несмотря на столь высокую эффективность алгоритма Т в разделе 7.4.1 будет рассмотрен еще более эффективный алгоритм топологической сортировки.

УПРАЖНЕНИЯ 1. [10] В операции (9) для "выталкивания" элемента из стека предусмотрена возможность обработки события недостатка (ОИОЕЕРЧ.Ои). Почему тогда в операции (8) для "проталкивания" элемента в стек не предусмотрена возможность обработки события переполнения (ОЧЕИН.ОИ)? 2. [88] Напишите подпрограмму "общего назначения" для компьютера И1Х, которая выполняла бы операцию вставки (10).

Эта подпрограмма должна удовлетворять следующим требованиям (так же, как и в разделе 1.4.1). Условия вызова: ЛИР 1ИБЕИТ Переход к подпрограмме. ИОР Т Адрес указательной переменной. Условия ввода: гА = информация, которая должна быть введена в поле 1ИРО нового узла. Условия вывода: Стек, указатель которого является переменной связи Т и имеет сверху новый узел; г11 = Т; г12, г13 изменяются. 3. [82] Напишите подпрограмму "общего назначения" для компьютера И1Х, которая выполняла бы операцию удаления (11).

Эта подпрограмма должна удовлетворять следующим требованиям. Условия вызова: Л(Р ОЕ1.ЕТЕ Переход к подпрограмме. ИОР Т Адрес указательной переменной. ЛР ОИРЕЕР1.ОИ Первый выход, если происходит событие ОИОЕИН.ОИ. Условия ввода: Не определены. Условия вывода: Если стек, указателем которого является переменная связи Т, пуст, срабатывает первый выход, в противном случае удаляется верхний узел стека и выход переносится к третьей позиции после ЛИР ОЕ1.ЕТЕ. В последнем случае гП = Т и в гА находится содержимое поля 1ИРО удаленного узла. В любом случае г12 и г13 используются атой подпрограммой. 4. [вв] Программа (10) основана на операции Р ~м АРАП., определенной действиями (6).

Покажите, квк можно создать такую подпрограмму обработки событий переполнения (ОТЕИРьОИ), чтобы без каких-либо изменений в коде (10) в операции Р ~м АРА11 использовалось ограничение ЕЕОИ1И, указанное в (7), В общем случае эта подпрограмма не должна изменять содержимое регистров, за исключением регистра гЛ и, возможно, индикатора сравнения.

Она должна иметь выход в позиции гЛ вЂ” 2 вместо обычной позиции гЛ. б [24] Операции (14) и (17) эквивалентны операциям с очередью. Покажите, как можно было бы определить операцию "вставка элемента с начала очереди" для получения набора всех действий, выполняемых для дека с ограниченным вводом. Как в таком случае определить операцию "удаление с конца" (для получения дека общего типа)? 6.

[21] В операции (14) было установлено ~.1ИХ(Р) е- й, тогда как следующая операция вставки элемента в конце очереди изменит значение того же самого поля связи. Покажите, как можно было бы избежать установки 1.1ИК(Р) в (14) при внесении изменений в проверку условия Р = й в (17). ° 7. [дд] Предложите алгоритм "обращения" связанного линейного списка наподобие (1), т, е, такого изменения связей, чтобы его элементы расположились в обратном порядке.

[Если, например, обратить список (1), то в нем указатель 8188? будет связан с узлом, содержащим элемент б, а этот узел будет связан с узлом, содержащим элемент 4, и т. д.] Допустим, что узлы имеют вид (3). 8. [22] Напишите программу для компьютера 611, чтобы выполнить упр. 7, оптимизируя скорость ее выполнения. 9. [ЯО] Какое из приведенных ниже отношений является частичным упорядочением некоторого множества 5? [Замечание. Если ниже определено отношение х с у, то задача заключается в определении отношения х -с у ы (х -с у или х = у) н выяснении, является ли ~ частичным упорядочением.] (а) 5 = множество всех рациональных чисел; х с у означает, что х > у.

(Ь) 5 = множество всех людей; х с у означает, что х является предком у. (с) 5 = множество всех целых чисел; х ч у означает, что х кратно у (т. е. х шод у = О). (Й) 5 = множество всех доказанных в этой книге математических результатов; х м у означает, что доказательство у зависит от истинности х. (е) 5 = множество всех положительных целых чисел; х ч у означает, что х+ у четно. (Г) 5 = множество подпрограмм: х м у означает, что х вызывает у, т, е. подпрограмма у может быть вызвана во время работы подпрограммы х, но рекурсия при этом не допускается. 10. [М21] При условии, что С является отношением, которое удовлетворяет свойствам (1) и (й) частичного упорядочения, докажите, что отношение ч, определенное правилом ох -ч у тогда и только тогда, когда х = у нли х С у", обладает всеми тремя свойствами частичного упорядочения.

э 11. [й(] Результат топологической сортировки не всегда полностью определен, поскольку может существовать несколько способов упорядочения узлов и удовлетворения условий топологического порядка. Найдите все возможные способы топологического упорядочения узлов, показанных на рис. 6. 12. [МЯО] Существует 2" подмножеств множества п элементов, и эти подмножества частично упорядочены с помощью отношения включения множества. Предложите два способа упорядочения данных подмножеств в типологическом порядке. 13.

[Мдд] Сколько существует способов упорядочения в топологнческом порядке 2" подмножеств, описанных в упр, 12? (Дайте ответ в виде функции от и.) 14. [М21] Линейным упорядочением (йпеаг оп1сгчпд) или полним упорядочением (1оФа! огдегЫд) множества 5 называется частичное упорядочение, которое удовлетворяет дополнительному условию "сравнимости".

(1ч) Для любых двух элементов х, у множества 5 верно либо х ~ у, либо у -с х. Дохажите непосредственно на основе этого определения, что топологическая сортировка может быть получена в единственном варианте тогда и только тогда, когда отношение ч является линейным упорядочением. (Предположим, что множество 5 конечно.) 16. [Мдд] Покажите, что для любого частичного упорядочения конечного множества 5 существует единственное множество неприводимых отношений, которое характеризует это упорядочение, например таких, как отношения (18) и отношения, показанные на рнс.

6. Верно ли это утверждение, если 5 является бесконечным множеством? 16. [МЯУ] Для любого заданного частичного упорядочения множества 5 = (хм...,х ) можно построить его матрицу инцидентности (гпсЫепсе та1гЫ) (аи), где ао = 1, если х, -с х„и аи = 0 в противном случае, Покажите, что существует такая перестановка строк и столбцов этой матрицы, при которой все ее элементы, расположенные ниже диагонали, будут равны нулю.

ь 17. [И] Каким будет результат выполнения алгоритма Т для исходного набора отношений (18)? 18. [80] Какой смысл нмеютэшачения Ц1.1ИК [0], Ц1.1ИК [1],..., 01.1ИК Ы после завершения алгоритма Т (если они вообще его имеют)? 19. [18] В алгоритме Т на шаге Т5 проверяется начальный элемент очереди, но этот элемент не удаляется из очереди до шага Т7. Что произойдет, если установить Г +- 01.1ИК [Р) в конце шага Т5, а не на шаге Т7? ь 20. ]34] Р, К и таблица 011ИК используются в алгоритме Т для организации очереди с узлами, в которых поле СООИТ уже стало равным нулю, но их отношения с наследниками еще не были удалены. Можно ли для этого вместо очереди использовать стек? Если можно, то сравните полученный алгоритм с алгоритмом Т.

21. [81] Сможет ли алгоритм Т правильно выполнять топологнческую сортировку при многократном повторении отношения У с 5 во входном потоке? Что произойдет, если входной поток будет содержать некоторое отношение в виде у -с у? 22. [ЯЯ] В программе Т предполагается, что на входной магнитной ленте содержится корректная информация, но в программе общего назначения всегда следует предусматривать тщательную проверку входного потока для обнаружения описок и попыток "самоуничтожении" программы. Например, если одно из входных отношений является отрицательным для некоторого к, программа Т может ошибочно изменить одну из своих команд во время записи в 1[кП Предложите такой способ изменения программы Т, который позволил бы избежать подобных сбоев.

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

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

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