|
|||||
Математика : Графы.Проверка связности графа с ненаправленными ребрами.Разделим все вершины графа на три разновидности:
Выделение связной компоненты графа.В этом алгоритме три этапа - первоначальная разметка, распространение разметки и формирование результата. 1. Первоначальная разметкаПометим все вершины первым маркером - нам про них ничего не известно Выберем любую вершину (например первую (или нулевую)), пометим ее вторым маркером, ведь она может быть достигнута сама из себя. 2. Разметка соседних вершинЕсли нет вершин, помеченных вторым маркером - переходим к третьему этапу. Выберем любую вершину, помеченную вторым маркером. Пометим ее третьим маркером. Все вершины, соседние с данной и помеченные первым маркером, пометим вторым маркером. Повторим этот пункт с начала. 3. Завершение работыЕсли нужно получить список вершин, входящих в одну компоненту связности с заданной вершиной, то выбираем вершины, помеченные третьим маркером, в отдельный массив. Если нужно получить список вершин, не входящих в одну компоненту связности с заданной вершиной, то выбираем вершины, помеченные первым маркером в отдельный массив и возвращаем полученный массив. Если нужно просто проверить граф на связность, то считаем вершины,
помеченные первым маркером, и сравниваем получившееся число с нулем.
Если число вершин, помеченные первым маркером, равно нулю, то граф
связный.
|