Рекурсивные Алгоритмы Реферат

Рекурсивные Алгоритмы Реферат

Рекурсивные Алгоритмы Реферат 4,3/5 120reviews
Рекурсивные Алгоритмы РефератРекурсивные Алгоритмы Реферат

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

Жадные алгоритмы / Хабрахабр. Доброго времени суток, хабр! Сегодня я бы хотел рассказать про жадные алгоритмы. Есть много методов решения тех или иных задач: динамическое программирование, перебор. Не менее известными и довольно распространенными являются жадные алгоритмы. Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое?

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

Рекурсивные Алгоритмы Реферат

Использование жадного алгоритма довольно стандартное. Рассмотрим его на примере следующей задачи: Задача о расписании. Пусть программисту- фрилансеру Васе Пупкину дано n заданий.

Рекурсивные Алгоритмы Реферат

У каждого задания известен свой дедлайн, а также его стоимость(то есть если он не выполняет это задание, то он теряет столько- то денег). Вася настолько крут, что за один день может сделать одно задание. Выполнение задания можно начать с момента 0. Нужно максимизировать прибыль.

Классический пример применения жадины: Васе выгодно делать самые «дорогие задания», а наименее дорогие можно и не выполнять — тогда прибыль будет максимальна. Возникает вопрос: каким образом распределить задания? Будем перебирать задания в порядке убывания стоимости и заполнять расписание следующим образом: если для заказа есть еще хотя бы одно свободное место в расписании раньше его дедлайна, то поставим его на самое последнее из таких мест, в противном случае в срок мы его не можем выполнить, значит поставим в конец из свободных мест. Карта Улицы Бельц Электронная Версия тут.

Получается следующий код: //tasks - массив заданий. Arrays. sort(tasks); //сортируем по убыванию стоимости.

Tree. Set< Integer> time = new Tree. Set< Integer> (); for (int i = 1; i < = n; ++i) .

Рекурсивные Алгоритмы Реферат

К примеру, задача о рюкзаке: вор пробрался на склад, в котором хранятся три вещи весом 1. Вор максимум может унести 5. Нужно максимизировать прибыль вора. Если поступать здесь жадно и выбирать самую ценную вещь(то есть, 6 нанорублей за кг первой штуки, 5 нанорублей за кг второй и 4 нанорубля за кг третьей), то вор по- любому должен взять первую вещь, потом останется место для второй вещи, однако оптимальное решение составляет вторая и третья вещь. Вывод: если собрались что- то грабить, то берите с собой грузовик. Общих рецептов тут нет, но есть довольно мощный инструмент, с помощью которого в большинстве случаев можно определить, даст ли жадина оптимальное решение. Называется матроид.

Жизнь не матроид, жизнь — конечный автомат! При этом должны выполняться следующие условия: Множество I непусто. Даже если исходное множество X было пусто — X = . Это свойство является не совсем тривиальным, но чаще всего наиважшейшим из всех остальных.

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

Краткий осмотр (реферат):, Приведено описание объектно-ориентированного итерационно-рекурсивного алгоритма моделирования .

Курсовая работа. Сегодня я бы хотел рассказать про жадные алгоритмы. Читать курсовую работу online по теме 'Рекурсивные алгоритмы '. Раздел: Информатика, ВТ, телекоммуникации, Компьютеры, Программирование, .

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

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

Пусть у нас есть два множества успешно выполненных заданий A и B, при чем известно, что . Стандартно отсортируем задания в порядке увеличения дедлайна в обоих множествах. Возьмем задание из B, которого нет в A, и попробуем добавить его к множеству A. Это у нас получится, ведь если бы в А не было пробела, то данное задание должно было присутствовать. К чему это я? Вся прелесть матроидов заключается в теореме Радо- Эдмондса: если доказать, что объект является матроидом, то жадный алгоритм будет работать корректно и выдавать правильный результат. Сам по себе жадный алгоритм реализуется примерно вот так: //отсортируем по весу //вначале ответом будет пустое множествоfor to if then //если подходит //то включаем в множество. Список литературы.

Кстати, задачу о расписаниях можно решить и быстрее за O(n).

Рекурсивные Алгоритмы Реферат
© 2017