- •Структура и алгоритмы обработки данных
- •Понятие алгоритма и структуры данных.
- •Анализ сложности и эффективности алгоритмов и структур данных.
- •Данные числовых типов. Данные целочисленного типа. Данные вещественного типа.
- •Данные числовых типов. Операции над данными числовых типов. Данные символьного типа.
- •Данные логического типа. Данные типа указатель.
- •Линейные структуры данных. Массив.
- •Линейные структуры данных. Строка.
- •Линейные структуры данных. Запись.
- •Линейные структуры данных. Множество.
- •Линейные структуры данных. Таблица.
- •Линейные структуры данных. Линейные списки. Циклические списки.
- •Линейные структуры данных. Разреженные матрицы.
- •Линейные структуры данных. Стек.
- •Линейные структуры данных. Очередь.
- •Линейные структуры данных. Дек.
- •Нелинейные структуры данных. Мультисписки. Слоенные списки.
- •Нелинейные структуры данных. Графы. Спецификация.
- •Нелинейные структуры данных. Графы. Реализация.
- •Нелинейные структуры данных. Деревья. Общие понятия.
- •Нелинейные структуры данных. Деревья. Обходы деревьев.
- •Нелинейные структуры данных. Деревья. Спецификация двоичных деревьев. Реализация. Основные операции.
- •Файлы. Организация.
- •Файлы. В-деревья. Представление файлов в-деревьями.
- •Файлы. В-деревья. Основные операции.
- •Файлы. В-деревья. Общая оценка в-деревьев.
- •Методы разработки алгоритмов. Метод декомпозиции. Динамическое программирование.
- •Методы разработки алгоритмов. Поиск с возвратом. Методы ветвей и границ.
- •Алгоритмы поиска. Поиск в линейных структурах.
- •Алгоритмы поиска. Хеширование данных.
- •Алгоритмы поиска. Использование деревьев в задачах поиска.
- •Алгоритмы поиска. Поиск в тексте.
- •Алгоритмы кодирования (сжатия) данных.
- •Алгоритмы сортировки. Сортировка подсчетом. Сортировка простым включением.
- •Алгоритмы сортировки. Сортировка методом Шелла. Сортировка простым извлечением.
- •Алгоритмы сортировки. Древесная сортировка. Сортировка методом пузырька.
- •Алгоритмы сортировки. Быстрая сортировка (Хоара). Сортировка слиянием.
- •Алгоритмы сортировки. Сортировка распределением. Сравнение алгоритмов внутренней сортировки.
- •Алгоритмы обхода графа. Поиск в глубину.
- •Алгоритмы обхода графа. Поиск в ширину (волновой алгоритм).
Алгоритмы обхода графа. Поиск в ширину (волновой алгоритм).
При решении многих задач, касающихся графов, необходимы эффективные методы систематического обхода вершин и ребер графов. К таким методам относятся:
– поиск в глубину;
– поиск в ширину.
Поиск в ширину (волновой алгоритм)
Этот алгоритм поиска в графе также называют волновым алгоритмом из-за того, что обход графа идет по принципу распространения волны. Волна растекается равномерно во все стороны с одинаковой скоростью. На i-м шаге будут помечены все вершины, достижимые за i ходов, если ходом считать переход из одной вершины в другую.
Метод поиска в ширину получается из программы поиска в глубину, если заменить стек возврата на очередь. Эта простая замена модифицирует порядок обхода вершин так, что обход идет равномерно во все стороны, а не вглубь как при поиске в глубину.
Здесь используются те же структуры Graph и Visited, что и в алгоритме поиска в глубину.
Поиск в ширину для полного обхода графа с n вершинами и m дугами требует столько же времени, как и поиск в глубину, т. е. времени порядка O(max(n, m)). Поскольку обычно m ≥ n, то получается O(m).