Докажите, почему жадный алгоритм оптимален для задач на матроиде: сформулируйте определение матроида, приведите доказательство корректности жадного подхода и два примера матроидов (например, графический и векторный), а также объясните, почему тот же жадный метод может дать неверный результат для задач вне класса матроидов
Определение матроида. Матроид M=(E,I)M=(E,\mathcal I)M=(E,I) — это конечное множетсво EEE и система «независимых» подмножеств I⊆2E\mathcal I\subseteq 2^EI⊆2E, удовлетворяющая трём аксиомам: (I1)∅∈I;(I2)если I∈I и J⊆I, то J∈I(наследственность);(I3)если I,J∈I и ∣I∣>∣J∣, то ∃e∈I∖J: J∪{e}∈I(обменное свойство).
\begin{aligned} &(\text{I1})\quad \varnothing\in\mathcal I;\\ &(\text{I2})\quad \text{если }I\in\mathcal I\text{ и }J\subseteq I,\text{ то }J\in\mathcal I\quad(\text{наследственность});\\ &(\text{I3})\quad \text{если }I,J\in\mathcal I\text{ и }|I|>|J|,\text{ то }\exists e\in I\setminus J:\;J\cup\{e\}\in\mathcal I\quad(\text{обменное свойство}). \end{aligned} (I1)∅∈I;(I2)еслиI∈IиJ⊆I,тоJ∈I(наследственность);(I3)еслиI,J∈Iи∣I∣>∣J∣,то∃e∈I∖J:J∪{e}∈I(обменноесвойство). Формулировка задачи и жадный алгоритм. Пусть задана весовая функция w:E→Rw:E\to\mathbb Rw:E→R. Цель — найти базис (максимальное по включению независимое множество) максимального суммарного веса. Жадный алгоритм: 1. Упорядочить элементы так, чтобы w(e1)≥w(e2)≥⋯w(e_1)\ge w(e_2)\ge\cdotsw(e1)≥w(e2)≥⋯. 2. Проходя в этом порядке, добавить текущий элемент в текущее множество GGG, если G∪{ei}∈IG\cup\{e_i\}\in\mathcal IG∪{ei}∈I. 3. В конце вернуть GGG (это базис). Доказательство корректности (идея и формальное доказательство). Пусть жадный алгоритм вернул G={g1,…,gr}G=\{g_1,\dots,g_r\}G={g1,…,gr} в порядке выбора, и пусть BBB — любой базис (|B|=r) максимального суммарного веса. Покажем, что w(G)≥w(B)w(G)\ge w(B)w(G)≥w(B). Определим последовательность базисов B0=B,B1,…,BrB_0=B,B_1,\dots,B_rB0=B,B1,…,Br так: для k=1,…,rk=1,\dots,rk=1,…,r если gk∈Bk−1g_k\in B_{k-1}gk∈Bk−1, то Bk=Bk−1B_k=B_{k-1}Bk=Bk−1; иначе по обменному свойству (I3) применительно к независимым множствам {g1,…,gk}\{g_1,\dots,g_k\}{g1,…,gk} и Bk−1B_{k-1}Bk−1 существует элемент b∈Bk−1∖{g1,…,gk−1}b\in B_{k-1}\setminus\{g_1,\dots,g_{k-1}\}b∈Bk−1∖{g1,…,gk−1} такой, что Bk=Bk−1−{b}+{gk}∈I.
B_k=B_{k-1}-\{b\}+\{g_k\}\in\mathcal I. Bk=Bk−1−{b}+{gk}∈I.
Поскольку жадность выбирала gkg_kgk раньше, чем любой невключённый в текущий GGG элемент (в том числе bbb), выполняется w(gk)≥w(b)w(g_k)\ge w(b)w(gk)≥w(b). Тогда w(Bk)=w(Bk−1)−w(b)+w(gk)≥w(Bk−1).
w(B_k)=w(B_{k-1})-w(b)+w(g_k)\ge w(B_{k-1}). w(Bk)=w(Bk−1)−w(b)+w(gk)≥w(Bk−1).
Итеративно получаем w(Br)≥w(B0)=w(B)w(B_r)\ge w(B_0)=w(B)w(Br)≥w(B0)=w(B). Но по построению в конце BrB_rBr содержит все g1,…,grg_1,\dots,g_rg1,…,gr, а так как размеры равны, получаем Br=GB_r=GBr=G. Значит w(G)≥w(B)w(G)\ge w(B)w(G)≥w(B). Поскольку BBB был произвольным максимальным базисом, GGG — оптимален. Два примера матроидов. 1) Графический матроид. Для неориентированного графа G=(V,E)G=(V,E)G=(V,E) положим I\mathcal II — множество всех ациклических подмножеств рёбер (т.е. лесов). Тогда базисы — это максимальные леса (в связном графе — остовные деревья). Жадный алгоритм с сортировкой по неповышающим весам — это алгоритм Краскала для максимального остова (или минимального при обратном порядке). 2) Векторный (линейный) матроид. Пусть EEE — конечное множество векторов в векторном пространстве, а I\mathcal II — все линейно независимые подмножества. Базисы — линейные базы. Жадный выбор по весу даёт базис максимального суммарного веса. Почему жадный метод может дать неверный результат вне класса матроидов. Ключевой шаг в доказательстве — обменное свойство (I3). Если система независимости его не удовлетворяет, нельзя гарантировать, что любой выбранный жадно элемент можно заменить в оптимальном решении элементом не меньшего веса. Контрпример: E={a,b,c}E=\{a,b,c\}E={a,b,c}, веса w(a)=5,w(b)=4,w(c)=3w(a)=5,w(b)=4,w(c)=3w(a)=5,w(b)=4,w(c)=3. Пусть I={∅,{a},{b},{c},{b,c}}\mathcal I=\{\varnothing,\{a\},\{b\},\{c\},\{b,c\}\}I={∅,{a},{b},{c},{b,c}} (разрешены все одиночки и только пара {b,c}\{b,c\}{b,c}). Жадный алгоритм возьмёт сначала aaa (вес 5) и затем не сможет добавить ни bbb ни ccc (пары с aaa не независимы), получив вес 5. Но оптимум — {b,c}\{b,c\}{b,c} с весом 777. Здесь нарушено обменное свойство, поэтому жадность провалила. Вывод: обменное свойство матроидов — необходимое условие, обеспечивающее монотонность суммарного веса при замене элементов и потому корректность жадного алгоритма; вне матроидов такого общего гаранта нет.
(I1)∅∈I;(I2)если I∈I и J⊆I, то J∈I(наследственность);(I3)если I,J∈I и ∣I∣>∣J∣, то ∃e∈I∖J: J∪{e}∈I(обменное свойство). \begin{aligned}
&(\text{I1})\quad \varnothing\in\mathcal I;\\
&(\text{I2})\quad \text{если }I\in\mathcal I\text{ и }J\subseteq I,\text{ то }J\in\mathcal I\quad(\text{наследственность});\\
&(\text{I3})\quad \text{если }I,J\in\mathcal I\text{ и }|I|>|J|,\text{ то }\exists e\in I\setminus J:\;J\cup\{e\}\in\mathcal I\quad(\text{обменное свойство}).
\end{aligned}
(I1)∅∈I;(I2)если I∈I и J⊆I, то J∈I(наследственность);(I3)если I,J∈I и ∣I∣>∣J∣, то ∃e∈I∖J:J∪{e}∈I(обменное свойство).
Формулировка задачи и жадный алгоритм. Пусть задана весовая функция w:E→Rw:E\to\mathbb Rw:E→R. Цель — найти базис (максимальное по включению независимое множество) максимального суммарного веса. Жадный алгоритм:
1. Упорядочить элементы так, чтобы w(e1)≥w(e2)≥⋯w(e_1)\ge w(e_2)\ge\cdotsw(e1 )≥w(e2 )≥⋯.
2. Проходя в этом порядке, добавить текущий элемент в текущее множество GGG, если G∪{ei}∈IG\cup\{e_i\}\in\mathcal IG∪{ei }∈I.
3. В конце вернуть GGG (это базис).
Доказательство корректности (идея и формальное доказательство). Пусть жадный алгоритм вернул G={g1,…,gr}G=\{g_1,\dots,g_r\}G={g1 ,…,gr } в порядке выбора, и пусть BBB — любой базис (|B|=r) максимального суммарного веса. Покажем, что w(G)≥w(B)w(G)\ge w(B)w(G)≥w(B).
Определим последовательность базисов B0=B,B1,…,BrB_0=B,B_1,\dots,B_rB0 =B,B1 ,…,Br так: для k=1,…,rk=1,\dots,rk=1,…,r если gk∈Bk−1g_k\in B_{k-1}gk ∈Bk−1 , то Bk=Bk−1B_k=B_{k-1}Bk =Bk−1 ; иначе по обменному свойству (I3) применительно к независимым множствам {g1,…,gk}\{g_1,\dots,g_k\}{g1 ,…,gk } и Bk−1B_{k-1}Bk−1 существует элемент b∈Bk−1∖{g1,…,gk−1}b\in B_{k-1}\setminus\{g_1,\dots,g_{k-1}\}b∈Bk−1 ∖{g1 ,…,gk−1 } такой, что
Bk=Bk−1−{b}+{gk}∈I. B_k=B_{k-1}-\{b\}+\{g_k\}\in\mathcal I.
Bk =Bk−1 −{b}+{gk }∈I. Поскольку жадность выбирала gkg_kgk раньше, чем любой невключённый в текущий GGG элемент (в том числе bbb), выполняется w(gk)≥w(b)w(g_k)\ge w(b)w(gk )≥w(b). Тогда
w(Bk)=w(Bk−1)−w(b)+w(gk)≥w(Bk−1). w(B_k)=w(B_{k-1})-w(b)+w(g_k)\ge w(B_{k-1}).
w(Bk )=w(Bk−1 )−w(b)+w(gk )≥w(Bk−1 ). Итеративно получаем w(Br)≥w(B0)=w(B)w(B_r)\ge w(B_0)=w(B)w(Br )≥w(B0 )=w(B). Но по построению в конце BrB_rBr содержит все g1,…,grg_1,\dots,g_rg1 ,…,gr , а так как размеры равны, получаем Br=GB_r=GBr =G. Значит w(G)≥w(B)w(G)\ge w(B)w(G)≥w(B). Поскольку BBB был произвольным максимальным базисом, GGG — оптимален.
Два примера матроидов.
1) Графический матроид. Для неориентированного графа G=(V,E)G=(V,E)G=(V,E) положим I\mathcal II — множество всех ациклических подмножеств рёбер (т.е. лесов). Тогда базисы — это максимальные леса (в связном графе — остовные деревья). Жадный алгоритм с сортировкой по неповышающим весам — это алгоритм Краскала для максимального остова (или минимального при обратном порядке).
2) Векторный (линейный) матроид. Пусть EEE — конечное множество векторов в векторном пространстве, а I\mathcal II — все линейно независимые подмножества. Базисы — линейные базы. Жадный выбор по весу даёт базис максимального суммарного веса.
Почему жадный метод может дать неверный результат вне класса матроидов. Ключевой шаг в доказательстве — обменное свойство (I3). Если система независимости его не удовлетворяет, нельзя гарантировать, что любой выбранный жадно элемент можно заменить в оптимальном решении элементом не меньшего веса. Контрпример: E={a,b,c}E=\{a,b,c\}E={a,b,c}, веса w(a)=5,w(b)=4,w(c)=3w(a)=5,w(b)=4,w(c)=3w(a)=5,w(b)=4,w(c)=3. Пусть I={∅,{a},{b},{c},{b,c}}\mathcal I=\{\varnothing,\{a\},\{b\},\{c\},\{b,c\}\}I={∅,{a},{b},{c},{b,c}} (разрешены все одиночки и только пара {b,c}\{b,c\}{b,c}). Жадный алгоритм возьмёт сначала aaa (вес 5) и затем не сможет добавить ни bbb ни ccc (пары с aaa не независимы), получив вес 5. Но оптимум — {b,c}\{b,c\}{b,c} с весом 777. Здесь нарушено обменное свойство, поэтому жадность провалила.
Вывод: обменное свойство матроидов — необходимое условие, обеспечивающее монотонность суммарного веса при замене элементов и потому корректность жадного алгоритма; вне матроидов такого общего гаранта нет.