🗊Презентация Метод поиска в глубину. (Лекция 5)

Категория: Математика
Нажмите для полного просмотра!
Метод поиска в глубину. (Лекция 5), слайд №1Метод поиска в глубину. (Лекция 5), слайд №2Метод поиска в глубину. (Лекция 5), слайд №3Метод поиска в глубину. (Лекция 5), слайд №4Метод поиска в глубину. (Лекция 5), слайд №5Метод поиска в глубину. (Лекция 5), слайд №6Метод поиска в глубину. (Лекция 5), слайд №7Метод поиска в глубину. (Лекция 5), слайд №8Метод поиска в глубину. (Лекция 5), слайд №9Метод поиска в глубину. (Лекция 5), слайд №10Метод поиска в глубину. (Лекция 5), слайд №11Метод поиска в глубину. (Лекция 5), слайд №12Метод поиска в глубину. (Лекция 5), слайд №13Метод поиска в глубину. (Лекция 5), слайд №14Метод поиска в глубину. (Лекция 5), слайд №15Метод поиска в глубину. (Лекция 5), слайд №16Метод поиска в глубину. (Лекция 5), слайд №17Метод поиска в глубину. (Лекция 5), слайд №18Метод поиска в глубину. (Лекция 5), слайд №19Метод поиска в глубину. (Лекция 5), слайд №20Метод поиска в глубину. (Лекция 5), слайд №21

Содержание

Вы можете ознакомиться и скачать презентацию на тему Метод поиска в глубину. (Лекция 5). Доклад-сообщение содержит 21 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Метод поиска в глубину
Лекция 5
Описание слайда:
Метод поиска в глубину Лекция 5

Слайд 2





Поиск в глубину (Depth-first search, DFS)
Пусть задан  граф G = (V, E).
Алгоритм поиска описывается следующим образом: 
для каждой непройденной вершины необходимо найти все непройденные смежные вершины и повторить поиск для них.
Пусть в начальный момент времени все вершины  окрашены в белый цвет. 
Из множества всех белых вершин выберем любую вершину: v1. 
Выполним для нее процедуру Поиск(v1). 
Перекрасим ее в черный цвет. 
Повторяем шаги 1-3 до тех пор, пока множество белых вершин не пусто.
Описание слайда:
Поиск в глубину (Depth-first search, DFS) Пусть задан граф G = (V, E). Алгоритм поиска описывается следующим образом: для каждой непройденной вершины необходимо найти все непройденные смежные вершины и повторить поиск для них. Пусть в начальный момент времени все вершины окрашены в белый цвет. Из множества всех белых вершин выберем любую вершину: v1. Выполним для нее процедуру Поиск(v1). Перекрасим ее в черный цвет. Повторяем шаги 1-3 до тех пор, пока множество белых вершин не пусто.

Слайд 3





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

Слайд 4





Процедура Поиск_в_графе
Поиск_в_графе()
{
 	для u  V выполнить
 { 
  	цвет [u]  белый;
   	отец [u]  NULL;
	}
 time  0;
 для u  V выполнить 
   	если (цвет [u] = белый) то
	 	  	Поиск(u);
}
Описание слайда:
Процедура Поиск_в_графе Поиск_в_графе() {   для u  V выполнить {    цвет [u]  белый; отец [u]  NULL; } time  0; для u  V выполнить   если (цвет [u] = белый) то Поиск(u); }

Слайд 5





Анализ
Общее число операций при выполнении Поиск_в_графе:
			O(|V|)
Общее число операций при выполнении Поиск(u):
Цикл выполняется |смежные[v]| раз.
			∑ |смежные[v]| = O(|E|)
Общее число операций:  O(|V|+|E|)
Описание слайда:
Анализ Общее число операций при выполнении Поиск_в_графе: O(|V|) Общее число операций при выполнении Поиск(u): Цикл выполняется |смежные[v]| раз. ∑ |смежные[v]| = O(|E|) Общее число операций: O(|V|+|E|)

Слайд 6





Поиск в глубину в неориентированном графе
Описание слайда:
Поиск в глубину в неориентированном графе

Слайд 7





Глубинный остовный лес
Поиск в глубину на неориентированном графе G= (V, Е) разбивает ребра, составляющие Е, на два множества Т и В.
 Ребро (v, w) помещается в множество Т, если узел w не посещался до того момента, когда мы, рассматривая ребро (и, w), оказались в узле v. В противном случае ребро (v, w) помещается в множество В.
Ребра из Т будем называть древесными, а из В — обратными. 
Подграф (V, Т) представляет собой неориентированный лес, называемый остовным лесом для G, построенным поиском в глубину, или, короче, глубинным остовным лесом для G.
 Если этот лес состоит из единственного дерева, (V, Т) будем называть по аналогии глубинным остовным деревом. 
Заметим, что если граф связен, то глубинный остовный лес будет деревом. 
Узел, с которого начинался поиск, считается корнем соответствующего дерева.
Описание слайда:
Глубинный остовный лес Поиск в глубину на неориентированном графе G= (V, Е) разбивает ребра, составляющие Е, на два множества Т и В. Ребро (v, w) помещается в множество Т, если узел w не посещался до того момента, когда мы, рассматривая ребро (и, w), оказались в узле v. В противном случае ребро (v, w) помещается в множество В. Ребра из Т будем называть древесными, а из В — обратными. Подграф (V, Т) представляет собой неориентированный лес, называемый остовным лесом для G, построенным поиском в глубину, или, короче, глубинным остовным лесом для G. Если этот лес состоит из единственного дерева, (V, Т) будем называть по аналогии глубинным остовным деревом. Заметим, что если граф связен, то глубинный остовный лес будет деревом. Узел, с которого начинался поиск, считается корнем соответствующего дерева.

Слайд 8





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

Слайд 9





Теорема
При поиске в глубину в графе G = (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 в дереве поиска в глубину.
Описание слайда:
Теорема При поиске в глубину в графе G = (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





Поиск в глубину в ориентированном графе
Описание слайда:
Поиск в глубину в ориентированном графе

Слайд 11





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

Слайд 12





Решение задачи топологической сортировки методом поиска в глубину
Топологическая_сортировка (u)
{
   цвет [u]  серый; 
	 для  v  смежные(u)  выполнить
	 {
    если (цвет[v] = белый) то
      { 
	       Топологическая_сортировка(v);
	    }
    }
    цвет[u]  чёрный; 
    Поместить u в начало списка;
}
Описание слайда:
Решение задачи топологической сортировки методом поиска в глубину Топологическая_сортировка (u) {   цвет [u]  серый; для  v  смежные(u) выполнить {   если (цвет[v] = белый) то { Топологическая_сортировка(v); } } цвет[u]  чёрный; Поместить u в начало списка; }

Слайд 13





Пример
Описание слайда:
Пример

Слайд 14





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

Слайд 15





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

Слайд 16





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

Слайд 17





Алгоритм 
Инициализация
для ( u  (V\{s}) выполнить
{ 
 цвет[u] ← белый;
   предок[u]← NULL;
   d[u]← ∞; 
}
d[s]← 0;
предок[s]← NULL;
put (s, Q);
Описание слайда:
Алгоритм Инициализация для ( u  (V\{s}) выполнить {  цвет[u] ← белый; предок[u]← NULL; d[u]← ∞; } d[s]← 0; предок[s]← NULL; put (s, Q);

Слайд 18





пока (Q ≠ ) выполнить
пока (Q ≠ ) выполнить
{
		u ← first (Q);
		для ( v  смежные[u])выполнить
		{ 
  	   если (цвет[v]= белый) то
		   {
			цвет [v] ← серый;
			предок[v]← u;
			d[v]← d[u]+1;
			put(v,Q);
		   }
		}
		get(Q);
		цвет[u] ← черный;
}
Описание слайда:
пока (Q ≠ ) выполнить пока (Q ≠ ) выполнить { u ← first (Q); для ( v  смежные[u])выполнить {   если (цвет[v]= белый) то { цвет [v] ← серый; предок[v]← u; d[v]← d[u]+1; put(v,Q); } } get(Q); цвет[u] ← черный; }

Слайд 19


Метод поиска в глубину. (Лекция 5), слайд №19
Описание слайда:

Слайд 20





Нахождение кратчайшего пути в лабиринте
Описание слайда:
Нахождение кратчайшего пути в лабиринте

Слайд 21





Пример построения остовных деревьев
Описание слайда:
Пример построения остовных деревьев



Похожие презентации
Mypresentation.ru
Загрузить презентацию