Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебник_1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.92 Mб
Скачать

3.3. Обход графа

Если G=<{v1, v2, …, vn}, E> ‑ граф с n вершинами и : NnNn – перестановка*), то упорядоченное множество t = v(1), v(2), …, v(n) определяет обход G.

Поскольку существует n! = 12…n различных перестановок Nn, то должно быть n! различных способов обхода графа с n вершинами. Обход начинается с вершины v(1). Далее для определенности мы будем рассматривать упорядоченные графы и из всего множества возможных обходов рассмотрим лишь два наиболее распространенных – по глубине и по ширине.

Обход графа по глубине

Пусть G = <{v1, …, vn}, {Lv1, …, Lvn}> – упорядоченный граф. Выбрав начальную вершину vs (1  sn), имеем (1) = s. Далее вершины из t определим следующим образом:

v(2) – первая вершина из списка смежности (то есть смежная с v(1)),

v(3) – первая вершина из , которой еще нет в t и т.д.,

...

v(k) – первая вершина из , которой еще нет в t (k  4).

При этом если встречается вершина u такая, что все вершины из Lu уже содержатся в t, то процесс повторяется из вершины wt, где w – последняя вершина в t такая, что Lw содержит вершины, не входящие в t. Обход заканчивается, когда никакая вершина из V, не входящая в t не может быть достигнута из вершин включенных в t.

Если граф G связный, то описанный выше процесс определяет обход графа G, в противном случае – обход только одной компоненты G (содержащей v(1)). Значит, если граф G не связный, то для полного обхода надо начинать процесс в каждой связной компоненте G. Если G имеет связные компоненты Vi (1   p), где |Vi| = ni, то определены n1n2 …  np обходов по глубине; если G связный, то n обходов (так как каждая из n вершин может быть выбрана в качестве начальной).

Пример 3.8.

Для упорядоченного графа

первый обход по глубине определяется так (начальная вершина v1):

v1, v2, v4, v8, v5, v6, v3, v7  

Обход графа по ширине

Пусть G = <{v1, …, vn}, {Lv1, …, Lvn}> – упорядоченный граф. Выберем начальную вершину vs и предположим, что

Lvs = <<vs, w1>, <vs, w2>, …, <vs, wk>>.

Тогда первые k+1 членов упорядоченного множества t определим следующим образом:

v(1) = vs, v(2) = w1, …, v(k+1) = wk,

а v(k+1+i) является i-ой вершиной из Lw1, не входящей в t (i= 1,2,…). Это исчерпывает Lw1, и процесс начинается над Lw2 и т.д. Обход продолжается до того момента, пока все вершины, достижимые из v(1), не окажутся в t. Замечание о единственности, связности и числе возможных обходов для обхода по глубине, справедливы и для обхода по ширине.

Пример 3.2.

Для графа, описанного в примере 3.1, обход по ширине с начальной вершиной v1 задается следующим образом:

v1, v2, v3, v4, v5, v6, v7, v8

3.4. Таблица основных понятий теории графов

№ п/п

Граф

Орграф

1

Вершина

Вершина

2

Ребро

Дуга

3

Компонента графа

Сильно связная компонента орграфа

4

Слабо связная компонента орграфа

5

Упорядоченный граф

Упорядоченный орграф

6

Дерево

Ориентированное дерево

7

Упорядоченное ориентированное дерево

8

Лист

9

Непосредственный предок

10

Непосредственный потомок

11

Предок

12

Потомок

13

Корень

Корень