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

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

Файл №1162189 Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)) 100 страницаТ. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189) страница 1002019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

460 Части ГК усовершенствованные методы разработки и аназиза Сравнение жадных алгоритмов и динамического программирования Поскольку свойство оптимальной подструктуры применяется и в жадных алгоритмах, и в стратегии динамического программирования, может возникнуть соблазн разработать решение в стиле динамического программирования для задачи, в которой достаточно применить жадное решение. Не исключена также возможность ошибочного вывода о применимости жадного решения в той ситуации, когда необходимо решать задачу методом динамического программирования.

Чтобы проиллюстрировать тонкие различия между этими двумя методами, рассмотрим две разновидности классической задачи оптимизации. Дискретная задача о рюкзаке (0-1 )спарзас1г ргоЫеш) формулируется следующим образом. Вор во время ограбления магазина обнаружил и предметов. Предмет под номером з имеет стоимость гь и вес и,, где н оы и зо, — целые числа. Нужно унести вещи, суммарная стоимость которых была бы как можно большей, однако грузоподъемность рюкзака ограничена и равна Иг, где Из — целая величина.

Какие предметы следует взять с собой? (Предмет не может быть разделен на части или взят более одного раза.) Ситуация в контннуаньной задаче о рюкзаке (Ггасг(опа! )гпарзаск ргоЫеш) та же, но теперь тот илн иной товар вор может брать с собой частично, а не делать каждый раз бинарный выбор — брать или не брать (О-1). В дискретной задаче о рюкзаке в роли предметов могут выступать, например, слитки золота, а для контннуальной задачи лучше подходят такие товары, как золотой песок.

В обеих разновидностях задачи о рюкзаке проявляется свойство оптимальной подструктуры. Рассмотрим в дискретной задаче наиболее ценную загрузку, вес которой не превышает И'. Если вынуть из рюкзака предмет под номером у, то остальные предметы должны быть наиболее ценными; при этом их вес не должен превышать И' — ю и их можно составить из и — 1 исходных предметов, из множества которых исключен предмет под номером у. Для аналогичной континуальной задачи можно привести такие же рассуждения. Если удалить из оптимально загруженного рюкзака часть товара с индексом Г, которая весит ш, остальное содержимое рюкзака будет наиболее ценным и состоящим из и — 1 исходных товаров, вес которых не превышает величину Из — ш плюс и — ш кг товара с индексом з) Несмотря на сходство сформулированных выше задач, континуальная задача о рюкзаке допускает решение на основе жадной стратегии, а дискретная — не допускает.

Чтобы решить континуальную задачу, вычислим сначала стоимость единицы веса и,/ш, каждого товара. Придерживаясь жадной стратегии, вор сначала загружает как можно больше товара с максимальной удельной стоимостью (стоимостью единицы веса). Если запас этого товара исчерпается, а грузоподъемность рюкзака — нет, он загружает как можно больше товара, удельная стоимость которого будет второй по величине. Так продолжается до тех пор, пока вес товара не достигает допустимого максимума.

Таким образом, вместе со временем сортировки товаров по нх удельной стоимости время работы алгоритма равно 0(п !яп). Доказательство того, что контннуальная задача о рюкзаке обладает свойством жадного выбора, предлагается провести в упражнении 16.2.1. Глава /6. Жадные аггоряя)иы бб/ $80 $120 П)няат З Прсягяг 2 )$6 $60 $!00 $!20 рьяны (а) $120 = $220 (б) (я) Рнс. 1(ьз. Контрпример, покатываюший, что жаднаа стратег)ш не работает в дискретной залаче о рюкзаке.

(в) Вор должен выбрать подмножество трех предметов, вес жпорых не должн превмшать 50 кг. (б) Оптимальное подмявкестяо включает предметы 2 и 3. Любое решение с предметом 1 не является оптимальным, несмотря на наивысшую удельную стоимость первого предмета. (в) В случае континуальной задачи о рюкзаке выбор товаров с наивысшей удельной стоимостью привози к оптимальному решению. Чтобы убедиться, что подобная жадная стратегия не работает в дискретной задаче о рюкзаке, рассмотрим пример, проиллюстрированный на рис.16.2,(а). Имеется 3 предмета и рюкзак, способный выдержать 50 кг. Первый предмет весит 10 кг и стоит 60 долларов. Второй предмет весит 20 кг и стоит 100 долларов.

Третий предмет весит 30 кг и стоит 120 долларов. Таким образом, один килограмм первого предмета стоит б долларов, что превышает аналогичную величину для второго (5 долларов/кг) н третьего (4 доллара/кг) предметов. Поэтому жадная стратегия должна состоять в том, чтобы сначала взять первый предмет. Однако, как видно из рис. 16.2, (б), оптимальное решение — взять второй и третий предметы, а первый — оставить. Оба возможных решения, включающих в себя первый предмет, не являются оптимальными. Однако для аналогичной континуальной задачи жадная стратегия, при которой сначала за(ружается первый товар, позволяет получить оптимальное решение, что продемонстрировано на рис. 16.2, (в). Если же сначала загрузить первый предмет в дискретной задаче, то невозможно будет загрузить рюкзак до отказа и оставшееся пустое место принедет к снижению эффективной стоимости единицы веса при такой загрузке.

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

И в самом деле, целочисленную задачу о рюкзаке можно решить с помощью динамичесюго программирования (см. упр. 16.2.2). 4б1 Часть ГК Ушвершенствованные методы разработки и аназиза Упражнении 1621 Докажите, что континуальная задача о рюкзаке обладает свойством жадного выбора. и.г.г Разработайте решение дискретной задачи о рюкзаке с помощью динамического программирования. Время работы вашего алгоритма должно быть равно 0(зз И'), где зз — количество предметов, а И' — максимальный вес предметов, которые вор может положить в свой рюкзак. и.г.з Предположим, что в дискретной задаче о рюкзаке порядок сортировки по увеличению веса совпадает с порядком сортировки по уменьшению стоимости. Сформулируйте эффективный алгоритм для поиска оптимального решения этой разновидности задачи о рюкзаке и обоснуйте его корректность.

16.2.4 Профессор едет из Киева в Москву на автомобиле. У него есть карта, на которой обозначены все заправки и указаны расстояния между ними. Известно, что если топливный бак заполнен, то автомобиль может проехать и километров (дорога достаточно ровная, так что расход топлива везде одинаков). Профессору хочется как можно реже останавливаться на заправках. Сформулируйте эффективный метод, позволяющий профессору определить, на каких заправках следует заливать топливо, чтобы количество остановок было минимальным. Докажите, что разработанная стратегия дает оптимальное решение, и определите время работы вашего алгоритма.

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

и.г. у Предположим, что имеется два множества, А и В, каждое из которых состоит из п положительных целых чисел. Порядок элементов каждого множества можно менять произвольным образом. Пусть а, — зчй элемент множества А, а 6, — зтй элемент множества В после переупорядочения. Рассмотрим величину П,", а,ь*. Сформулируйте алгоритм, который бы максимизировал эту величину. Докажите, что ваш алгоритм действительно максимизирует указанную величину, и определите время его работы. гбу !яаеа !б.

Жадные азгараньны 16.3. Коды Хаффмаиа Коды Хаффмана (Ни(ушап седея) — очень эффективный метод сжатия данных, который, в зависимости от характеристик этих данных, обычно позволяет сэкономить от 20 до 90;4 объема. Мы рассматриваем данные, представляющие собой последовательность символов. В жадном алгоритме Хаффмана используется таблица, содержащая частоты появления тех или иных символов. С помощью этой таблицы определяется оптимальное представление каждого символа в виде бинарной строки. Предположим, что имеется файл данных, состоящий из 100 тысяч символов, который требуется сжать.

Символы в этом файле встречаются с частотой, представленной на рис. 16.3. Таким образом, всего файл содержит шесть различных символов, а, например, символ а встречается в нем 45 тысяч раз. а Ь с 6 е Е Частота, тысяч 45 13 12 16 9 5 Кодовое слово фиксированной длины 000 001 010 011 100 101 Кодовое слово переменной длины 0 101 100 111 1101 1100 Рис. 1б.З. Задача о кодировании последовательности символов. Файл данных содержит толью символы а-Г с указанными частотами. Если назначить каждому символу трюбитовое юдовое слово, файл можно закодировать с помощью 300 тысяч битов. При использовании показаниям кодовых слов переменной двины файл кодируется толью 224 тысячами битов. Существует множество способов представить подобный файл данных.

Рассмотрим задачу по разработке бинарного символьного кода (Ьшагу с)загас1ег соде; или для краткости — просто «од), в котором каждый символ представляется уникальной бинарной строкой. Если используется код фиксированной длнны, нли равномерный код (11хеб-1епяйз соде), в котором каждый символ представлен уникальной бинарной строкой, то для представления шести символов понадобится три бита: а = 000, Ь = 001, ..., У = 101. При использовании такого метода для кодирования всего файла понадобится 300 тысяч битов. Можно ли добиться лучших результатов? С помощью кода переменной длнны, или иеравнаыериого иода (уапаЫе-! епйГ)з соде), удается получить значительно лучшие результаты, чем с помощью кода фиксированной длины.

Это достигается за счет того, что часто встречающимся символам сопоставляются короткие кодовые слова, а редко встречающимся — длинные. Такой код представлен на рис. 16.3. В нем символ а представлен 1-битовой строкой О, а символ 6 — 4-битовой строкой 1100. Для представления файла с помощью этого кода потребуется (45 1+ 13 3+ 12 3+ 16 3+ 9 4+ 5 4) 1000=224000битов. Благодаря этому экономится 25о4 объема. Кстати, как мы вскоре убедимся, для рассматриваемого файла это оптимальная кодировка символов. Часть з'У. Усовершенствованные методы разработки и анавиза Префиксные коды Здесь мы рассматриваем только те коды, в которых никакое кодовое слово не является префиксом какого-то другого кодового слова.

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

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

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