У каждого жадного алгоритма есть структура матроида?

13

Хорошо известно , что для каждого матроидов и любой весовой функции , то выходит в алгоритм , которая возвращает максимальный вес основы . Итак, верно ли обратное направление? То есть, если есть какой-то жадный алгоритм, то должна быть и некоторая структура матроида.MwGreedyBasis(M,w)M

Ян Йоханнсен
источник
Алгоритм Дейкстры часто считают жадным алгоритмом (например, см. Раздел 4.4 «Разработка алгоритма» Клейнберга и Тардоса). Я не знаю матроидной интерпретации кратчайших путей из одного источника.
Нил Янг
Разделение набора действительных интервалов на минимальное количество попарно непересекающихся подмножеств имеет естественный жадный алгоритм (перечисляйте интервалы по времени начала, для каждого добавьте его в существующее подмножество, если это возможно, иначе начните новое подмножество; см. Главу 4 Клейнберга и Tardos). Можно ли понять эту проблему как матроид?
Нил Янг

Ответы:

12

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

Ментальной моделью для некоторых из них может быть нахождение минимальных остовных деревьев. Структура, используемая алгоритмом Крускала, является матроидом, но используемой алгоритмом Прима (для которого требуется начальный узел) - нет. (Это, однако, жадность - и вложение матроида.)

Helman et al. (1993) в своей статье «Точная характеристика жадных структур» определяют свое понятие жадного алгоритма в терминах систем множеств, который является тем же формализмом, который используется для матроидов и жадных тел. Система множеств состоит из множества и набора подмножеств , так называемых выполнимых множеств . Основой для множества системы является максимальным допустимым множеством, то есть множество, возможно , но не содержатся ни в каком другом допустимом множестве. Целевая функция связывает каждый подмножество со значением. S C S f : 2 SR S(S,C)SCS f:2SRSЗадача оптимизации в этом формализме состоит в нахождении основы максимальной объективной ценности для заданной системы множеств и целевой функции.

Жадный алгоритм, определенный в терминах этого формализма, довольно прост: вы начинаете с пустого набора и последовательно добавляете один элемент, пока не достигнете основы, всегда гарантируя, что (i) ваш набор выполним на каждом этапе, и ( ii) добавляемый вами элемент максимизирует целевую функцию результирующего результата, относительно. все альтернативные элементы, которые вы могли бы добавить. (То есть, концептуально вы пытаетесь добавить все возможные альтернативы и выбираете ту, которая дает наибольшую объективную ценность.)

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

Что Helman et al. сделать то, что они описывают, когда этот алгоритм будет работать. Более конкретно:

  1. Они показывают, что для линейных целевых функций (где целевое значение является суммой весов элементов), жадный алгоритм будет работать именно на структуре, которую они определяют как вложение матроида;

  2. Они дают аналогичную характеристику для так называемых целей узкого места (где объективное значение набора равно минимуму по весам отдельных элементов); и

  3. Они дают точную характеристику того, какие целевые функции (помимо линейных) оптимизируются жадным алгоритмом на вложениях матроидов.

Магнус Ли Хетланд
источник
3
Можете ли вы объяснить, как они определяют жадный алгоритм?
Каве
1
Расширенный мой ответ, чтобы объяснить, каков их формализм.
Магнус Ли Хетланд
11

Жадный алгоритм не является формально определенным понятием. Существуют различные модели, пытающиеся уловить это интуитивное понятие, но нет единого мнения о том, что такое жадный алгоритм. Если вы не укажете формальное определение того, что вы подразумеваете под жадным алгоритмом, на вопрос нельзя ответить «да» или «нет».

Существует обобщение матроидов, называемых жадными, которое вдохновлено жадными алгоритмами, на которые вы, возможно, захотите взглянуть.

Кава
источник
Формальное определение не требуется, если мы согласны с некоторым свойством класса жадных алгоритмов. Если, например, мы согласились, что каждый жадный алгоритм имеет (формально определенное) свойство P, и мы показали, что каждый алгоритм, который удовлетворяет P, может быть определен на матроиде, это дало бы положительный ответ на вопрос OP. Точно так же, если мы согласились, что определенный алгоритм является жадным, и мы показали, что он не может быть жадным алгоритмом матроида, это дало бы отрицательный ответ.
Отдельный лакониан
2

Рассмотрим следующие проблемы: ЦЕПЬ МОНЕТЫ ЕВРО: Учитывая бесконечное количество банкнот в 1,2,5,10 евро, заплатите X евро, используя как можно меньше банкнот. Это может быть решено с помощью жадного алгоритма, который принимает максимально возможное внимание. Но в этой задаче нет структуры матроида.

ПОКРЫТИЕ ОТВЕРСТИЯ: В позициях x_1, x_2, ..., x_n имеются отверстия. У вас есть патч длиной 10 см. Заполните отверстия, используя как можно меньше заплат. Опять же, это может быть решено жадным способом (просто установите патч как можно точнее), но структуры матроида нет.

usamec
источник
спасибо, у меня были подозрения, но я не был уверен. Так что в конце концов мы должны искать жадный алгоритм, даже если структура матроида не существует.
1
@ user3373748 Я обычно просто ищу динамическую программу. Жадный вырожденный DP.
1
(Не разборчиво, но нет примечаний в 1 или 2 евро; вы можете изменить свой набор значений на {5, 10, 20, 50, 100, 200} или перефразировать ;-))
Энтони Лабарре
Обратите внимание, что описанный алгоритм замены монет работает для {1,2,5,10}, но может не вычислять оптимальные результаты для других значений. Пример: при {1,3,4} оптимальное решение для 6 будет [3,3], но алгоритм вернет [4,1,1].
Socowi
1
Существует структура матроида для задачи по обмену
монет