0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы разберем еще один тип графа - двудольный. Узнаем, что это за граф, и как его определить.</p>
1
<p>В этом уроке мы разберем еще один тип графа - двудольный. Узнаем, что это за граф, и как его определить.</p>
2
<h2>Что такое двудольный граф</h2>
2
<h2>Что такое двудольный граф</h2>
3
<p><strong>Двудольный граф</strong>- это граф, вершины которого можно разбить на две части. При этом ребра будут проходить только между частями, но никогда внутри одной из них.</p>
3
<p><strong>Двудольный граф</strong>- это граф, вершины которого можно разбить на две части. При этом ребра будут проходить только между частями, но никогда внутри одной из них.</p>
4
<p>Так выглядят двудольные графы:</p>
4
<p>Так выглядят двудольные графы:</p>
5
<p>Вершины графа разбиты на две части - верхнюю и нижнюю. Пересечения возможны только между двумя частями, но не внутри них. При этом верхняя и нижняя части - независимые множества.</p>
5
<p>Вершины графа разбиты на две части - верхнюю и нижнюю. Пересечения возможны только между двумя частями, но не внутри них. При этом верхняя и нижняя части - независимые множества.</p>
6
<p>Обычно двудольные графы рисуют так, чтобы множество X располагалось сверху, а множество Y - снизу. Несмотря на это, не все двудольные графы рисуются именно так. Например, ниже показаны двудольные сетки:</p>
6
<p>Обычно двудольные графы рисуют так, чтобы множество X располагалось сверху, а множество Y - снизу. Несмотря на это, не все двудольные графы рисуются именно так. Например, ниже показаны двудольные сетки:</p>
7
<h2>Как определить, что граф двудольный</h2>
7
<h2>Как определить, что граф двудольный</h2>
8
<p>Чтобы определить двудольный граф, начните с любой вершины и пометьте ее буквой X. Каждую из ее соседей пометьте буквой Y, а далее снова пометьте каждую из соседей Y буквой X. Продолжайте помечать вершины и их соседей противоположными метками.</p>
8
<p>Чтобы определить двудольный граф, начните с любой вершины и пометьте ее буквой X. Каждую из ее соседей пометьте буквой Y, а далее снова пометьте каждую из соседей Y буквой X. Продолжайте помечать вершины и их соседей противоположными метками.</p>
9
<p>Если получится, что у двух соседних вершин одинаковые метки или какая-то вершина окажется помеченной и X, и Y, значит, граф - не двудольный. Если это не произошло, граф - двудольный. Пример показан ниже:</p>
9
<p>Если получится, что у двух соседних вершин одинаковые метки или какая-то вершина окажется помеченной и X, и Y, значит, граф - не двудольный. Если это не произошло, граф - двудольный. Пример показан ниже:</p>
10
<p>Предположим, мы попробуем алгоритм на треугольнике K3. Начнем с того, что обозначим вершину X. Затем две соседние вершины обозначим Y. Далее появляется проблема, так как эти вершины - смежные. Аналогичная проблема возникает и C5:</p>
10
<p>Предположим, мы попробуем алгоритм на треугольнике K3. Начнем с того, что обозначим вершину X. Затем две соседние вершины обозначим Y. Далее появляется проблема, так как эти вершины - смежные. Аналогичная проблема возникает и C5:</p>
11
<p>Такое происходит только с нечетными циклами, поэтому у двудольных графов их не бывает. Нечетные циклы - это единственное, чего не может быть у двудольных графов. Докажем это.</p>
11
<p>Такое происходит только с нечетными циклами, поэтому у двудольных графов их не бывает. Нечетные циклы - это единственное, чего не может быть у двудольных графов. Докажем это.</p>
12
<h2>Как доказать теорему о двудольных графах</h2>
12
<h2>Как доказать теорему о двудольных графах</h2>
13
<p>Если граф двудольный, то у любого цикла должна быть четная длина. Чтобы убедиться в этом, начнем с предположения, что два двусоставных множества называются X и Y. Выберем любой цикл в графе и пометим вершины X и Y.</p>
13
<p>Если граф двудольный, то у любого цикла должна быть четная длина. Чтобы убедиться в этом, начнем с предположения, что два двусоставных множества называются X и Y. Выберем любой цикл в графе и пометим вершины X и Y.</p>
14
<p>Предположим, мы начинаем трассировку с вершины X. Тогда вторая, четвертая, шестая и следующие четные вершины находятся в X, а остальные - в Y. Когда мы вернемся в начальную вершину, пройдем четное количество шагов. Это значит, что у цикла четная длина:</p>
14
<p>Предположим, мы начинаем трассировку с вершины X. Тогда вторая, четвертая, шестая и следующие четные вершины находятся в X, а остальные - в Y. Когда мы вернемся в начальную вершину, пройдем четное количество шагов. Это значит, что у цикла четная длина:</p>
15
<p>Предположим, что у нас есть граф, в котором нет нечетных циклов. Выберем любую компоненту графа и любую вершину в ней. Пусть X - все вершины компоненты на четном расстоянии от a, а Y - все вершины компоненты на нечетном расстоянии от a.</p>
15
<p>Предположим, что у нас есть граф, в котором нет нечетных циклов. Выберем любую компоненту графа и любую вершину в ней. Пусть X - все вершины компоненты на четном расстоянии от a, а Y - все вершины компоненты на нечетном расстоянии от a.</p>
16
<p>Мы утверждаем, что это образует двудольное разбиение компоненты. Для этого покажем, что нет ребер ни внутри X, ни внутри Y.</p>
16
<p>Мы утверждаем, что это образует двудольное разбиение компоненты. Для этого покажем, что нет ребер ни внутри X, ни внутри Y.</p>
17
<p>Предположим, что существует такое ребро между вершинами u и v, которые находятся в X или в Y. Значит, u и v находятся либо на четном расстоянии от a, либо на нечетном.</p>
17
<p>Предположим, что существует такое ребро между вершинами u и v, которые находятся в X или в Y. Значит, u и v находятся либо на четном расстоянии от a, либо на нечетном.</p>
18
<p>Напомним, что расстояние между вершинами - это длина кратчайшего пути между ними. Рассмотрим кратчайшие пути из a → u и из a → v. Пусть b - последняя общая вершина этих путей. Путь b → u, за которым следует ребро uv, а затем путь v → b образует цикл.</p>
18
<p>Напомним, что расстояние между вершинами - это длина кратчайшего пути между ними. Рассмотрим кратчайшие пути из a → u и из a → v. Пусть b - последняя общая вершина этих путей. Путь b → u, за которым следует ребро uv, а затем путь v → b образует цикл.</p>
19
<p>Его длина - это сумма слагаемых:</p>
19
<p>Его длина - это сумма слагаемых:</p>
20
<ul><li>1</li>
20
<ul><li>1</li>
21
<li>Расстояние от b до u</li>
21
<li>Расстояние от b до u</li>
22
<li>Расстояние от b до v</li>
22
<li>Расстояние от b до v</li>
23
</ul><p>При этом сумма этих слагаемых будет четной. Внутри X и внутри Y не может быть ни одного ребра. Таким образом, X и Y образуют двудольное разбиение компонента. Мы можем проделать тот же процесс для каждой компоненты, чтобы получить двудольное разбиение всего графа.</p>
23
</ul><p>При этом сумма этих слагаемых будет четной. Внутри X и внутри Y не может быть ни одного ребра. Таким образом, X и Y образуют двудольное разбиение компонента. Мы можем проделать тот же процесс для каждой компоненты, чтобы получить двудольное разбиение всего графа.</p>
24
<p>Пример нечетного цикла, который создали во второй части доказательства:</p>
24
<p>Пример нечетного цикла, который создали во второй части доказательства:</p>
25
<p>Теперь нужно выбрать вершину и разбить граф на две группы:</p>
25
<p>Теперь нужно выбрать вершину и разбить граф на две группы:</p>
26
<ul><li>Вершины, которые находятся на четном расстоянии от выбранной вершины</li>
26
<ul><li>Вершины, которые находятся на четном расстоянии от выбранной вершины</li>
27
<li>Вершины, которые находятся на нечетном расстоянии от выбранной вершины</li>
27
<li>Вершины, которые находятся на нечетном расстоянии от выбранной вершины</li>
28
</ul><p>Это основная идея доказательства. Во многих теоремах в теории графов есть одна большая идея, вокруг которой вращается доказательство.</p>
28
</ul><p>Это основная идея доказательства. Во многих теоремах в теории графов есть одна большая идея, вокруг которой вращается доказательство.</p>
29
<h2>Что такое полный двудольный граф</h2>
29
<h2>Что такое полный двудольный граф</h2>
30
<p>У двудольных графов есть еще один класс -<strong>полные двудольные графы</strong>. У них есть возможные ребра между двумя частями. Km, n обозначает полный двудольный граф, одна часть которого состоит из m вершин, а другая - n вершин. Например:</p>
30
<p>У двудольных графов есть еще один класс -<strong>полные двудольные графы</strong>. У них есть возможные ребра между двумя частями. Km, n обозначает полный двудольный граф, одна часть которого состоит из m вершин, а другая - n вершин. Например:</p>
31
<p>Мы разобрали, что такое двудольные графы и как они выглядят. Теперь вы знаете, как провести доказательство того, что граф двудольный и какие его свойства указывают на это.</p>
31
<p>Мы разобрали, что такое двудольные графы и как они выглядят. Теперь вы знаете, как провести доказательство того, что граф двудольный и какие его свойства указывают на это.</p>