Главная » Просмотр файлов » Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)

Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758), страница 227

Файл №1123758 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)) 227 страницаТ. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758) страница 2272019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Один из принимающих алгоритмов с полиномиальным временем работы проверяет, что объект С закодирован как неориентированный граф, убеждается, что и и о — его вершины, с помощью поиска в ширину находит в графе С кратчайший путь из вершины и к вершине о, а затем сравнивает количество ребер в полученном кратчайшем пути с числом «. Если в объекте С закодирован неориентированный граф, и путь из вершины и к вершине о содержит не более й ребер, алгоритм выводит значение 1 и останавливается.

В противном случае он работает бесконечно долго. Однако такой алгоритм не распознает язык РАТН, поскольку он не выводит явно значение 0 для экземпляров, длина кратчайшего пути в которых превышает 1с ребер. Предназначенный для задачи Рлтн алгоритм распознавания должен явно отвергать бинарные строки, не принадлежащие языку Рлтн.

Для такой задачи принятия решения, как задача Рлтн, подобный алгоритм распознавания разработать легко: вместо того чтобы работать бесконечно долго, если не существует пути из вершины и в вершину о, количество ребер в котором не превышает /с, этот алгоритм должен выводить значение 0 и останавливаться. Для других задач, таких как задача останова Тьюринга, принимающий алгоритм существует, а алгоритма распознавания не существует. Можно неформально определить класс сложности (сошр!ехйу с1аза) как множество языков, принадлежность к которому определяется мерой слоисности (сошр!ех!!у шеааше), такой как время работы алгоритма, определяющего, принад- Глава 34.

МР-полнота 1099 лежит ли данная строка я языку Ь. Фактическое определение класса сложности носит более технический характер. Интересующийся читатель найдет его в статье Хартманиса (Напгпашз) и Стирнса (Ягеагпз) (140~. Воспользовавшись описанным выше формализмом теории языков, можно дать альтернативное определение класса сложности Р: Р = (Ь С (О, 1)": существует алгоритм А, разрешающий язык ь за полиномиальное время). Фактически, Р также является классом языков, которые могут быть приняты за полиномиальное время. Теорема 34.2.

Р = (Ь: Ь принимается алгоритмом с полиномиальным временем работы) . Доказательство. Поскольку класс языков, которые распознаются алгоритмами с полиномиальным временем работы, — это подмножество класса языков, которые принимаются алгоритмами с полиномиальным временем работы, остается лишь показать, что если язык Ь принимается алгоритмом с полиномиальным временем работы, то он также распознается алгоритмом с полиномиальным временем работы. Пусть Ь вЂ” язык, который принимается некоторым алгоритмом с полиномиальным временем работы А. Воспользуемся классическим "модельным" аргументом, чтобы сконструировать другой алгоритм с полиномиальным временем работы А', который бы распознавал язык Ь.

Поскольку алгоритм А принимает язык Ь за время О (и"), где к — некоторая константа, существует такая константа с, что алгоритм А принимает язык Ь не более чем за Т = сп" шагов. Для любой входной строки х алгоритм А' моделирует действие алгоритма А за время Т. По истечении интервала Т алгоритм А' проверяет поведение алгоритма А. Если он принял строку х, то алгоритм А' также принимает эту строку, выводя значение 1. Если же алгоритм А не принял строку х, то алгоритм А' отвергает эту строку, выводя значение О. Накладные расходы алгоритма А', моделирующего алгоритм А„приводят к увеличению времени работы не более чем на полиномиальный множитель, поэтому А' — алгоритм с полиномиальным временем работы, распознающий язык Ь.

И Заметим, что доказательство теоремы 34.2 является неконструктивным. Для данного языка ЬеР граница для времени работы алгоритма А, который принимает язык Ь, на самом деле может быль неизвестна. Тем не менее, известно, что такая граница существует, поэтому существует алгоритм А', способный проверить эту границу, даже если не всегда удается легко найти такой алгоритм.

Часть ЧП. Избранные темы 1100 Упражнения 34.1-1. Определим задачу оптимизации Ьонаезт РАтн Ьенстн как отношение, связывающее каждый экземпляр задачи, состоящий из неориентированного графа и двух его вершин, с количеством ребер в самом длинном пути между этими двумя вершинами. Определим задачу принятия решения ЬОхбезт РАтн Ьенстн = ((С, и, о, к): С = (Ъ", Е) — неорнентированный граф, и, и Е 1", Й > 0 — целое число, существует пугь из вершины и в вершину о, состоящий не менее чем из к ребер). Покажите, что задачу оптимизации ЬОМОЕБТ РАТН ЬЕХОТН можно решить за полиномиальное время тогда и только тогда, когда Ьонпезт РАтн Ьенстн е Р.

34.1-2. Дайте формальное определение задачи поиска самого длинного простого цикла в неориентированном графе. Сформулируйте соответствующую задачу принятия решения. Опишите язык, соответствующий этой задаче принятия решения. 34.1-3. Разработайте формальное кодирование для ориентированного графа в виде бинарных строк для представления при помощи матриц смежности. Выполните то же самое для представления с использованием списка смежных вершин. Покажите, что эти два представления полиномиально связаны. 34.1-4. Является ли алгоритм динамического программирования для решения дискретной задачи о рюкзаке, который предлагалось разработать в задаче 16.2-2, алгоритмом с полиномиальным временем работы? Обоснуйте ваш ответ. 34.1-5. Покажите, что алгоритм, который содержит не больше некоторого постоянного количества вызовов процедуры с полиномиальным временем работы, сам работает полиномиальное время.

Если же алгоритм делает полиномиальное число вызовов такой процедуры, то общее время работы может быть экспоненциальным. 34.1-6. Покажите, что класс Р, который рассматривается как множество языков, замкнут относительно операций объединения, пересечения, конкатенации, дополнения и замыкания Клини. Другими словами, если Ьы Ьз Е Р, то Ь1 0 Ьз е Р и т.д. 34.2 Проверка за полиномиальное время Теперь рассмотрим алгоритм, "проверяющий" принадлежность языку. Например, предположим, что в данном экземпляре (С, и, о, Й) задачи принятия решения РАТН задан также путь р из вершины и в вершину щ Легко проверить, превышает ли длина пути р величину к.

Если она не превышает эту величину, путь Глава 34. МР-полнота 1101 р можно рассматривать как "сертификат" того, что данный экземпляр действительно принадлежит РАтн. Для задачи принятия решения Рлтн такой сертификат, по-видимому, не дает ощутимых преимуществ. В конце концов, эта задача принадлежит классу Р (фактически ее можно решить за линейное время), поэтому проверка принадлежности с помощью такого сертификата занимает столько же времени, сколько и решение задачи. А теперь исследуем задачу, для которой пока неизвестен алгоритм принятия решения с полиномиальным временем работы, но если имеется сертификат, то легко выполнить его проверку.

Гамильтоиовы циклы Задача поиска гамильтоновых циклов в неориентированном графе изучается уже более ста лет. Формально гамилътоигв цикл (папп1гоп1ап сус1е) неориентированного графа С = (У, Е) — это простой цикл, содержащий все вершины множества К Граф, содержащий гамильтонов цикл, называют гамильтоновым (Ьашй1оп1ап); в противном случае он является ивгвмильтоиовым (попЬашй1ошап). В книге Бонди (Вопс$у) и Мьюрти (МпгГу) 145) цитируется письмо Гамильтона (ЖК.

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

Додекаэдр является гамильтоновым графом, и один из гамильтоновых циклов показан на рис. 34.2а. Однако не все графы являются гамильтоновыми. Например, на рис. 34.2б показан двудольный граф Рис. 34.2. Примеры гамильтонового (а) и негамильтонового (б) графов Часть ч11. Избранные темы 1102 с нечетным количеством вершин.

В упражнении 34.2-2 предлагается доказать, что все такие графы негамильтоновы. Задачу о гамильтоновых циклах (лаш111ошап-сус1е ргоЫеш), в юторой нужно определить, содержит ли граф С гамильтонов цикл, можно определить как форма ьиый язык: НАм Сусли = ((С): С вЂ” гамильтонов граф) . Как алгоритм мог бы распознать язык НАм Сус1.в? Для заданного экземпляра задачи (С) можно предложить алгоритм принятия решения, который бы формировал список всех перестановок вершин графа С, а затем проверял бы каждую перестановку, не является ли она гамильтоновым путем.

Чему равнялось бы время работы такого алгоритма? При использовании "рационального" юдирования графа с использованием матриц смежности количество вершин т графа равно й (~/й), где п = !(С) ! — длина юда для графа С, Всего имеется т! возможных перестановок вершин, поэтому время работы алгоритма равно й (т!) = й (~/й1) = й (2~к), и оно не ведет себя в асимптотическом пределе как О (и") ни для какой юнстанты к. Таким образом, время работы подобного прямолинейного алгоритма не выражается полиномиальной функцией.

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

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

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