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

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

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

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

Как показано в разделе 9.1, если каждая операция сравнения выполняется в течение времени О (1), то выбор минимального из и значений занимает время 0 (и). Таким образом, обход по Джарвису длится в течение времени 0 (пй). УПРажНЕНИЯ 33.3-1. Докажите, что в процедуре ОкАнлм Бслн точки р1 и р должны быть вершинами СН Я). 33.3-2. Рассмотрим модель вычислений, которая поддерживает сложение, сравнение и умножение и в которой существует нижняя граница времени сортировки и чисел, равная й (п1яп).

Докажите, что в такой модели й (и! ли) — нижняя граница времени вычисления вершин выпуклой оболочки множества и точек в порядке их обхода. 33.3-3. Докажите, что в заданном множестве точек Я две самые удаленные друг от друга точки должны быть вершинами СН (Я).

33.3-4. Для заданного многоугольника Р и точки д на его границе тенью (злаботч) точки д называется множество точек г, для которых отрезок 9г полностью находится на границе или во внутренней области многоугольника Р. Многоугольник Р называется звездоодразиым (зшг-зларед), если в его внутренней области существует точка р, которая находится в тени любой точки, лежащей на границе этого многоугольника. Множество всех таких точек называется ядром (кегле1) многоугольника Р. На рис.

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

Выделенная серым цветом левая область является тенью точки 9, а выделенная правая область — тенью точки д'. Поскольку эти области не перекрываются, ядро является пустым. Пусть звездообразный и-угольник Р задан своими вершинами, перечисленными в порядке обхода против часовой стрелки.

Покажите, как построить СН (Р) за время 0 (и). Часть ЧП. Избранные темы 1074 6) а) Рис. 33.10. Определение звездообразного многоугольника, о котором идет речь в упражнении 33.3-4 33.3-5. В олератаеной задаче о выпуклой оболочке (оп-1ше сопчех-Ьп!1 ргоЬ1еш) параметры каждой из и точек из заданного множества Я становятся известны по одной точке за раз.

После получения сведений об очередной точке строится выпуклая оболочка тех точек, о которых стало известно к настоящему времени. Очевидно, можно было бы применять сканирование по Грэхему к каждой из точек, затратив при этом полное время, равное 0 (пз 1кп). Покажите, как решить оперативную задачу о выпуклой оболочке за время О (тР).

* 33.3-6. Покажите, как реализовать инкрементный метод построения выпуклой оболочки таким образом, чтобы время его работы было равно 0 (и 1я и). 33.4 Поиск пары ближайших точек Теперь рассмотрим задачу о поиске в множестве Я, состоящем из и > 2 точек, пары ближайших друг к другу точек. Термин "ближайший" относится к обычному евклидову расстоянию: расстояние между точками р) = (х), у)) и рз = (хз, уз) равно . Две точки в множестве Я могут совпадать; в этом случае расстояние между ними равно нулю. Эта задача находит применение, например, в системах управления транспортом. В системе управления воздушным или морским транспортом может понадобиться узнать, какие из двух транспортных средств находятся друг к другу ближе всего, чтобы предотвратить возможное столкновение между ними.

В алгоритме, который работает "в лоб", просто перебираются все (~) = О (пз) пар точек. В данном разделе описывается решение этой задачи с помощью алгоритма разбиения. Время решения этим методом определяется знакомым рекуррентным соотношением Т(т)) = 2Т(п/2) + О (и). Таким образом, время работы этого алгоритма равно 0 (и 1я и).

Глава 33. Вычислительная геометрия 1075 Алгоритм декомпозиции В каждом рекурсивном вызове описываемого алгоритма в качестве входных данных используется подмножество Р Я~ и массивы Х и У, в каждом из которых содержатся все точки входного подмножества Р. Точки в массиве Х отсортированы в порядке монотонного возрастания их координаты х. Аналогично;,массив У отсортирован в порядке монотонного возрастания координаты у. Заметим, что достигнуть границы 0 (и!ли) не удастся, если сортировка будет производиться в каждом рекурсивном вызове; если бы мы поступали таким образом, то время работы такого метода определялось бы рекуррентным соотношением Т(п) = = 2Т (и/2) + 0 (и 1к и), решение которого равно Т (и) = 0 (и 1бз п).

(Это можно показать с помощью версии основного метода, описанной в упражнении 4.4-2.) Немного позже станет понятно, как с помощью "предварительной сортировки" поддерживать отсортированность, не прибегая к процедуре сортировке в каждом рекурсивном вызове. В рекурсивном вызове со входными данными Р, Х и У сначала проверяется, выполняется ли условие ~Р~ < 3. Если оно справедливо, то в вызове просто применяется упомянутый выше метод решения "в лоб": сравниваются между собой все (~ з ~) пар точек, и возвращается пара точек, расположенных друг к другу ближе других. Если ~Р~ > 3, то производится рекурсивный вызов в соответствии с описанной ниже парадигмой "разделяй и властвуй".

Разделение. Находится вертикальная прямая 1, которая делит множество точек Р на два множества Рл и Рн, таких что ~Рт,Я = ЦР)/21, ~Рн~ = ЦР(/21', все точки множества Рл находятся слева от прямой 1 или на этой прямой, а все точки множества Ри находятся справа от прямой 1 или на этой прямой. Массив Х разбивается на массивы Хг. и Хи, содержащие точки множеств Рл и Рн соответственно, отсортированные в порядке монотонного возрастания координаты х. Аналогично, массив У разбивается на массивы Ул и Уи, содержащие соответственно точки множеств Рд и Ри, отсортированные в порядке монотонного возрастания координаты у.

Покорение. После разбиения множества Р на подмножества Рл и Рн производится два рекурсивных вызова: один для поиска пары ближайших точек в множестве Рл, а другой для поиска пары ближайших точек в множестве Рд. В качестве входных данных в первом вызове выступает подмножество Р~, и массивы Хг. и Уь1 во втором вызове на вход подается множество Рн, а также массивы Хи и Уд. Обозначим расстояния между ближайшими точками в множествах Рл и Ри через бь и дл соответственно; введем также обозначение б = ппп (бг„бн). Комбинирование. Ближайшая пара либо находится друг от друга на расстоянии б, найденном в одном из рекуррентных вызовов, либо образована точками, одна из которых принадлежит множеству Рг., а вторая — множеству Часть и'11.

Избранные темы 1076 ,-е. Рд )7 ° , '! е Р, к — — а --е+е-- о ---е) в 1 '..Рте ' е е ), Совпадающие точкиоаиав Р, одна в Р„ Совпаааюшие точкиоднав Р, одна в Рд а) б) Рд. В алгоритме определяется, существует ли пара таких точек, расстояние между которыми меньше б. Заметим, что если существует такая "пограничнаяе пара точек, расстояние между которыми меньше Б, то обе они не могут находиться дальше от прямой 1, чем на расстоянии б. Таким образом, как видно из рис.

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

Как и в массиве У, в массиве У' точки отсортированы в порядке возрастания координаты у. 2. Для каждой точки р из массива У' алгоритм пытается найти в этом же массиве точки, которые находятся в б-окрестности от точки р. Как мы вскоре увидим, достаточно рассмотреть лишь 7 точек, расположенных в массиве У' после точки р.

В алгоритме вычисляется расстояние от точки р до каждой из этих семи точек, и отслеживается, какое из расстояний от между всеми парами точек в массиве У' является наименьшим. 3. Если выполняется неравенство бт < б, то в вертикальной полосе действительно содержится пара точек, которые находятся друг от друга ближе, чем те, что были найдены в результате рекурсивных вызовов.

В этом случае возвращается эта пара точек и соответствующее ей расстояние й. В противном случае возвращается пара ближайших точек Рис. 33.11. Основные концепции, которые используются при доказательстве достаточно- сти проверки 7 точек массива У' при поиске пары ближайших точек Глава 33. Вычислительная геометрия 1077 и расстояние между ними б, найденное в результате рекурсивных вызовов. В приведенном выше описании опущены некоторые детали реализации, необходимые для сокращения времени работы до величины О (и 1я и).

После доказательства корректности алгоритма будет показано, как реализовать этот алгоритм так, чтобы достичь желаемой границы для времени работы. Корректность Корректность этого алгоритма, предназначенного для поиска пары ближайших точек, очевидна, за исключением двух аспектов. Во-первых, мы уверены, что в результате рекурсивного спуска до случая, когда ~Р~ < 3, никогда не придется решать вспомогательную задачу, в которой задана только одна точка. Второй аспект заключается в том, что понадобится проверить всего 7 точек, расположенных в массиве У' ниже каждой точки р; далее будет приведено доказательство этого свойства.

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

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

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

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