Алгоритм построения базы в объединении матроидов — различия между версиями
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | Объединение матроидов M = <tex>\langle S,J \rangle</tex> = <tex>\cup _{k=1}^{n}</tex> <tex>M_i</tex> | + | Объединение матроидов <tex>M</tex> = <tex>\langle S,J \rangle</tex> = <tex>\cup _{k=1}^{n}</tex> <tex>M_i</tex> |
}} | }} | ||
Строка 8: | Строка 8: | ||
Для каждого <tex>M_i</tex> построим двудольный ориентированный граф <tex>D_{M_i}(I_i)</tex>, такой что в левой доле находятся вершины из <tex>I_i</tex>, а в правой - вершины из <tex>S_i \setminus I_i</tex>. Построим ориентированные ребра из <tex>y \in I_i</tex> в <tex>x \in S_i \setminus I_i</tex>, при условии, что <tex>I_i - y + x \in J_i</tex>. | Для каждого <tex>M_i</tex> построим двудольный ориентированный граф <tex>D_{M_i}(I_i)</tex>, такой что в левой доле находятся вершины из <tex>I_i</tex>, а в правой - вершины из <tex>S_i \setminus I_i</tex>. Построим ориентированные ребра из <tex>y \in I_i</tex> в <tex>x \in S_i \setminus I_i</tex>, при условии, что <tex>I_i - y + x \in J_i</tex>. | ||
}} | }} | ||
+ | |||
+ | Объединим все <tex>D_{M_i}(I_i)</tex> в один граф <tex>D</tex>, котороый будет суперпозицией ребер из этих графов. | ||
+ | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | <tex>F_i</tex> = { <tex>x \in S_i \setminus I_i</tex> : <tex>I_i + x \in J_i </tex>}. | ||
+ | }} | ||
+ | |||
+ | {{Теорема | ||
+ | |statement= | ||
+ | Для любого <tex>s \in S \setminus I</tex> имеем <tex>I + x \in J_i \Leftrightarrow </tex> существует ориентированный путь из <tex>F</tex> в <tex>s</tex> по ребрам <tex>D</tex>. | ||
+ | |proof= | ||
+ | }} | ||
+ | |||
+ | |||
+ | == Алгоритм == | ||
+ | |||
+ | В жадном алгоритме трудность может представлять шаг поиска нового элемента не из текущего множества, который оставит текущее множество независимым. | ||
+ | Здесь мы обозначили текущее множество как <tex>I</tex>. | ||
+ | Тогда нужно найти такой элемент <tex>s \in S \setminus I</tex>, что <tex>I + s</tex> - снова независимо. | ||
+ | Все наши кандидаты находятся в <tex>S \setminus I</tex>. Если мы найдем путь из <tex>F</tex> в <tex>S \setminus I</tex>, то элемент <tex>s</tex>, которым путь закончился, можно будет добавить в <tex>I</tex>. | ||
+ | То есть шаг жадного алгоритма заключается в создании нового <tex>D</tex> и поиске такого пути. |
Версия 07:21, 27 июня 2011
Определение: |
Объединение матроидов | = =
Определение: |
Для каждого | построим двудольный ориентированный граф , такой что в левой доле находятся вершины из , а в правой - вершины из . Построим ориентированные ребра из в , при условии, что .
Объединим все в один граф , котороый будет суперпозицией ребер из этих графов.
Определение: |
= { : }. |
Теорема: |
Для любого имеем существует ориентированный путь из в по ребрам . |
Алгоритм
В жадном алгоритме трудность может представлять шаг поиска нового элемента не из текущего множества, который оставит текущее множество независимым. Здесь мы обозначили текущее множество как
. Тогда нужно найти такой элемент , что - снова независимо. Все наши кандидаты находятся в . Если мы найдем путь из в , то элемент , которым путь закончился, можно будет добавить в . То есть шаг жадного алгоритма заключается в создании нового и поиске такого пути.