Глава 2.Ненаправленные графы, часть 1. Простые графы (графы) Способы задания графа Основные способы задания графов графический
Скачать 1.28 Mb.
|
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 |