Что такое матроид: определение, примеры, жадный алгоритм

Матроид — это конечное множество EE вместе с семейством его подмножеств I\mathcal{I}, удовлетворяющим трём условиям:

(I1)∅∈I(I2)A∈I, B⊆A  ⟹  B∈I(I3)A,B∈I, ∣A∣<∣B∣  ⟹  ∃ e∈B∖A:A∪{e}∈I\begin{aligned} &\text{(I1)} && \emptyset \in \mathcal{I} \\ &\text{(I2)} && A \in \mathcal{I},\ B \subseteq A \implies B \in \mathcal{I} \\ &\text{(I3)} && A, B \in \mathcal{I},\ |A| < |B| \implies \exists\, e \in B \setminus A : A \cup \{e\} \in \mathcal{I} \end{aligned}

Множества из I\mathcal{I} называются независимыми.

Классический пример — линейно независимые векторы. Пустой набор векторов линейно независим; любое подмножество линейно независимого набора тоже линейно независимо; а если один независимый набор меньше другого, к нему можно добавить некоторый вектор из большего набора, не потеряв независимость.

Но слово «независимый» здесь не следует понимать слишком буквально. В общей теории матроидов это технический термин: мы сами задаём, какие подмножества считать независимыми, а затем проверяем три аксиомы выше. Никакой скрытой физической, причинной или статистической «зависимости» между элементами искать не требуется. Термин пришёл из линейной алгебры — одного из исходных примеров, из которых выросла теория.

Именно аксиома (I3), аксиома обмена, делает матроиды особенно интересными. Она утверждает: если есть два независимых множества разного размера, то меньшее всегда можно увеличить хотя бы одним элементом из большего, сохранив независимость.

Уитни ввёл матроиды в 1935 году, чтобы выделить общую структуру, скрывающуюся за линейной независимостью в матрицах и отсутствием циклов в графах. Даже название matroid исторически связано со словом matrix.

Главный практический результат оказывается неожиданно сильным: для матроидов простой жадный алгоритм не является эвристикой — при аддитивных неотрицательных весах он гарантированно находит оптимум.

Определение

Формально матроид — это пара M=(E,I)M = (E, \mathcal{I}), где EE — конечное множество, называемое носителем матроида, а I⊆2E\mathcal{I} \subseteq 2^E — семейство его независимых множеств.

Условия (I1)–(I3) называются аксиомами независимости.

Аксиома (I1) говорит, что пустое множество независимо.

Аксиома (I2) выражает наследственность: если некоторое множество независимо, то любое его подмножество также независимо.

Именно (I3) отличает матроид от произвольной наследственной системы: если независимое множество AA меньше независимого множества BB, в BB обязательно найдётся элемент, которым можно пополнить AA.

(I1) и (I2) выполняются почти в любой разумной задаче: не брать ничего — допустимо, а выбросить элемент из допустимого набора никогда не вредит. Поэтому на практике вся проверка сводится к (I3).

Из этих трёх аксиом возникает практически вся основная терминология теории матроидов.

Зависимое множество — подмножество носителя, которое не является независимым.

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

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

База — максимальное по включению независимое множество. Из аксиомы обмена следует, что все базы одного матроида имеют одинаковую мощность. Если бы существовали две базы AA и BB с ∣A∣<∣B∣|A| < |B|, аксиома (I3) позволила бы добавить к AA элемент из BB, а значит, AA не была бы максимальной.

Ранг r(A)r(A) множества A⊆EA \subseteq E — мощность наибольшего независимого подмножества, содержащегося в AA. В частности, r(E)r(E) называется рангом матроида и равен мощности любой его базы.

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

Двойственный матроид M∗M^* имеет тот же носитель EE, а его базами служат дополнения баз исходного матроида: B∗=E∖BB^* = E \setminus B. Поэтому r∗(E)=∣E∣−r(E)r^*(E) = |E| - r(E). Двойственный к графическому матроиду называется кографическим матроидом, или матроидом разрезов.

Прямая сумма M1⊕M2M_1 \oplus M_2 матроидов на непересекающихся носителях E1E_1 и E2E_2 устроена так: множество независимо тогда и только тогда, когда его часть в E1E_1 независима в M1M_1, а часть в E2E_2 — в M2M_2. Ранги при этом складываются: r(M1⊕M2)=r(M1)+r(M2)r(M_1 \oplus M_2) = r(M_1) + r(M_2).

Удаление элемента ee, обозначаемое M∖eM \setminus e (иначе — сужение на E∖{e}E \setminus \{e\}), просто оставляет независимые множества, не содержащие ee.

Стягивание элемента ee, обозначаемое M/eM / e, для элемента, не являющегося петлёй, задаётся так: множество A⊆E∖{e}A \subseteq E \setminus \{e\} независимо в M/eM / e, если A∪{e}A \cup \{e\} независимо в MM.

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

Два матроида называются изоморфными, если между их носителями существует взаимно однозначное соответствие, сохраняющее независимость.

Пример 1: графический матроид

Пусть дан граф G=(V,E)G = (V, E).

Возьмём его множество рёбер EE в качестве носителя матроида и объявим набор рёбер независимым, если он не содержит цикла. Иными словами, независимые множества — это леса.

Получаем графический, или циклический, матроид графа.

Базы связного графического матроида — его остовные деревья. Циклы матроида — циклы графа. Петли матроида — рёбра-петли. Перешейки матроида — мосты графа, поскольку любой мост обязан входить в каждое остовное дерево.

Если связный граф имеет nn вершин, то r(E)=n−1r(E) = n - 1. И это не отдельное свойство деревьев, случайно совпавшее с теорией матроидов. Оно является прямым следствием аксиомы обмена: все базы имеют одну мощность, а базы графического матроида — именно остовные деревья.

Кликайте по рёбрам, чтобы собрать множество: панель находит цикл, если он есть, и показывает ранг. Кнопка «жадный алгоритм» сортирует рёбра по весу и запускает алгоритм Краскала; «шаг» берёт по одному ребру и говорит, взято оно или замкнуло бы цикл.

Граф из шести вершин и девяти рёбер; выбранные рёбра подсвечены, цикл среди них отмечен как цикл матроида, а алгоритм Краскала строит минимальное остовное дерево ребро за ребром.

Теперь назначим каждому ребру вес.

Если сортировать рёбра по возрастанию веса и добавлять очередное ребро тогда и только тогда, когда оно не создаёт цикл, мы получим алгоритм Краскала поиска минимального остовного дерева.

Краскал работает не благодаря специальному трюку с графами. Он является частным случаем общего жадного алгоритма на матроиде.

Пример 2: линейный матроид

Пусть носитель состоит из столбцов некоторой матрицы над полем FF.

Назовём множество столбцов независимым тогда и только тогда, когда соответствующие векторы линейно независимы.

Получившаяся структура называется линейным матроидом. Если матроид можно получить таким образом из некоторой матрицы над полем FF, говорят, что он представим над FF.

Это один из исходных примеров теории матроидов.

Графический матроид представим над любым полем. Для ориентированного графа можно взять его матрицу инцидентности «вершина — ребро», где каждому ребру соответствует столбец с +1+1 у одного конца и −1-1 у другого. Над полем GF(2)\mathrm{GF}(2), где 1=−11 = -1, обе ненулевые записи равны единице.

Набор таких столбцов линейно независим тогда и только тогда, когда соответствующие рёбра не содержат цикла.

Матроид, представимый над любым полем, называется регулярным. Таким образом, графические ⊊\subsetneq регулярные ⊊\subsetneq представимые, и оба включения строгие.

В линейном матроиде особенно наглядны петли и циклы. Нулевой вектор является петлёй. Два ненулевых пропорциональных вектора образуют двухэлементный цикл. В двумерном пространстве любое минимально зависимое множество из трёх попарно непропорциональных векторов образует трёхэлементный цикл.

Пять векторов, отложенных от начала координат на плоскости; выбранный набор объявляется независимым или зависимым с указанием ранга и линейной оболочки, параллельные векторы образуют цикл, а нулевой вектор является петлёй.

Пример 3: однородный матроид U(k,n)

Однородный, также называемый равномерным, матроид Uk,nU_{k,n} имеет nn элементов, а независимыми объявляются в точности подмножества мощности не более kk:

I={A⊆E:∣A∣≤k}.\mathcal{I} = \{A \subseteq E : |A| \le k\}.

Его базы — все kk-элементные подмножества. Циклы — все (k+1)(k+1)-элементные подмножества. Ранг равен kk.

Например, в U1,nU_{1,n} можно выбрать не более одного элемента. Любые два элемента уже образуют цикл.

В Un,nU_{n,n} независимо любое подмножество. Такой матроид называется свободным.

Особенно важен U2,4U_{2,4}. У него четыре элемента; любые один или два элемента независимы, а любое трёхэлементное множество зависимо. Это простейший матроид, не представимый над полем GF(2)\mathrm{GF}(2).

U2,4U_{2,4}: любые две точки независимы, любые три зависимы, потому что лежат на одной прямой.

Знаменитая теорема Татта утверждает: матроид представим над GF(2)\mathrm{GF}(2), то есть является бинарным, тогда и только тогда, когда он не содержит U2,4U_{2,4} в качестве минора.

Пример 4: матроид разбиения — таможня

Представим, что вы проходите через таможню.

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

У каждого предмета есть некоторая ценность, и требуется набрать допустимое множество максимальной суммарной ценности.

Почему это матроид?

Пустая сумка допустима — выполняется (I1).

Если из допустимой сумки что-нибудь убрать, она останется допустимой — выполняется (I2).

Теперь возьмём две допустимые сумки AA и BB, причём ∣A∣<∣B∣|A| < |B|. Поскольку в каждой категории может находиться не более одного предмета, сумка BB представляет больше различных категорий, чем AA. Значит, существует категория, представленная в BB, но отсутствующая в AA.

Соответствующий предмет можно перенести из BB в AA, не нарушив правила. Следовательно, выполняется и (I3).

Получился матроид разбиения.

Вообще носитель можно разбить на блоки E=E1⊔E2⊔⋯⊔EmE = E_1 \sqcup E_2 \sqcup \cdots \sqcup E_m и задать для каждого блока вместимость kik_i. Независимы тогда множества AA, для которых ∣A∩Ei∣≤ki|A \cap E_i| \le k_i для каждого ii.

Такой матроид является прямой суммой однородных матроидов Uki,∣Ei∣U_{k_i,|E_i|}. В нашем таможенном примере ki=1k_i = 1 для всех категорий.

Жадный алгоритм здесь действительно очевиден: если ограничения между категориями никак не взаимодействуют, достаточно взять самый ценный допустимый предмет из каждой категории.

Теперь изменим всего одно правило: общий вес багажа не должен превышать 23 кг.

Пусть A={A = \{один предмет массой 20 кг}\}, а B={B = \{два предмета по 10 кг}\}. Тогда ∣A∣<∣B∣|A| < |B|. Однако ни один элемент BB нельзя добавить к AA: получилось бы 30 кг.

Следовательно, аксиома обмена нарушается. Это уже не матроид, а ограничение типа рюкзака.

Можно назначить ценности так, что жадный алгоритм сначала схватит привлекательный предмет массой 20 кг и после этого уже не сможет взять два десятикилограммовых предмета, хотя вместе они стоят дороже.

Одна сумка, два почти одинаково выглядящих правила — и совершенно разная математика.

«Не более одного предмета каждой категории» образует матроид.

«Не более 23 кг суммарно» — не образует.

Именно аксиома обмена позволяет увидеть эту разницу до запуска алгоритма.

Точки и прямые: матроид ранга 3

Матроиды можно строить не только из векторов или рёбер.

Рассмотрим конечный набор точек на плоскости и объявим множество точек независимым в смысле аффинной независимости.

Одна точка независима. Любые две различные точки независимы. Три точки независимы тогда и только тогда, когда они не лежат на одной прямой. Четыре точки на плоскости всегда аффинно зависимы.

Поэтому такой матроид имеет ранг не более 3.

Если три точки лежат на одной прямой и никакая их собственная часть не зависима, эта тройка образует цикл матроида.

Изменяя взаимное расположение точек, можно тем самым менять сам матроид: появление новой коллинеарной тройки создаёт новый цикл. Перетаскивайте точки и следите за счётчиком прямых.

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

Однако далеко не каждый матроид ранга 3 можно реализовать точками обычной вещественной плоскости.

Классический пример — матроид Фано. Он состоит из семи элементов с семью специальными тройками-циклами и представим линейно только над полями характеристики 2. В частности, над R\mathbb{R} представить его невозможно.

Аксиома обмена в действии

Теперь видно, почему (I3) занимает центральное место.

Прежде всего она немедленно доказывает, что все базы матроида имеют одинаковую мощность.

Предположим, что AA и BB — две максимальные независимые системы и ∣A∣<∣B∣|A| < |B|. По (I3) существует элемент e∈B∖Ae \in B \setminus A, для которого A∪{e}A \cup \{e\} остаётся независимым. Но тогда AA не было максимальным. Противоречие.

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

Соберите на графе два независимых множества AA и BB. Как только ∣A∣<∣B∣|A| < |B|, панель ищет в B∖AB \setminus A ребро, которое можно добавить к AA, не замкнув цикл, — аксиома обещает, что такое всегда найдётся.

Два леса A и B на одном графе; как только A меньше, ребро из B, которое можно добавить к A без образования цикла, обводится кольцом — это и есть аксиома обмена в действии.

Более того, нарушение (I3) непосредственно позволяет построить пример, на котором жадный алгоритм проигрывает.

Пусть существуют независимые множества AA и BB, такие что ∣A∣<∣B∣|A| < |B|, но ни один элемент из B∖AB \setminus A нельзя добавить к AA.

Назначим каждому элементу AA вес 1+ε1 + \varepsilon, каждому элементу B∖AB \setminus A — вес 11, а всем прочим элементам — вес 00.

Жадный алгоритм сначала предпочитает элементы AA. После того как он набрал AA, ни один новый элемент из B∖AB \setminus A добавить уже невозможно. Он получает вес ∣A∣(1+ε)|A|(1+\varepsilon).

В то же время BB имеет вес как минимум ∣B∣≥∣A∣+1|B| \ge |A| + 1. Если выбрать 0<ε<1/∣A∣0 < \varepsilon < 1/|A|, то

∣A∣(1+ε)<∣A∣+1≤∣B∣.|A|(1+\varepsilon) < |A| + 1 \le |B|.

Значит, BB лучше жадного решения. Нарушение одной аксиомы автоматически породило контрпример для greedy.

Почему алгоритм Краскала работает: жадный алгоритм и матроиды

Рассмотрим общую задачу.

Каждому элементу конечного множества назначен неотрицательный вес. Требуется выбрать независимое множество максимального суммарного веса.

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

Никакого перебора. Никакого возврата назад. Никакого динамического программирования.

Когда эта процедура гарантированно даёт оптимум?

Ответ даёт теорема Радо—Эдмондса.

Теорема Радо—Эдмондса. Пусть I\mathcal{I} — непустое семейство подмножеств конечного множества EE, замкнутое относительно взятия подмножеств. Тогда жадный алгоритм находит независимое множество максимального веса для любого назначения неотрицательных весов тогда и только тогда, когда (E,I)(E, \mathcal{I}) является матроидом.

Слева — леса, то есть матроид; справа — паросочетания, которые матроидом не являются. «Шаг» продвигает обе стороны на один элемент.

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

Это очень сильное утверждение.

Прямое направление говорит: если допустимые множества образуют матроид, нам не нужно отдельно доказывать корректность жадного алгоритма для каждого нового набора весов. Структура задачи уже гарантирует оптимальность.

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

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

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

Алгоритм Краскала — ровно этот принцип, применённый к графическому матроиду, только для поиска минимума рёбра сортируются по возрастанию веса.

Доказательство теоремы Радо—Эдмондса

Обратное направление мы уже фактически доказали.

Если аксиома обмена нарушается, существуют AA и BB, для которых ∣A∣<∣B∣|A| < |B| и ни один элемент B∖AB \setminus A нельзя добавить к AA. Весовая конструкция с 1+ε1 + \varepsilon на AA и 11 на B∖AB \setminus A заставляет greedy выбрать AA, хотя BB имеет больший суммарный вес.

Остаётся доказать прямое направление.

Пусть жадный алгоритм выбрал элементы g1,g2,…,grg_1, g_2, \ldots, g_r в таком порядке, что w(g1)≥w(g2)≥⋯≥w(gr)w(g_1) \ge w(g_2) \ge \cdots \ge w(g_r). Обозначим полученную базу через G={g1,…,gr}G = \{g_1, \ldots, g_r\}.

Пусть O={o1,…,or}O = \{o_1, \ldots, o_r\} — оптимальная база, элементы которой также упорядочены по невозрастанию веса: w(o1)≥w(o2)≥⋯≥w(or)w(o_1) \ge w(o_2) \ge \cdots \ge w(o_r).

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

Покажем, что для каждого ii выполнено w(gi)≥w(oi)w(g_i) \ge w(o_i).

Предположим противное и возьмём первый индекс ii, для которого w(gi)<w(oi)w(g_i) < w(o_i).

Рассмотрим A={g1,…,gi−1}A = \{g_1, \ldots, g_{i-1}\} и B={o1,…,oi}B = \{o_1, \ldots, o_i\}.

Оба множества независимы: первое является частью жадной базы, второе — частью оптимальной базы. Кроме того, ∣A∣=i−1<i=∣B∣|A| = i - 1 < i = |B|.

По аксиоме обмена существует oj∈B∖Ao_j \in B \setminus A такой, что A∪{oj}A \cup \{o_j\} независимо.

Поскольку j≤ij \le i, имеем w(oj)≥w(oi)>w(gi)w(o_j) \ge w(o_i) > w(g_i). Следовательно, жадный алгоритм рассмотрел ojo_j раньше, чем gig_i.

В тот момент уже выбранные элементы образовывали некоторое подмножество AA. Поскольку A∪{oj}A \cup \{o_j\} независимо, по наследственности независимо и это более раннее подмножество вместе с ojo_j.

Значит, алгоритм должен был принять ojo_j. Тогда к моменту выбора gig_i элемент ojo_j уже принадлежал бы AA. Но мы выбрали oj∈B∖Ao_j \in B \setminus A. Противоречие.

Следовательно, w(gi)≥w(oi)w(g_i) \ge w(o_i) для каждого ii, а значит, w(G)≥w(O)w(G) \ge w(O).

Жадное решение оптимально. ■\blacksquare

Всё доказательство держится практически на одном применении аксиомы обмена.

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

Другие классы матроидов

Матроид трансверсалей, или трансверсальный матроид. Пусть задан двудольный граф между элементами носителя EE и некоторым набором «мест». Подмножество A⊆EA \subseteq E независимо, если его элементы можно сопоставить различным местам посредством паросочетания. Такие частичные трансверсали образуют матроид (Эдмондс и Фалкерсон, 1965).

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

Алгебраический матроид. Пусть K⊇FK \supseteq F — расширение полей, а EE — конечное множество элементов KK. Подмножество EE независимо, если его элементы алгебраически независимы над FF. Линейные матроиды являются частным случаем алгебраических, но существуют алгебраические матроиды, не имеющие линейного представления ни над каким полем.

Прямая сумма. Если матроиды определены на непересекающихся носителях, их можно объединить независимо друг от друга. Ранги складываются. Матроид, который нельзя нетривиально представить как прямую сумму, называется связным. Каждый конечный матроид единственным образом раскладывается на связные компоненты.

Объединение матроидов. Пусть M1,…,MkM_1, \ldots, M_k заданы на одном носителе. Множество называется независимым в их объединении, если его можно разбить на части так, чтобы ii-я часть была независима в MiM_i. Теорема об объединении матроидов утверждает, что результат снова является матроидом.

Именно эта конструкция лежит за задачами вида «можно ли разбить множество рёбер на kk лесов?» — точный ответ на него дал Нэш-Уильямс.

Кографический матроид, или матроид разрезов, двойствен к графическому. Для связного графа его независимые множества можно понимать как такие множества рёбер, удаление которых не нарушает связность. Его циклы — минимальные разрезы графа.

Кографический матроид графа сам является графическим тогда и только тогда, когда граф планарен (Уитни); в этом случае он совпадает с графическим матроидом планарного двойственного графа.

Бинарный матроид — матроид, представимый над полем GF(2)\mathrm{GF}(2).

Регулярный матроид — матроид, представимый над любым полем; эквивалентно — вполне унимодулярной матрицей. Каждый графический и каждый кографический матроид регулярен.

Теоремы Татта дают особенно красивые характеризации через запрещённые миноры. Матроид бинарен тогда и только тогда, когда не содержит U2,4U_{2,4} в качестве минора. Регулярный матроид дополнительно не должен содержать матроид Фано F7F_7 и его двойственный F7∗F_7^*.

Короткие ответы

Что такое матроид одним предложением?

Матроид — это конечное множество с заданным понятием независимости, удовлетворяющим наследственности и аксиоме обмена.

Зачем нужна аксиома обмена?

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

Где встречаются матроиды?

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

Что такое ранг матроида?

Это мощность любой его базы. Более локально r(A) — максимальная мощность независимого подмножества A. Для связного графа с n вершинами ранг его графического матроида равен n − 1.

Любая ли задача, где сработал greedy, является матроидом?

Нет. Жадный алгоритм может случайно дать правильный ответ на конкретном наборе весов и в задаче, которая не имеет никакого отношения к матроидам. Теорема Радо—Эдмондса утверждает гораздо более сильную вещь: для наследственного семейства жадный алгоритм оптимален при любом назначении неотрицательных весов тогда и только тогда, когда это семейство образует матроид.

Чем матроид отличается от гридоида?

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

Матроид против задачи о рюкзаке?

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

Литература