Уровень алгоритма

Поиск в глубину (DFS): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
[непроверенная версия][досмотренная версия]
(Общее описание алгоритма)
 
 
(не показано 9 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Свойства и структура алгоритмов ==
+
{{level-a}}
 +
 
 +
== Свойства и структура алгоритма ==
 
=== Общее описание алгоритма ===
 
=== Общее описание алгоритма ===
  
Алгоритм поиска в глубину<ref>Tarjan, Robert. “Depth-First Search and Linear Graph Algorithms.” SIAM Journal on Computing 1, no. 2 (1972): 146–60.</ref> (англ. Depth-First Search) является составной частью многих графовых алгоритмов ([[Алгоритм Тарьяна поиска компонент сильной связности|поиск компонент сильной связности]] и [[Алгоритм Тарьяна поиска компонент двусвязности|двусвязности]], [[Алгоритм Тарьяна поиска «мостов» в графе|мостов]], [[Алгоритм Гопкрофта-Карпа|решение задачи о назначениях]], проверка планарности графа, [[Связность в графах|определение вершинной и рёберной связности]]). Результатом поиска в глубину может являться, например, дерево обхода и нумерация вершин (в прямом или обратном порядке). Сложность алгоритма <math>O(m)</math>.
+
'''Поиск в глубину'''<ref>Tarjan, Robert. “Depth-First Search and Linear Graph Algorithms.” SIAM Journal on Computing 1, no. 2 (1972): 146–60.</ref> (англ. Depth-First Search) является составной частью многих графовых алгоритмов ([[Алгоритм Тарьяна поиска компонент сильной связности|поиск компонент сильной связности]] и [[Алгоритм Тарьяна поиска компонент двусвязности|двусвязности]], [[Алгоритм Тарьяна поиска «мостов» в графе|мостов]], [[Алгоритм Гопкрофта-Карпа|решение задачи о назначениях]], проверка планарности графа, [[Связность в графах|определение вершинной и рёберной связности]]). Результатом поиска в глубину может являться, например, дерево обхода и нумерация вершин (в прямом или обратном порядке). Сложность алгоритма <math>O(m)</math>.
  
=== Математическое описание ===
+
=== Математическое описание алгоритма ===
 
=== Вычислительное ядро алгоритма ===
 
=== Вычислительное ядро алгоритма ===
 
=== Макроструктура алгоритма ===
 
=== Макроструктура алгоритма ===
=== Описание схемы реализации последовательного алгоритма ===
+
=== Схема реализации последовательного алгоритма ===
 
=== Последовательная сложность алгоритма ===
 
=== Последовательная сложность алгоритма ===
  
Строка 13: Строка 15:
  
 
=== Информационный граф ===
 
=== Информационный граф ===
=== Описание ресурса параллелизма алгоритма ===
+
=== Ресурс параллелизма алгоритма ===
  
 
Поиск в ширину плохо поддаётся параллелизации; существует мнение, что алгоритм является последовательным по сути.
 
Поиск в ширину плохо поддаётся параллелизации; существует мнение, что алгоритм является последовательным по сути.
  
=== Описание входных и выходных данных ===
+
Реализация поиска в ширину на распределённых графах описана в работах<ref>Cidon, Isreal. “Yet Another Distributed Depth-First-Search Algorithm.” Information Processing Letters 26, no. 6 (January 1988): 301–5. doi:10.1016/0020-0190(88)90187-1.</ref><ref>Tsin, Y H. “Some Remarks on Distributed Depth-First Search.” Information Processing Letters 82, no. 4 (May 2002): 173–78. doi:10.1016/S0020-0190(01)00273-3.</ref>.
=== Свойства алгоритма===
+
 
== Программная реализация алгоритмов ==
+
=== Входные и выходные данные алгоритма ===
 +
=== Свойства алгоритма ===
 +
 
 +
== Программная реализация алгоритма ==
 
=== Особенности реализации последовательного алгоритма ===
 
=== Особенности реализации последовательного алгоритма ===
=== Описание локальности данных и вычислений ===
+
=== Возможные способы и особенности параллельной реализации алгоритма ===
=== Возможные способы и особенности реализации параллельного алгоритма ===
+
=== Результаты прогонов ===
=== Масштабируемость алгоритма и его реализации ===
 
=== Динамические характеристики и эффективность реализации алгоритма ===
 
 
=== Выводы для классов архитектур ===
 
=== Выводы для классов архитектур ===
=== Существующие реализации алгоритма ===
+
 
 
== Литература ==
 
== Литература ==
  
 
<references />
 
<references />
 +
 +
[[Категория:Начатые статьи]]
 +
 +
[[en:Depth-first search (DFS)]]

Текущая версия на 10:19, 7 июля 2022


1 Свойства и структура алгоритма

1.1 Общее описание алгоритма

Поиск в глубину[1] (англ. Depth-First Search) является составной частью многих графовых алгоритмов (поиск компонент сильной связности и двусвязности, мостов, решение задачи о назначениях, проверка планарности графа, определение вершинной и рёберной связности). Результатом поиска в глубину может являться, например, дерево обхода и нумерация вершин (в прямом или обратном порядке). Сложность алгоритма [math]O(m)[/math].

1.2 Математическое описание алгоритма

1.3 Вычислительное ядро алгоритма

1.4 Макроструктура алгоритма

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

Алгоритм выполняет ограниченный объём работы для каждого ребра, поэтому его сложность составляет [math]O(m)[/math].

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

Поиск в ширину плохо поддаётся параллелизации; существует мнение, что алгоритм является последовательным по сути.

Реализация поиска в ширину на распределённых графах описана в работах[2][3].

1.9 Входные и выходные данные алгоритма

1.10 Свойства алгоритма

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Возможные способы и особенности параллельной реализации алгоритма

2.3 Результаты прогонов

2.4 Выводы для классов архитектур

3 Литература

  1. Tarjan, Robert. “Depth-First Search and Linear Graph Algorithms.” SIAM Journal on Computing 1, no. 2 (1972): 146–60.
  2. Cidon, Isreal. “Yet Another Distributed Depth-First-Search Algorithm.” Information Processing Letters 26, no. 6 (January 1988): 301–5. doi:10.1016/0020-0190(88)90187-1.
  3. Tsin, Y H. “Some Remarks on Distributed Depth-First Search.” Information Processing Letters 82, no. 4 (May 2002): 173–78. doi:10.1016/S0020-0190(01)00273-3.