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

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;

включить вершину 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.