"Информатика (базовый уровень)", Гейн А.Г., Гейн А.А.
Мосты и точки сочленения — элементы графа, от которых зависит его связность. Мостом называют критическое ребро: после его удаления граф распадается на части. Точка сочленения — критическая вершина, удаление которой вместе с инцидентными рёбрами также может разделить граф. Эти понятия помогают находить уязвимые участки сетей, дорог и других систем, а эффективно искать их можно с помощью обхода в глубину.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Связный граф — граф, в котором между любыми двумя вершинами существует путь. Связность важна потому, что мост и точку сочленения определяют по изменению связности после удаления. Если исходный граф уже распадается на части, нужно отдельно анализировать его компоненты.
Мост — ребро связного графа, удаление которого нарушает связность графа. Иначе говоря, это единственный участок связи между двумя сторонами графа. Поиск мостов показывает, какие каналы или дороги нельзя потерять без разделения системы.
Точка сочленения — вершина, удаление которой вместе со всеми инцидентными рёбрами нарушает связность графа. Через такую вершину проходят пути, соединяющие разные части графа. Поэтому она играет роль критического узла, а не отдельного канала.
Компонента связности — максимальная связная часть графа, которую нельзя расширить другой вершиной, сохранив связность. После удаления моста в связном графе появляется две компоненты. После удаления точки сочленения может появиться несколько компонент, а их число зависит от строения графа.
Удаление моста разделяет связный граф на две компоненты, потому что другого пути между концами этого ребра нет. Если бы такой путь существовал, его можно было бы соединить с мостом и получить цикл. Тогда после удаления ребра связь сохранилась бы, значит, мостом оно не было бы.
Отсюда следует критерий: ребро является мостом тогда и только тогда, когда не входит ни в один цикл графа. Любой цикл даёт обходной маршрут, поэтому удаление любого одного его ребра безопасно для связности. При проверке нужно учитывать все циклы и обратные пути, а не только самый заметный внешний контур.
Удаление точки сочленения может разделить граф на несколько компонент, потому что разные части соединялись через эту вершину. После удаления исчезают также все рёбра, ведущие в неё, и прежние пути между соседними частями обрываются. Число новых компонент определяется тем, сколько независимых ветвей было связано через удалённую вершину.
Мост и точка сочленения описывают разные элементы, поэтому наличие одного не определяет наличие другого. У моста оба конца могут быть точками сочленения, только один конец может быть ею или ни один. Например, мост между двумя крупными связными частями обычно имеет точки сочленения на концах, а единственное ребро между двумя вершинами не даёт такой точки в обычном смысле.
Для поиска используют обход графа в глубину, который строит дерево поиска. Для каждой вершины запоминают глубину входа tin и значение low — самое раннее время входа, достижимое из её поддерева по рёбрам дерева и обратным рёбрам. Для ребра v—to условие low[to] > tin[v] означает мост, а условие low[to] ≥ tin[v] для сына дерева означает точку сочленения; корень является ею при двух и более сыновьях.
| Свойство | Мост | Точка сочленения |
|---|---|---|
| Что является объектом | Ребро | Вершина |
| Что удаляется вместе с объектом | Только ребро | Вершина и все инцидентные рёбра |
| Последствие удаления | Увеличивается число компонент связности | Увеличивается число компонент связности |
| Критерий через циклы | Ребро не принадлежит ни одному циклу | Нет аналогичного простого критерия через один цикл |
| Основной алгоритм поиска | Обход в глубину и анализ обратных рёбер | Обход в глубину и сравнение глубины и достижимости |
| Практический смысл | Критический канал или участок сети | Критический узел или пункт соединения |
Таблица помогает сначала определить тип объекта, а затем правильно представить операцию удаления. При решении задачи полезно отдельно выписать критические рёбра и критические вершины: совпадение в обозначениях не означает совпадение понятий.
Дан граф с рёбрами AB, BC, CA, CD и DE. Нужно найти все мосты и точки сочленения. Вершины A, B и C образуют цикл, к которому последовательно присоединены D и E.
Ответ: мосты — CD и DE; точки сочленения — C и D.
Два цикла имеют одну общую вершину. Требуется определить, является ли эта вершина точкой сочленения и есть ли в графе мосты. Каждый цикл связан с другим только через общую вершину.
Ответ: общая вершина является точкой сочленения, мостов в графе нет.
Даны списки смежности и порядок обхода графа в глубину. Нужно найти мосты и точки сочленения, не перебирая все удаления. Для этого применяют времена входа и минимальные достижимые времена.
Ответ: мосты и точки сочленения определяются указанными сравнениями за один обход графа, то есть без отдельного удаления каждого объекта.
Ошибка — считать мостом всякое ребро, не входящее в очевидный большой цикл. Ученик может не заметить небольшой цикл или обходной путь через другие рёбра. Нужно проверить существование любого альтернативного пути между концами ребра.
Мост часто путают с точкой сочленения, потому что оба объекта могут разрывать граф. Причина — смешение названий «ребро» и «вершина». Перед проверкой подпишите объект: удаляется одно ребро или вершина вместе с её рёбрами.
При проверке точки сочленения иногда удаляют только вершину, оставляя её инцидентные рёбра. Это меняет граф не по определению, ведь рёбра без одного из концов существовать не могут. Удаляйте вершину и все соединения, выходящие из неё.
Большая степень вершины сама по себе не делает её точкой сочленения. У неё может быть много рёбер, образующих обходные циклы. Проверяйте не число соседей, а то, увеличилось ли число компонент после удаления.
Для изучения темы нужны вершины, рёбра, пути, циклы, связность графа и способы представления графа, например список смежности. Без этих понятий трудно понять, какой именно маршрут исчезает после удаления элемента.
Мосты и точки сочленения связаны с обходом в глубину, деревьями поиска и компонентами связности. Те же идеи позволяют анализировать достижимость вершин и строение графа.
На практике критические элементы ищут в компьютерных сетях, дорожных системах, коммуникациях и электрических схемах. Мост показывает уязвимый канал, а точка сочленения — уязвимый узел.
Может ли мост входить в цикл?
Нет. Если ребро входит в цикл, между его концами есть обходной путь по другим рёбрам цикла. Поэтому его удаление не нарушает связность графа.
Всегда ли конец моста является точкой сочленения?
Нет, эти понятия относятся к разным объектам: мост — ребро, а точка сочленения — вершина. Например, единственное ребро в графе из двух вершин является мостом, но удаление одного его конца не создаёт несколько непустых компонент.
Чем точка сочленения отличается от вершины большой степени?
Большая степень означает только наличие многих инцидентных рёбер. Точка сочленения определяется результатом удаления вершины: связность должна нарушиться. Вершина малой степени тоже может быть точкой сочленения.
Как найти мосты и точки сочленения без перебора всех вариантов удаления?
Используют один обход графа в глубину. Для каждой вершины запоминают время входа и минимальное время, до которого можно добраться по дереву обхода и обратным рёбрам.
Что происходит с графом, если удалить сразу несколько мостов?
Граф может распасться на несколько компонент, причём число компонент зависит от того, какие мосты удалены. Каждый удалённый мост разрывает связь между своими сторонами, если другие удалённые рёбра не изменяют картину дополнительно.
§ 54. Мосты и точки сочленения