|
|
Строка 1: |
Строка 1: |
− | {| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;"
| |
− | |+
| |
− | |-align="center"
| |
− | |'''НЕТ ВОЙНЕ'''
| |
− | |-style="font-size: 16px;"
| |
− | |
| |
− | 24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.
| |
− |
| |
− | Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.
| |
− |
| |
− | Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.
| |
− |
| |
− | Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.
| |
− |
| |
− | ''Антивоенный комитет России''
| |
− | |-style="font-size: 16px;"
| |
− | |Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.
| |
− | |-style="font-size: 16px;"
| |
− | |[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].
| |
− | |}
| |
− |
| |
| {{Определение | | {{Определение |
| |definition= | | |definition= |
Текущая версия на 19:26, 4 сентября 2022
Определение: |
Вершинной связностью [math]\kappa[/math] графа [math]G[/math] (англ. vertex-connectivity) называется наименьшее число вершин, удаление которых приводит к несвязному или тривиальному графу. |
Определение: |
Реберной связностью [math]\lambda[/math] графа [math]G[/math] (англ. edge-connectivity) называется наименьшее количество ребер, удаление которых приводит к несвязному или тривиальному графу. |
Связь между вершинной, реберной связностью и минимальной степенью вершины
Пускай минимальная степень вершины графа [math]G[/math] обозначается буквой [math]\delta[/math]. Тогда:
Теорема: |
Для любого графа [math]G[/math] справедливо следующее неравенство: [math]\kappa \leqslant \lambda \leqslant \delta [/math] |
Доказательство: |
[math]\triangleright[/math] |
Полный граф. [math] \lambda = \delta = \kappa = 4[/math]
- Проверим второе неравенство. Если в графе [math]G[/math] нет ребер, то [math] \lambda = 0 [/math]. Если ребра есть, то несвязный граф получаем из данного, удаляя все ребра, инцидентные вершине с наименьшей степенью. В любом случае [math] \lambda \leqslant \delta [/math].
- Чтобы проверить первое неравенство нужно рассмотреть несколько случаев.
- Если [math]G[/math] — несвязный или тривиальный граф, то [math] \kappa = \lambda = 0 [/math].
- Если [math]G[/math] связен и имеет мост [math]x[/math], то [math]\lambda = 1 [/math]. В последнем случае [math] \kappa = 1 [/math], поскольку или граф [math]G[/math] имеет точку сочленения, инцидентную ребру [math]x[/math], или же [math]G=K_2[/math].
- Наконец, предположим, что граф [math]G[/math] содержит множество из [math] \lambda \geqslant 2 [/math] ребер, удаление которых делает его несвязным. Ясно, что удаляя [math]\lambda - 1 [/math] ребер из этого множества получаем граф, имеющий мост [math]x = uv[/math]. Для каждого из этих [math]\lambda - 1 [/math] ребер выберем какую-либо инцидентную с ним вершину отличную от [math]u[/math] и [math]v[/math]. Удаление выбранных вершин приводит к удалению [math]\lambda - 1 [/math] (а возможно, и большего числа) ребер. Если получаемый после такого удаления граф не связен, то [math]\kappa \lt \lambda[/math]; если же он связен, то в нем есть мост [math]x[/math], и поэтому удаление вершины [math]u[/math] или [math]v[/math] приводит либо к несвязному, либо к тривиальному графу. В любом случае [math] \kappa \leqslant \lambda[/math].
|
[math]\triangleleft[/math] |
Теорема: |
Для любых натуральных чисел [math]a, b, c[/math], таких что [math]a \leqslant b \leqslant c[/math], существует граф [math]G[/math], у которого [math]\kappa = a, \lambda = b[/math] и [math]\delta = c [/math] |
Доказательство: |
[math]\triangleright[/math] |
Граф, в котором [math] \delta = 4[/math], [math]\lambda = 3[/math], [math]\kappa = 2[/math].
Рассмотрим граф [math]G[/math], являющийся объединением двух полных графов [math]G_1[/math] и [math]G_2[/math], содержащих [math]c + 1[/math] вершину. Отметим [math]b[/math] вершин, принадлежащих подграфу [math]G_1[/math] и [math]a[/math] вершин, принадлежащих подграфу [math]G_2[/math]. Добавим в граф [math]G[/math] [math]b[/math] ребер так, чтобы каждое ребро было инцидентно помеченной вершине, лежащей в подграфе [math]G_1[/math] и помеченной вершине, лежащей в подграфе [math]G_2[/math], причем не осталось ни одной помеченной вершины, у которой не появилось хотя бы одно новое ребро, инцидентное ей.
Тогда:
- Поскольку [math]b \leqslant c[/math], то было как минимум две непомеченные вершины, поэтому [math] \delta = c[/math], так как минимальные степени вершин графов [math]G_1[/math] и [math]G_2[/math] были равны [math]c[/math], а степени их вершин не уменьшались.
- Заметим, что между двумя вершинами графа [math]G[/math] существует не меньше [math]a[/math] вершинно-непересекающихся простых цепей, следовательно по теореме Менгера [math]\kappa \geqslant a[/math]. Однако если удалить из графа [math]G[/math] помеченные вершины его подграфа [math]G_2[/math], то граф [math]G[/math] потеряет связность. Значит, [math]\kappa = a[/math].
- Аналогично рассуждению пункта 2, легко убедится, что [math]\lambda = b[/math].
|
[math]\triangleleft[/math] |
Нахождение реберной связности
Для нахождения реберной связности нужно перебрать все пары вершин [math]s[/math] и [math]t[/math], найти количество непересекающихся путей из [math]s[/math] в [math]t[/math] и выбрать минимум.
Пусть он равен [math]l[/math]. По утверждению, граф является [math]l[/math]-связным, причем такое [math]l[/math] — максимально (ведь мы явно нашли количество путей). А значит, по определению, реберная связность равна [math]l[/math].
Для нахождения количества непересекающихся путей из [math]s[/math] в [math]t[/math] воспользуемся алгоритмом нахождения максимального потока. Сопоставим каждому ребру пропускную способность, равную [math]1[/math] и найдем максимальный поток (например, алгоритм Эдмондса-Карпа).
Он и будет равен количеству путей. Действительно, если провести декомпозицию потока, то получим набор реберно непересекающихся путей из [math]s[/math] в [math]t[/math], по которым поток неотрицателен и равен [math]1[/math] (т.к. пропускная способность всех ребер равна [math]1[/math]). А значит, если поток равен [math]flow[/math], то и количество путей равно [math]flow[/math].
Псевдокод алгоритма
function disjoint_paths_count(): int
ans = INF
for [math]s \in V:[/math]
for [math]t \in V:[/math]
flow = find_max_flow(s, t) // максимальный поток — количество путей из [math]s[/math] в [math]t[/math]
ans = min(ans, flow)
return ans
Оценка работы
Время работы равно [math]V^2 \times O(find\_max\_flow)[/math]. При использовании алгоритма Эдмондса-Карпа время равно [math]V^2 \times O(V E^2)[/math] или [math]O(V^3 E^2)[/math]
Нахождение вершинной связности
Используя аналогичные утверждения и определения для вершинной связности придем к такому же алгоритму с тем отличием, что понадобится искать вершинно-непересекающиеся пути.
Искать их можно тем же способом, если сопоставить каждой вершине пропускную способность, равную [math]1[/math].
Для этого воспользуемся известным трюком:
Разобьем каждую вершину [math]v[/math] графа на две вершины [math]v_1[/math] и [math]v_2[/math]. Все ребра, которые входили в [math]v[/math] будут входить в [math]v_1[/math]. Все ребра, которые выходили из [math]v[/math] будут выходить из [math]v_2[/math]. Так же добавим ребро [math](v_1, v_2)[/math] с пропускной способностью [math]1[/math].
После этого для нахождения количества вершинно непересекающихся путей в исходном графе будем искать количество реберно непересекающихся в новом графе.
Тем самым сведя задачу к нахождению реберной связности.
См. также
Источники информации