Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 14:

Жадные алгоритмы и матроиды

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Аннотация: Матроиды. Теорема Радо-Эдмондса. Взвешенные паросочетания.

Жадные алгоритмы и матроиды

Жадными (градиентными) называют алгоритмы, действующие по принципу "максимальный выигрыш на каждом шаге". Такая стратегия не всегда ведет к конечному успеху - иногда выгоднее сделать не наилучший, казалось бы, выбор на очередном шаге с тем, чтобы в итоге получить оптимальное решение. Но для некоторых задач применение жадных алгоритмов оказывается оправданным. Одной из самых известных задач такого рода является задача об оптимальном каркасе. Существует общая теория, обосновывающая применимость жадных алгоритмов к задачам определенного типа, к которому относится и рассмотренный в "предыдущей лекции" алгоритм Крускала. В этой лекции будет дан набросок этой теории. Затем будет рассмотрено применение жадного алгоритма в сочетании с методом увеличивающих путей для решения задачи о паросочетании наибольшего веса в двудольном графе со взвешенными вершинами.

Матроиды

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

Определение. Матроидом называется пара M=(E,\Phi), где E - конечное непустое множество, \Phi - семейство подмножеств множества E, удовлетворяющее условиям:

  • (1) если X\in \Phi и Y\subseteq X, то Y\in \Phi ;
  • (2) если X\in \Phi, Y\in \Phi и |X| < |Y|, то существует такой элемент a\in Y-X, что X\cup (a)\in \Phi.

Элементы множества E называются элементами матроида, а множества из семейства \Phi - независимыми множествами матроида. Максимальное по включению независимое множество называют базой матроида. Из аксиомы (2) следует, что все базы матроида состоят из одинакового количества элементов.

Если E - множество строк некоторой матрицы, а \Phi состоит из всех линейно независимых множеств строк этой матрицы, то пара (E,\Phi) образует матроид, называемый матричным матроидом.

Другим важным типом матроидов являются графовые матроиды. Пусть G=(V,E) - обыкновенный граф. Подмножество множества E назовем ациклическим, если подграф, образованный ребрами этого подмножества, не содержит циклов, т.е. является лесом.

Теорема 1. Если G=(V,E) - обыкновенный граф, \Phi - семейство всех ациклических подмножеств множества E, то пара M_{G} =(E,\Phi ) является матроидом.

Доказательство. Аксиома (1) выполняется, так как всякое подмножество ациклического множества, очевидно, является ациклическим. Докажем, что выполняется и (2). Пусть X и Y - два ациклических множества и |X| \lt |Y|. Допустим, что не существует такого ребра e\in Y, что множество X\cup \{ e\} является ациклическим. Тогда при добавлении любого ребра из множества Y к множеству X образуется цикл. Это означает, что концы каждого такого ребра принадлежат одной компоненте связности остовного подграфа, образованного ребрами множества Y. Тогда каждая область связности подграфа X содержится в какой-нибудь области связности подграфа Y. Но компоненты связности каждого из этих подграфов - деревья, а дерево с k вершинами содержит ровно k-1 ребер. Следовательно, в этом случае число ребер в Y не превосходило бы числа ребер в X, что противоречит условию |X| < |Y|.

Базами графового матроида являются все каркасы графа. Для связного графа это будут все его остовные деревья.

< Лекция 13 || Лекция 14: 1234 || Лекция 15 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Дмитрий Крюков
Дмитрий Крюков
Россия, Москва
Андрей Посохов
Андрей Посохов
Россия, Санкт-Петербург