- •Замечание
- •2 Определения .1.2 Определение графа с помощью множеств
- •Определения
- •2.1.3. Степени вершин графа
- •Определения
- •Матрица инциденций
- •Матрица смежности
- •Определение
- •Теорема Havel - Hakimi
- •Замечания
- •2.1.5. Матричный способ задания графов
- •Определения
- •Определения
- •Определения
- •2.2. Операции над графами
- •2.2.1. Простейшие операции
- •Определения
- •2.2.2. Бинарные операции над раздельными графами
- •Определения
- •Определения
- •Замечание
- •2.2.3. Унарные операции над графами
- •Определения
- •Определения
- •Определения
- •Определения
- •Определение
- •Замечание
- •Определения
- •Определения
- •2.5. Прогулки, тропы, пути и циклы
- •Определения
- •2.6. Связность
- •Определения
- •2.6.1. Реберная связность
- •Определения
- •Определения
- •Определения
- •Определения
- •2 Определения .8. Обход графа
- •2 Определения .8.1..Обход в глубину (dsf)
- •Псевдокод
- •Класс сложности
- •2.8.2. Обход в ширину (bfs)
- •Определения
- •Атрибуты dfs
- •Псевдокод
- •Класс сложности
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;
включить вершину v
d очередь 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.
