- •Глава 2.
- •Замечание
- •2 Определения.1.2 Определение графа с помощью множеств
- •Определения
- •2.1.5. Матричный способ задания графов
- •Определения
- •Матрица инциденций
- •Матрица смежности
- •Матрица Лапласа (Кирхгоффа)
- •Определение
- •2.2.2. Бинарные операции над раздельными графами
- •Определения
- •Определения
- •Замечание
- •2.2.3. Унарные операции над графами
- •2.3. Некоторые виды графов
- •Определения
- •Определения
- •Определения
- •Определение
- •Замечание
- •Определения
- •Определения
- •2.5. Прогулки, тропы, пути и циклы
- •Определения
- •Теорема
- •Теорема
- •Точный алгоритм нахождения
- •Определения
- •Определения
- •Определения
- •Определения
- •Псевдокод
- •Класс сложности
- •2.8.2. Обход в ширину (bfs)
- •Класс сложности
2.8.2. Обход в ширину (bfs)
Определения

Обход в ширину является алгоритмом систематического пошагового посещения (обхода) всех смежных вершин по отношению к текущим вершинам (вершине).
О
Пример

1●S ●3S ●4 6● 5● 2● ● 7 ● 8 Ширина (метка)-0









●S

3 ●
● 2 4● Ширина (метка)-1
● 5






Ширина (метка)-2
● 6
● 8 ● 7 Ширина (метка)-3


Рис.2.8.1.
ИдеяBFS
Атрибуты DFS

Пять основных атрибутаалгоритмаBFS:
1) начальная вершина S;
2) цвет вершины u– цвет[u]:
белый, если вершина непросмотрена;
серый, если вершина найдена и просмотрена;
черный, если вершина завершена.
3) d[u] – кратчайшее расстояние от вершиныuдо начальной вершиныS, с которой начинается выполнение алгоритма. Расстояние определяется числом ребер между вершинами.
4) p[v] – предшественник вершиныuвBFSдереве;
5) регулярная очередь Q.
Псевдокод

{Для каждой
вершины uделать:
d[u]= ∞ ;
цвет[u]=белый;
p[u]=NIL;
цвет[S]=серый;
включить Sв очередьQ; { До
тех всех соседей vвершиныuделать:
если цвет[v]=белый,
тогда
цвет[v]=серый;
d[v]=d[u]+1;
p[v]=u;
включить вершину vdочередьQ;
цвет[u]=черный;
}}}
Класс сложности

Сложность адгоритма BFS–O(n+m), гдеn=|V|,m=|E|, т.е.проблема относится кPклассу.
Пример

r s -- v
s w r --
u
r
s
t
t u w x --


u -- y t





y
x
w
v
v -- r


w x -- t s
x t -- y w
y -- x u
∞
v
u ∞
s 0 t ∞
∞
y
∞
x
∞
w
r 1
∞
v
u ∞
s 0 t ∞
∞
y
∞
x
1 w
d[s]=0; d[w]=1;d[r]=1 Q w r r 1
∞
v
u ∞
s 0 t 2
∞
y
2 x
1 w
d[t]=2,d[x]=2 Q r t x r 1
2 v
u ∞
s 0 t 2
∞
y
2 x
1 w
d[v]=2 Q t x v N
Рисунок графа Описание
действий алгоритма




























1 В очередь помещается
начальная вершина s.
Вершинаs– серая (на
рисунке и в таблице инцидентности). d[s]=0; d[fi]=∞
отsдо всех остальных
вершин (расстояния показаны
рядом с вершинами и в рамке под рисунком)
r ∞










s Q
d[s]=0
2 Очередь Q:
из таблицы инцидентности для вершиныsвыбираются смежные
вершиныr,wи помещаются в очередь. Вершина s– черная (на рисунке и таблице инциденции),
из очереди изымается. Вершины rиw– серые (на рисунке и
в таблице). d[w]=1; d[s]=1;
3 Очередь Q:из таблицы инцидентности для вершиныwвыбираются смежные
вершиныt,x. Вершина w– черная. Вершины tиx– серые. d[t]=2, d[x]=2
4
Очередь Q:
из таблицы инцидентности для вершиныrвыбирается смежная
вершинаv. Вершина r– черная. Вершина v– серая. d[v]=2

r 1
2 v
u 3 s 0 t 2
3 y
2 x
1 w
d[y]=3 Q x v u u 3 r 1
2 v
s 0 t 2
3 y
2 x
1 w
Q u y u 3 r 1
2 v
s 0 t 2
3 y
2 x
1 w
Q y N
Рисунок графа Описание
действий алгоритма






























5 Очередь Q:
из таблицы инцидентности для вершиныt:w–черная,x– серая,u– белая. Добавляем вершинуu. Вершина t– черная. Вершина u– серая. d[u]=3
r 1 u 3 s 0 t 2











2 v
∞
y
2 x
1 w






Q t x v
d[u]=3
6
Очередь Q:
из таблицы индицентности для вершиныx:t,w–черные,y– белая.
Добавляем в очередь вершинуy. Вершина x– черная. Вершина y– серая. d[y]=3
7
Очередь Q:все вершины были помещены в очередь,
начинается очищение очереди. Вершина v– черная.
8 Очередь Q:
изымается вершинаu. Вершина u– черная.

N
Рисунок графа Описание
действий алгоритма u 3 r 1
2 v
s 0 t 2
3 y
2 x
1 w
u
r
v
s
t
y
x
w
Ребра, не
вошедшие в это дерево, являются ребрами
касания: {t,x},{u,y} Дерево
обхода в ширинуданного примера имеет
вид:


















9
Очередь Q:изымается вершинаy. Вершина y– черная.
Очередь пуста, алгоритм
стоп.


d[r]=1,d[w]=1,d[v]=2,d[t]=2,d[x]=2,d[u]=3,d[y]=3

1Арлазаров В.Л. и др. Алгоритм приведения конечных ненаправленных графов к канонической форме. – Журнал вычислительной математики и математической физики,14,1974,737-743.
McKay B.D. Computing automorphisms and canonical labelings of graphs. – Combinatorial Mathematics, Springer Lecture Notes in Mathematics,686,1977,223-232.
