Хорошо известно , что для каждого матроидов и любой весовой функции , то выходит в алгоритм , которая возвращает максимальный вес основы . Итак, верно ли обратное направление? То есть, если есть какой-то жадный алгоритм, то должна быть и некоторая структура матроида.
ds.algorithms
greedy-algorithms
Ян Йоханнсен
источник
источник
Ответы:
На самом деле, полное и общее описание проблемы, которая может быть решена с помощью жадного алгоритма, представляет собой вложение матроида , которое обобщает как понятие матроида, так и понятие жадности . Ответ отрицательный: проблема, решаемая жадным алгоритмом, не обязательно должна иметь структуру матроида, но она будет иметь структуру вложения матроида (что, увы, намного сложнее).
Ментальной моделью для некоторых из них может быть нахождение минимальных остовных деревьев. Структура, используемая алгоритмом Крускала, является матроидом, но используемой алгоритмом Прима (для которого требуется начальный узел) - нет. (Это, однако, жадность - и вложение матроида.)
Helman et al. (1993) в своей статье «Точная характеристика жадных структур» определяют свое понятие жадного алгоритма в терминах систем множеств, который является тем же формализмом, который используется для матроидов и жадных тел. Система множеств состоит из множества и набора подмножеств , так называемых выполнимых множеств . Основой для множества системы является максимальным допустимым множеством, то есть множество, возможно , но не содержатся ни в каком другом допустимом множестве. Целевая функция связывает каждый подмножество со значением. S C S f : 2 S → R S(S,C) S C S f:2S→R S Задача оптимизации в этом формализме состоит в нахождении основы максимальной объективной ценности для заданной системы множеств и целевой функции.
Жадный алгоритм, определенный в терминах этого формализма, довольно прост: вы начинаете с пустого набора и последовательно добавляете один элемент, пока не достигнете основы, всегда гарантируя, что (i) ваш набор выполним на каждом этапе, и ( ii) добавляемый вами элемент максимизирует целевую функцию результирующего результата, относительно. все альтернативные элементы, которые вы могли бы добавить. (То есть, концептуально вы пытаетесь добавить все возможные альтернативы и выбираете ту, которая дает наибольшую объективную ценность.)
Можно, пожалуй, утверждать , что могут существовать и другие формы жадного алгоритма, но есть несколько учебников по алгоритмам и комбинаторной оптимизации , которые описывают эту системе множеств алгоритма , основанный как на жадном алгоритме. Это не мешает вам описать что-то, что не подходит, но все же можно назвать жадным, я полагаю. (Тем не менее, это действительно относится ко всему, что потенциально может иметь структуру матроида, хотя это гораздо более общее понятие.)
Что Helman et al. сделать то, что они описывают, когда этот алгоритм будет работать. Более конкретно:
Они показывают, что для линейных целевых функций (где целевое значение является суммой весов элементов), жадный алгоритм будет работать именно на структуре, которую они определяют как вложение матроида;
Они дают аналогичную характеристику для так называемых целей узкого места (где объективное значение набора равно минимуму по весам отдельных элементов); и
Они дают точную характеристику того, какие целевые функции (помимо линейных) оптимизируются жадным алгоритмом на вложениях матроидов.
источник
Жадный алгоритм не является формально определенным понятием. Существуют различные модели, пытающиеся уловить это интуитивное понятие, но нет единого мнения о том, что такое жадный алгоритм. Если вы не укажете формальное определение того, что вы подразумеваете под жадным алгоритмом, на вопрос нельзя ответить «да» или «нет».
Существует обобщение матроидов, называемых жадными, которое вдохновлено жадными алгоритмами, на которые вы, возможно, захотите взглянуть.
источник
Рассмотрим следующие проблемы: ЦЕПЬ МОНЕТЫ ЕВРО: Учитывая бесконечное количество банкнот в 1,2,5,10 евро, заплатите X евро, используя как можно меньше банкнот. Это может быть решено с помощью жадного алгоритма, который принимает максимально возможное внимание. Но в этой задаче нет структуры матроида.
ПОКРЫТИЕ ОТВЕРСТИЯ: В позициях x_1, x_2, ..., x_n имеются отверстия. У вас есть патч длиной 10 см. Заполните отверстия, используя как можно меньше заплат. Опять же, это может быть решено жадным способом (просто установите патч как можно точнее), но структуры матроида нет.
источник