Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 2.Ненаправленные графы, часть 1.doc
Скачиваний:
27
Добавлен:
13.02.2016
Размер:
1 Мб
Скачать

2.8.2. Обход в ширину (bfs)

Определения

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

О

Пример

бход и разметка вершин графа осуществлятся в следующем порядке: началу обхода S приписывается метка 0, смежным с ней вершинам – метка 1. Теперь поочередно рассматриваются окружения всех вершин с метками 1 и каждой из входящих в эти окружения еще не занумерованных вершин приписывается метка 2 и т.д.

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.