Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 199

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 199 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 1992019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Одним из решений является х = — 1, у = 0 и з = 1, но, помимо него, имеется бесконечное множество иных решений. и Первый шаг к решению задачи анализа зависимостей данных состоит в использовании для решения данных уравнений стандартного метода, такого как метод исключения Гаусса. Каждый раз при построении линейного уравнения применяется теорема 11.32 для выяснения, существует ли его решение в целых числах. Если решение существует, то оно используется для снижения количества переменных в неравенствах. Пример 11.34. Рассмотрим два уравнения: х — 2у+з = 0 Зх+2у+х = 5 Если взглянуть на каждое уравнение по отдельности, то они имеют решения.

В первом уравнении йс(1(1,— 2,1) = 1 является делителем О, а во втором ксй(3,2,1) = 1 является делителем 5. Но если использовать первое уравнение, вывести из него г = 2у — х и подставить во второе уравнение, то можно получить 2х + 4у = 5. Но это диофантово уравнение не имеет целочисленных решений, поскольку ясг1 (2, 4) = 2 не является делителем 5. и 11.6.4 Эвристики для решения задачи целочисленного линейного программирования Задача анализа зависимостей данных требует решения большого количества простых задач целочисленного линейного программирования.

Здесь мы рассмотрим некоторые методы работы с простыми неравенствами. 970 Глава 11. Оптимизация параллелизма и локальности Проверка независимых переменных Многие задачи целочисленного линейного программирования, возникающие при анализе зависимостей данных, состоят из неравенств с единственным неизвестным.

Такие задачи могут быть решены простой проверкой существования целых чисел между константными верхними и нижними границами. Пример 11.35. Рассмотрим вложенный цикл аког(1 = 0; 1 <= 10; 1++) аког(з = 0; з <= 10р з++) Е (з., > ] = Е [>+10, 1+11 3 1 Чтобы выяснить, имеется ли зависимость мехсду Я '(з',Я и Я '() + 10,1+ 1Ц, мы проверяем, существуют ли целые числа (, ), (' и ~', такие, что Проверка НОД, примененная к данным двум уравнениям, позволяет определить, что данные уравнения могут иметь целочисленные решения. Эти решения можно выразить как 1 = (ы ) = гз, 1~ = (з — 11, ул = 11 — 10 для произвольных (1 и 1з.

Подстановка переменных г1 и 1з в линейные неравенства дает 0< 11 <10 О< 1 <Ю 0 < 8з — 11 < 10 о<( — ю< ю Объединяя нижние границы из двух последних неравенств с верхними границами из первых двух, мы выводим ю<( <ю 11 < (з < 10 Поскольку нижняя граница гз оказывается больше верхней, можно сделать вывод, что целочисленного решения исходной системы не существует„а значит, нет и зависимостей данных.

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

При некоторых условиях можно безопасно заменить переменную константой; упрощенные неравенства имеют решение тогда и только тогда, когда решение имеют исходные неравенства. В частности, предположим, что каждая нижняя граница для с; имеет вид се < с1п2 для некоторого с; > О, при этом верхние границы для п; имеют вид г с; < се + с1с1 + + с1 1е; ~ + с,~1пь 1 + + с„п„, где с; неотрицательно.

Тогда можно заменить переменную и, ее наименьшим возможным целым значением. Если такой нижней границы нет, то мы просто заменяем гл на — со. Аналогично, если все ограничения, включающие со могут быть записаны в представленном выше виде, но с обратными направлениями неравенств, то мы можем заменить и; наибольшим возможным положительным целым числом нли оо, если верхней границы не существует. Этот шаг можно повторять, чтобы упростить неравенства, а в некоторых случаях даже получить решение. Пример 11.3б, Рассмотрим следующие неравенства: 1<оыо2<10 О< из <4 т2 ~ ~с1 < ез+4 Переменная о1 ограничена снизу переменной и2, а сверху — значением из + 4.

Однако с2 ограничена снизу константой 1, а пз ограничена сверху константой 4. Таким образом, заменяя в неравенствах п2 на 1, а сз на 4, мы получим систему 1<с1 <10 1 < п1 с1 <8 Она легко решается методом проверки независимых переменных. Проверка вычетов циклов Теперь рассмотрим ситуацию, когда переменная ограничена сверху и снизу другими переменными. В анализе зависимостей данных весьма распространены Глава 11. Оптимизация параллелизма н локальности ограничения вида о; < и + с, которые могут быть решены при помощи упрощенной проверки вычета цикла (1оор-гез1оце гевг) Шостака (Язоз1а(с).

Множество таких ограничений может быть представлено ориентированным графом, узлы которого помечены переменными. Для каждого ограничения тч < ту + с имеется ребро нз с, в сгэ помеченное с. Определим вес пути как сумму меток всех ребер, составляющих путь. Каждый путь в графе представляет собой комбинацию ограничений в системе, т.е.

если существует путь от и до о' с весом с, то можно заключить, что с < с'+ с. Наличие в графе цикла с весом с представляет ограничения о < о + с для каждого узла с в цикле. Если в графе можно найти цикл с отрицательным весом, это означает, что можно получить невозможное ограничение с < с. В таком случае мы заключаем, что система неразрешима, а значит, зависимостей данных нет. В проверку можно также включить ограничения вида с < о и с < с для переменной с и константы с. Мы вводим в систему неравенств новую фиктивную переменную со, которая добавляется к каждой константе, представляющей нижнюю или верхнюю границу. Конечно, переменная со должна иметь значение О, но поскольку нас интересуют только циклы, фактические значения переменных не имеют значения. Для константных границ мы заменяем о<снап<со+с, с < ц на оо < с — с.

Пример 11.37. Рассмотрим неравенства 1 < сы сг < 10 О< оз <4 сг < 2с1 < 2сз — 7 Константные верхняя и нижняя границы для с1 превращаются в со < с1 — 1 и с1 < со + 10; константные границы для иг и сз обрабатываются аналогично. Преобразуя последнее ограничение в с1 < оз — 4, мы получаем граф, показанный на рис. 11.21. Цикл с1 — оз — со — о1 имеет вес — 1, так что данная система неравенств решения не имеет. и Запоминание при выполнении Часто приходится неоднократно решать одни н те же задачи анализа зависимостей данных, поскольку простые шаблоны обращений часто повторяются в программе. Одним из важных методов ускорения обработки зависимостей данных является запоминание лри выполнении (шешо)га11оп).

При использовании этого 973 11.6, Анализ зависимости данных в массивах Рнс. 11.21. Граф ограничений из примера 11.37 метода результаты решения задачи вносятся в специальную таблицу, и при решении новой задачи сначала выполняется поиск в таблице готового решения. Решение "с нуля*' выполняется только в том случае, если такого решения еще нет в таблице. 11.6.5 Решение обобщенной задачи целочисленного линейного программирования В этом разделе мы опишем общий подход к решению задачи целочисленного линейного программирования.

Задача является ХР-полной; наш алгоритм использует метод ветвей и границ, который в худшем случае может потребовать экспоненциального времени работы, Однако ситуация, когда эвристики из раздела 1!.6.4 не в состоянии справиться с задачей, возникает достаточно редко, и даже когда мы вынуждены прибегнуть к описываемому здесь алгоритму, он редко требует выполнения шага ветвей и границ.

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

Если же нам это не удается, то мы разбиваем многогранник, ограниченный неравенствами, на два меньших и решаем задачу рекурсивно. Пример 11.38. Рассмотрим следующий простой цикл: аког(х = 1; х < 101 х++) Е[х] = Е[з.+10]1 Обращение Я [г] работает с элементами Я [1],..., У [9], а обращение Я [г + 10]— с элементами Л [П],...,У, [19]. Эти диапазоны не перекрываются, а следова- 974 Глава 11.

Оптимизация параллелизма и локальности тельно, зависимостей данных нет. Более формально мы должны показать, что не существует двух динамических обращений ! и Г, таких, что 1 < ! < 9, 1 < г' < 9 и ! = г' + 10. Если бы такие целые числа ! и г' существовали, то мы могли бы подставиты'+ 10 вместо ! и получить ограничения на г'. 1 < Г < 9 и 1 < Г + + 10 < 9. Однако из г'+ 10 < 9 вьпекает Г < — 1, что противоречит ограничению 1 < Г.

Таким образом, искомых целых чисел ! и г' не существует. П Алгоритм 11.39 описывает, как определить, может ли быть найдено целочисленное решение множества линейных неравенств на основе алгоритма исключения Фурье-Моцкина. Алгоритм 11.39. Решение задачи целочисленного линейного программирования методом ветвей и границ ВХОД: выпуклый многогранник Я„над переменными пг,..., е„. Выход: "да", если Я„имеет целочисленное решение; "нет*' в противном случае. Мптод; выполнить алгоритм, представленный на рис.

11.22. и 1) Применить к Я„алгоритм 11.11 для переменных е„, с„ы..., сг в указанном порядке 2) Пусть Я; — многогранник, полученный после исключения и;~~ для!=и — 1,п — 2,...,0; 3) !!' оо = гл ге!пгп "нет"; !* Рационального решения не существует, если Яо (включающее только константы) содержит неудовлетворимые ограничения *! 4) Гог(г = 1; г < и; !++) ! 5) !!' !о, не включает целое значение) Ьгеа!с; 6) Выбираем сч целое значение в средине диапазона и, в К; 7) ИЗМЕНЯЕМ Ям ЗаМЕНЯЯ Пг На С,; 8) 9) !Г (! == п + 1) ге!пгп "да"; 10) !Г (! == 1) ге!игл "нет"; 11) Пусть нижняя и верхняя границы е; в Я; представляют собой 1, и и, соответственно; 12) Рекурсивно применяем данный алгоритм к 5„1.1 (и, < ~Ц) и к Я„1.! 1п, > ~и,~ ); 13) !!' (любой из вызовов алгоритмов вернул "да") гегцгп "да*' е!ве ге!пгп "нет"; Рис.

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

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

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