Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Метод поиска в глубину

Содержание

Поиск в глубину (Depth-first search, DFS)Пусть задан граф G = (V, E).Алгоритм поиска описывается следующим образом: для каждой непройденной вершины необходимо найти все непройденные смежные вершины и повторить поиск для них.Пусть в начальный момент времени все
Метод поиска в глубинуЛекция 8 Поиск в глубину (Depth-first search, DFS)Пусть задан граф G = (V, E).Алгоритм Процедура Поиск(u)Поиск (u){  цвет [u] ← серый;  d[u] = time++; Процедура Поиск_в_графеПоиск_в_графе(){ 	для u  V выполнить  {    	цвет [u] ← АнализОбщее число операций при выполнении Поиск_в_графе:			O(|V|)Общее число операций при выполнении Поиск(u):Цикл выполняется Поиск в глубину в неориентированном графе231546 Глубинный остовный лесПоиск в глубину на неориентированном графе G= (V, Е) разбивает Свойства поиска в глубинуВремена обнаружения и окончания обработки вершин образуют правильную скобочную ТеоремаПри поиске в глубину в графе G = (V, E) для любых Поиск в глубину в ориентированном графеv2v5v1v7v6v3v4v8 Поиск в глубину в ориентированном графе G разбивает множество его ребер на Решение задачи топологической сортировки методом поиска в глубинуТопологическая_сортировка (u){  	цвет [u] ← ПримерТрусыНоскиШтаныРеменьБотинкиРубашкаГалстукПиджакЧасыПиджакРеменьБотинкиШтаныТрусыНоскиГалстукРубашкаЧасы Поиск компонент связности в графеПоиск (u, n){  	цвет [u] ← серый; Метод поиска в ширину (BFS, Breadth-first search) Пусть задан граф G = Алгоритм Инициализациядля ( u  (V\{s}) выполнить{   цвет[u] ← белый; пока (Q ≠ ) выполнить{		u ← first (Q);		для ( v  смежные[u])выполнить		{ Использование очередиВ качестве промежуточной структуры  хранения при обходе в ширину будем Нахождение кратчайшего пути в лабиринте12232333445566778899101111121213131314141415151516161717171818181919191919202020Пометить числом 1 и    поместить
Слайды презентации

Слайд 2 Поиск в глубину (Depth-first search, DFS)

Пусть задан граф

Поиск в глубину (Depth-first search, DFS)Пусть задан граф G = (V,

G = (V, E).

Алгоритм поиска описывается следующим образом:
для

каждой непройденной вершины необходимо найти все непройденные смежные вершины и повторить поиск для них.

Пусть в начальный момент времени все вершины окрашены в белый цвет.
Из множества всех белых вершин выберем любую вершину: v1.
Выполним для нее процедуру Поиск(v1).
Перекрасим ее в черный цвет.
Повторяем шаги 1-3 до тех пор, пока множество белых вершин не пусто.

Слайд 3 Процедура Поиск(u)
Поиск (u)
{
  цвет [u] ← серый;

Процедура Поиск(u)Поиск (u){  цвет [u] ← серый;  d[u] = time++;

d[u] = time++; // время входа в

вершину,
// порядковый глубинный номер вершины
для  v  смежные(u) выполнить
{     если (цвет[v] = белый) то
{
отец [v] ← u;
Поиск(v);
}
}
цвет[u] ← чёрный;
f [u] ← time++; // время выхода из вершины
}

Слайд 4 Процедура Поиск_в_графе
Поиск_в_графе()
{
  для u  V выполнить
{

Процедура Поиск_в_графеПоиск_в_графе(){ 	для u  V выполнить {   	цвет [u] ← белый;

   цвет [u] ← белый;
отец [u]← NULL;
}

time ← 0;
для u  V выполнить
    если (цвет [u] = белый) то
Поиск(u);
}


Слайд 5 Анализ
Общее число операций при выполнении Поиск_в_графе:
O(|V|)

Общее число операций

АнализОбщее число операций при выполнении Поиск_в_графе:			O(|V|)Общее число операций при выполнении Поиск(u):Цикл

при выполнении Поиск(u):
Цикл выполняется |смежные[v]| раз.
∑ |смежные[v]| = O(|E|)

Общее

число операций: O(|V|+|E|)


Слайд 6 Поиск в глубину в неориентированном графе
2
3
1
5
4
6

Поиск в глубину в неориентированном графе231546

Слайд 7 Глубинный остовный лес
Поиск в глубину на неориентированном графе

Глубинный остовный лесПоиск в глубину на неориентированном графе G= (V, Е)

G= (V, Е) разбивает ребра, составляющие Е, на два

множества Т и В.
Ребро (v, w) помещается в множество Т, если узел w не посещался до того момента, когда мы, рассматривая ребро (и, w), оказались в узле v. В противном случае ребро (v, w) помещается в множество В.

Ребра из Т будем называть древесными, а из В — обратными.

Подграф (V, Т) представляет собой неориентированный лес, называемый остовным лесом для G, построенным поиском в глубину, или, короче, глубинным остовным лесом для G.
Если этот лес состоит из единственного дерева, (V, Т) будем называть по аналогии глубинным остовным деревом.

Заметим, что если граф связен, то глубинный остовный лес будет деревом.

Узел, с которого начинался поиск, считается корнем соответствующего дерева.

Слайд 8 Свойства поиска в глубину
Времена обнаружения и окончания обработки

Свойства поиска в глубинуВремена обнаружения и окончания обработки вершин образуют правильную

вершин образуют правильную скобочную структуру.

1 2 3 4

5 6 7 8 9 10 (s(z(y(x x)y)(w w) z) s)

Z

w

S

x

y


Слайд 9 Теорема
При поиске в глубину в графе G =

ТеоремаПри поиске в глубину в графе G = (V, E) для

(V, E) для любых двух вершин u и v

выполняется одно из следующих утверждений:

Отрезки [d[u],f[u]] и [d[v],f[v]] не пересекаются.

Отрезок [d[u],f[u]] целиком содержится внутри отрезка [d[v],f[v]] и u есть потомок v в дереве поиска в глубину.

Отрезок [d[v],f[v]] целиком содержится внутри отрезка [d[u],f[u]] и v есть потомок u в дереве поиска в глубину.

Слайд 10 Поиск в глубину в ориентированном графе
v2
v5
v1
v7
v6
v3
v4
v8

Поиск в глубину в ориентированном графеv2v5v1v7v6v3v4v8

Слайд 11 Поиск в глубину в ориентированном графе G разбивает

Поиск в глубину в ориентированном графе G разбивает множество его ребер

множество его ребер на четыре класса.

1) Древесные ребра, идущие

к новым узлам в процессе поиска.
2) Прямые ребра, идущие от предков к подлинным потомкам, но не являющиеся древесными ребрами.
3) Обратные ребра, идущие от потомков к предкам (возможно, из узла в себя).
4) Поперечные ребра, соединяющие узлы, которые не являются ни предками, ни потомками друг друга.


Слайд 12 Решение задачи топологической сортировки методом поиска в глубину
Топологическая_сортировка

Решение задачи топологической сортировки методом поиска в глубинуТопологическая_сортировка (u){  	цвет [u]

(u)
{
  цвет [u] ← серый;
для  v 

смежные(u) выполнить
{     если (цвет[v] = белый) то
{
Топологическая_сортировка(v);
}
}
цвет[u] ← чёрный;
Поместить u в начало списка;
}


Слайд 13 Пример
Трусы
Носки
Штаны
Ремень
Ботинки
Рубашка
Галстук
Пиджак
Часы
Пиджак
Ремень
Ботинки
Штаны
Трусы
Носки
Галстук
Рубашка
Часы

ПримерТрусыНоскиШтаныРеменьБотинкиРубашкаГалстукПиджакЧасыПиджакРеменьБотинкиШтаныТрусыНоскиГалстукРубашкаЧасы

Слайд 14 Поиск компонент связности в графе
Поиск (u, n)
{
  цвет

Поиск компонент связности в графеПоиск (u, n){  	цвет [u] ← серый;

[u] ← серый;
C[u] ← n; //

номер компоненты связности
для  v  смежные(u) выполнить
{     если (цвет[v] = белый) то
Поиск(v, n);
}
цвет[u] ← чёрный;
}
Поиск_в_графе()
{
  для u  V выполнить
   цвет [u] ← белый;
nk ← 0;
для u  V выполнить
    если (цвет [u] = белый) то
{
nk++;
Поиск(u, nk);
}
}


Слайд 15 Метод поиска в ширину (BFS, Breadth-first search)
Пусть

Метод поиска в ширину (BFS, Breadth-first search) Пусть задан граф G

задан граф G = (V, E) и некоторая начальная

вершина s.
Алгоритм поиска в ширину перечисляет все достижимые из s вершины в порядке возрастания расстояния от s. Расстоянием считается число ребер кратчайшего пути.
Время работы алгоритма - O(|V|+ |E|) .
Пусть в начальный момент времени все вершины окрашены в белый цвет.
Вершину s окрасим в серый цвет и припишем расстояние 0. Смежные с ней вершины окрасим в серый цвет, припишем им расстояние 1, их предок - s. Окрасим вершину s в черный цвет.
На шаге n поочередно рассматриваем белые вершины, смежные с вершинами с пометками n -1, и каждую из них раскрашиваем в серый цвет, приписываем им предка и расстояние n. После этого вершины с расстоянием n-1 окрашиваются в черный цвет.


Слайд 16 Алгоритм
Инициализация
для ( u  (V\{s}) выполнить
{  цвет[u]

Алгоритм Инициализациядля ( u  (V\{s}) выполнить{  цвет[u] ← белый; предок[u]←

← белый;
предок[u]← NULL;
d[u]← ∞;
}
d[s]←

0;
предок[s]← NULL;
put (s, Q);




Слайд 17 пока (Q ≠ ) выполнить
{
u ← first (Q);
для

пока (Q ≠ ) выполнить{		u ← first (Q);		для ( v 

( v  смежные[u])выполнить
{   если (цвет[v]= белый) то
{
цвет

[v] ← серый;
предок[v]← u;
d[v]← d[u]+1;
put(v,Q);
}
}
get(Q);
цвет[u] ← черный;
}



Слайд 18 Использование очереди
В качестве промежуточной структуры хранения при обходе

Использование очередиВ качестве промежуточной структуры хранения при обходе в ширину будем

в ширину будем
использовать очередь.
1
2
3
4
6
7
5
8
Граф:
1
Можно также получить дерево обхода

в ширину, если отмечать каждую прямую дугу.

1

1

2

1

1

4

5

5

2

3

4

5

6

7

8

4

2

3

5

7

6

8


  • Имя файла: metod-poiska-v-glubinu.pptx
  • Количество просмотров: 108
  • Количество скачиваний: 0