Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Обозначим число фигур через k, и пусть ni—число
допустимых положений i-й фигуры. Рассмотрим граф G, имеющий
вершин, соответствующих всем возможным положениям фигур. Будем считать, что в графе G вершины v и w являются смежными тогда и только тогда, когда соответствующие положения оказываются совместными в названном смысле. Легко видеть, что каждое решение исходной головоломки соответствует полному подграфу из k вершин и наоборот. Таким образом, задача нахождения всех решений головоломки эквивалентна нахождению всех полных подграфов из k вершин.
Пусть, наконец, А, В, ..., Z обозначают фигуры, а Ai означает некоторое положение (т. е. вершину) фигуры А. Жульен предложил последовательность преобразований, позволяющую получить из исходного графа некоторый конечный граф, вершины которого представляют собой различные решения, т. е. полные подграфы исходного графа.
На первом шаге удаляются все вершины, соответствующие фигурам А и В (в качестве А и В могут выбираться любые фигуры). Они заменяются вершинами типа ABij при условии, что рассматриваемые комбинации Ai и Вj) являются совместимыми. Кроме того, ABij соединяется со всеми положениями фигур С, D, ..., Z, которые оказываются совместимыми как с Аi так и с Вj. Легко видеть, что существует взаимнооднозначное соответствие между полными подграфами с k вершинами в исходном графе и полными подграфами с (k—1) вершинами в новом графе.
Повторяя названную процедуру, в конечном итоге мы получим граф, вершины которого имеют вид ABC... Zij... q. При этом Ai, Bj, . . ., Zq обозначает полный подграф исходного графа.
ПАРОСОЧЕТАНИЯ
5.14. Максимальные паросочетания
Паросочетания до сих пор считаются областью чистой теории, еще не нашедшей практического приложения. Примеры обобщений основной задачи о паросочетаниях приводятся в разделе, посвященном задаче объединения электростанций.
Пусть G=(V, E) — граф, не имеющий петель. Множество ребер M
E называется паросочетанием графа G, если в М нет двух смежных ребер. Таким образом, каждая вершина G инцидентна самое большее одному ребру М. Говорят, что вершина покрыта (или не покрыта) относительно М, если она инцидентна (или нет) ребру в М. Пустое множество образует (хотя и неинтересный) случай паросочетания, относительно которого каждая вершина является непокрытой.
Паросочетание графа G будем называть максимальным, если не существует паросочетания большей мощности.
В случае, когда каждая вершина покрыта, говорят, что паросочетание — совершенно. Совершенное паросочетание иногда называют
1-факторным. Если существует совершенное паросочетание для G, то, очевидно, оно является максимальным. (Заметим, что coвершенное паросочетание не может существовать, если |V|—нечетное.) Татт выделил множество графов, обладающих совершенными паросочетаниями.
Основная цель данного раздела состоит в описании алгоритма, предложенного Эдмондсом для нахождения максимального паросочетания в произвольном графе.
В частности, алгоритм находит совершенное паросочетание, если оно существует. В отличие от других известных подходов, максимальное число операций в данном алгоритме растет как степенная функция, а не экспоненциально с ростом числа вершин в G.
Предположим, что G— двудольный граф, в котором существует такое разбиение вершин {V1, V2}, что каждое ребро соединяет вершину в V1 с вершиной в V2. Задачи о паросочетаниях часто возникают в двудольных графах, особенно, когда вершины в V1 и V2 представляют различные типы объектов (например, мужчины — женщины, мужчины — работы — машины). При этом часто требуется «попарно связать» или «отобразить» разные типы объектов друг на друга таким образом, чтобы осталось как можно меньше несвязанных объектов (т. е. непокрытых вершин). Структура исходного графа используется для выделения всех допустимых парных он единений.
Пусть М — паросочетание графа G=(V, E). Тогда простая цепь С в G называется чередующейся цепью относительно М, если ее ребра (при прохождении цепи от одного конца до другого) являются поочередно ребрами паросочетания (ребрами М) и ребрами непаросочетания (ребрами Е—М). Допустим, что дано паросочетание М и чередующая цепь С. Рассмотрим множество ребер М'=М
С, состоящее из ребер, принадлежащих М или С, но не одновременно обоим множествам. Таким образом, М' получается вычеркиванием из М ребер па-росочетания, входящих в С, и добавлением к М ребер, не входящих в паросочетание, но принадлежащих С. Так как число ребер в С, принадлежащих паросочетанию, отличается от числа ребер, не принадлежащих паросочетаниго, самое большее на 1, число ребер в М и М' также различается самое большое на 1.
Для иллюстрации сделанных замечаний рассмотрим паросочетание М, выделенное жирными линиями на рис. 5.29, а.

Рис. 5.29.
Множество М'=М
С, показанное на рис. 5.29, с, получается при использовании чередующейся цепи С, проведенной на рис. 5.29, b. Если, как в предшествующем примере, конечные точки чередующейся цепи С не покрыты ребрами М, то легко видеть, что М' обязательно является паросочетанием и |М'|=|М|+1. По этой причине чередующаяся цепь, обе конечные точки которой не покрыты, называется чередующимся расширением. Существование чередующегося расширения (или просто расширения) является необходимым и достаточным условием того, что М не является максимальным паросочетанием. Сказанное можно сформулировать в виде следующей теоремы, предложенной Бержем и доказанной на основе идей Эдмондса.
Теорема 5.9. Паросочетание М в графе G является максимальным тогда и только тогда, когда G не содержит чередующегося расширения относительно М.
Доказательство. Для завершения доказательства остается показать, что если М не является макси мальным, то существует чередующаяся цепь, соединяющая две вершины, не покрытые множеством М. (Обратное уже было установлено.) Допустим, что паросочетание М' имеет на одно ребро больше, чем М, и рассмотрим граф
G'=(V, M
M'), содержащий только те ребра, которые встречаются в М или М', но не в обоих одновременно.
В графе G' не существует вершины v степени больше чем 2, так как вершине v инцидентно самое большее одно ребро в М и одно в М'. Компоненты G', исключая изолированные вершины, соответствуют чередующимся цепям и чередующимся простым циклам относительно М (и М'). Каждый из циклов содержит одинаковое число ребер из М и из М'. Следовательно, должна быть, по крайней мере, одна компонента, которая соответствует чередующейся цепи и в которой число ребер, принадлежащих М', на единицу больше числа ребер, принадлежащих М. Конечные точки такой цепи обязательно останутся непокрытыми ребрами М. Теорема доказана.
На основе предыдущей теоремы можно решать задачу нахождения максимального паросочетания, если найти удобный метод поиска чередующегося расширения в том случае, когда оно существует. Действительно, мы могли бы начать с «пустого» паросочетания М0, найти чередующую цепь C1 (единственное ребро в этом случае) и определить M1 = M0
C1. В общем случае, можно также определить Mi=Mi-1 Ci, где Сi — чередующаяся цепь, соединяющая две вершины, непокрытые относительно М. В конечном счете мы придем к некоторому i-му этапу, на котором чередующееся расширение Ci+1 не существует. Тогда Mi — максимальное паросочетание.
Известно несколько эффективных алгоритмов нахождения максимальных паросочетаний в двудольных графах. Алгоритм, описанный ниже, применим для любых графов. Он основан на систематическом поиске чередующихся расширений и последовательном расширении паросочетаний. В процессе его функционирования находятся определенные области графа (соответствующие так называемым венгерским деревьям), которые могут быть удалены при дальнейшем поиске без опасности потери каких-то чередующихся расширений. Алгоритм может также стягивать определенные подграфы (связанные с соответствующими циклами нечетной длины) в одну «псевдовершину», упрощая тем самым процедуру поиска.
Перед тем как переходить к описанию алгоритма, введем несколько вспомогательных понятий. Чередующееся дерево — это дерево, вершины которого разбиты на два класса (называемые внутренними и внешними вершинами) так, что каждая внутренняя вершина имеет степень 2 и каждое ребро соединяет внутреннюю вершину с внешней. (Заметим, что все «конечные» вершины, т. е. вершины степени 1, обязательно внешние.) Пример чередующегося дерева показан на рис. 5.30, а (зачерненные вершины соответствуют внешним).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |


