На самом деле, полное и общее описание проблемы, которая может быть решена с помощью жадного алгоритма, представляет собой вложение матроида , которое обобщает как понятие матроида, так и понятие жадности . Ответ отрицательный: проблема, решаемая жадным алгоритмом, не обязательно должна иметь структуру матроида, но она будет иметь структуру вложения матроида (что, увы, намного сложнее).
Ментальной моделью для некоторых из них может быть нахождение минимальных остовных деревьев. Структура, используемая алгоритмом Крускала, является матроидом, но используемой алгоритмом Прима (для которого требуется начальный узел) - нет. (Это, однако, жадность - и вложение матроида.)
Helman et al. (1993) в своей статье «Точная характеристика жадных структур» определяют свое понятие жадного алгоритма в терминах систем множеств, который является тем же формализмом, который используется для матроидов и жадных тел. Система множеств состоит из множества и набора подмножеств , так называемых выполнимых множеств . Основой для множества системы является максимальным допустимым множеством, то есть множество, возможно , но не содержатся ни в каком другом допустимом множестве. Целевая функция связывает каждый подмножество со значением. S C S f : 2 S → R S(S,C)SCS f:2S→RSЗадача оптимизации в этом формализме состоит в нахождении основы максимальной объективной ценности для заданной системы множеств и целевой функции.
Жадный алгоритм, определенный в терминах этого формализма, довольно прост: вы начинаете с пустого набора и последовательно добавляете один элемент, пока не достигнете основы, всегда гарантируя, что (i) ваш набор выполним на каждом этапе, и ( ii) добавляемый вами элемент максимизирует целевую функцию результирующего результата, относительно. все альтернативные элементы, которые вы могли бы добавить. (То есть, концептуально вы пытаетесь добавить все возможные альтернативы и выбираете ту, которая дает наибольшую объективную ценность.)
Можно, пожалуй, утверждать , что могут существовать и другие формы жадного алгоритма, но есть несколько учебников по алгоритмам и комбинаторной оптимизации , которые описывают эту системе множеств алгоритма , основанный как на жадном алгоритме. Это не мешает вам описать что-то, что не подходит, но все же можно назвать жадным, я полагаю. (Тем не менее, это действительно относится ко всему, что потенциально может иметь структуру матроида, хотя это гораздо более общее понятие.)
Что Helman et al. сделать то, что они описывают, когда этот алгоритм будет работать. Более конкретно:
Они показывают, что для линейных целевых функций (где целевое значение является суммой весов элементов), жадный алгоритм будет работать именно на структуре, которую они определяют как вложение матроида;
Они дают аналогичную характеристику для так называемых целей узкого места (где объективное значение набора равно минимуму по весам отдельных элементов); и
Они дают точную характеристику того, какие целевые функции (помимо линейных) оптимизируются жадным алгоритмом на вложениях матроидов.