Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Variant_70.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
330.74 Кб
Скачать

Задача 2. Поиск в ширину

Рассмотрим метод поиска в графе, называемый поиском в ширину (англ: breadth first search). Прежде чем описать его, отметим, что при поиске в глубину чем позднее будет посещена вершина, тем раньше она будет использована — точнее, так будет при допущении, что вторая вершина посещается перед использованием первой. Это прямое следствие того факта, что просмотренные, но еще не исполь­зованные вершины скапливаются в стеке. Поиск в ширину, грубо говоря, основывается на замене стека очередью. После такой модификации, чем раньше посещается вершина (поме­щается в очередь), тем раньше она используется (удаляется из очереди). Использование вершины происходит с помощью про­смотра сразу всех еще не просмотренных соседей этой вершины. Вся процедура поиска представлена ниже (данная процедура используется также и для просмотра графа, и в псевдокоде, описанном ниже, отсутствуют операторы, которые не используются для поиска).

1 procedure WS (v);

(*поиск в ширину в графе с началом в вершине v;

переменные НОВЫЙ, ЗАПИСЬ — глобальные *)

2 begin

3 ОЧЕРЕДЬ := ; ОЧЕРЕДЬ <= v; НОВЫЙ [v] := ложь

4 while ОЧЕРЕДЬ   do

5 begin р<= ОЧЕРЕДЬ; посетить р;

6 for u  ЗАПИСЬ [р] do

7 if НОВЫЙ [u] then

8 begin ОЧЕРЕДЬ <= u; НОВЫЙ [u]:=ложь

9 end

10 end

  1. end

На рис. 1 представлен граф, вершины которого зануме­рованы согласно очередности, в которой они посещаются в про­цессе поиска в глубину.

Как и в случае поиска в глубину, процедуру WS можно использовать без всяких модификаций и тогда, когда списки инцидентности ЗАПИСЬ[v], v = V, определяют некоторый ориентированный граф. Очевидно, что тогда посещаются толь­ко те вершины, до которых существует путь от вершины, с которой мы начинаем поиск

1(1)

10(7)

Рис. 1 Нумерация вершин графа (в скобках), соответствующая очередности, в которой они просматриваются в процессе поиска в ширину.

Задача 3. Раскраска графа

Граф называется вершинно-К-раскрашенным, если его вершины можно раскрасить К-красками так, чтобы никакие две вершины не имели бы одинаковый цвет. Минимальное число К, при котором граф G является вершинно-К-раскрашенным называется хроматическим числом графа.

Раскрасить граф можно используя следующий алгоритм:

1. Найти число связей всех вершин графа.

2. Рассматривать вершины в порядке не возрастания числа связей.

3. Начинаем раскрашивание в цвет №1. Рассматриваем вершины последовательно и если рассматриваемая вершина не раскрашена, а также не имеет связей с вершинами раскрашеными в этот цвет, то раскрашиваем её в этот цвет.

4. Если все вершины просмотрены, но не раскрашены, то повторяем пункт 3, с цветом на единицу больше, пока все вершины не раскрашены. Число цветов это и есть хроматическое число.

Пример:

Раскрасить граф

Вычислим степени

Рассматриваем вершины в порядке не возрастания числа связей. Те которые не связаны с вершинами раскрашеными в цвет №1 раскрашиваем в цвет №1

Рассматриваем вершины в порядке не возрастания числа связей. Те которые не связаны с вершинами раскрашеными в цвет №2 раскрашиваем в цвет №2

Рассматриваем вершины в порядке не возрастания числа связей. Те которые не связаны с вершинами раскрашеными в цвет №3 раскрашиваем в цвет №3

Все вершины графа раскрашены, число цветов 3 ==> хроматическое число равно трем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]