Скажите, пожалуйста, можно ли еще получить документ о прохождении курса ("Графы и алгоритмы", декабрь 2020) после предоставления всех дополнительных необходимых документов? |
Жадные алгоритмы и матроиды
Теорема 2. Если - матроид, то для
любой весовой функции
множество
, найденное
алгоритмом СПО, будет множеством наибольшего веса из
.
Если же
не является матроидом, то найдется такая
функция
, что
не будет множеством
наибольшего веса из
.
Доказательство. Предположим, что является матроидом
и
- множество, построенное
алгоритмом СПО, причем
.
Очевидно,
является базой матроида.
Пусть
- любое другое независимое множество
и
.
Так как
- база, то
.
Покажем, что
для каждого
.
Действительно, положим
,
для некоторого
.
Согласно условию (2) определения матроида, в множестве
имеется такой элемент
, что
и
множество
- независимое. В соответствии с алгоритмом,
элементом наибольшего веса, который может быть добавлен к
так,
чтобы получилось независимое множество, является
.
Следовательно,
.
Теперь предположим, что не является матроидом.
Допустим
сначала, что нарушается условие (1), т.е. существуют такие подмножества
и
множества
, что
,
и
. Определим
функцию
следующим образом:

Алгоритм СПО сначала будет рассматривать все элементы
множества .
Так как
, то не все они войдут в построенное
алгоритмом
множество
. Следовательно, w(A) < |Y|. В то же
время имеется
множество
, такое, что
. Таким
образом,
в этом случае алгоритм СПО строит не оптимальное множество. Если же
условие (1) выполнено, а не выполняется условие (2), то существуют такие
подмножества
и
множества
,
что
,
, |X| < |Y|
и
для каждого
. Выберем такое
,
что
, и определим
функцию
следующим образом:

Алгоритм СПО сначала выберет все элементы множества , а затем
отвергнет все элементы из
. В результате будет построено
множество
с весом
,
которое не
является оптимальным, так как
.
Максимизирующий алгоритм Крускала - это алгоритм СПО, применяемый к семейству ациклических множеств ребер графа. Из теорем 1 и 2 следует, что он действительно решает задачу об оптимальном каркасе. В то же время существует много жадных алгоритмов, не являющихся алгоритмами типа СПО. Примером может служить алгоритм Прима. Эти алгоритмы не попадают под действие теоремы Радо-Эдмондса, для их обоснования нужна иная аргументация.
Если для некоторой конкретной задачи удалось установить применимость
к ней
алгоритма СПО, это не значит, что все проблемы позади. Этот алгоритм
внешне очень прост, но он включает операцию проверки принадлежности
множества семейству , эффективное выполнение которой может
потребовать дополнительных усилий. В алгоритме Крускала, например, для
этого применяются специальные структуры данных. Ниже рассмотрим еще один
пример, когда для успешного решения задачи алгоритм СПО комбинируется
с методом увеличивающих путей для задачи о паросочетании, рассмотренным в
"лекции 12"
.