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