Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задание на лабораторную работу

Лабораторная работа

Систематический обход графа методами «в глубину» и «в ширину»

Цель работы: получить навыки реализации алгоритмов обхода графов.

6.1. Используемый теоретический материал.

Проанализируем два базовых алгоритма, которые используются как основа для построения многих других. Это «поиск в ширину» и «поиск в глубину».

При разборе примеров применения алгоритмов будем использовать следующие наглядные обозначения. Будем считать, что до начала работы алгоритма все вершины белые. Если вершина в ходе работы алгоритма встречается первый раз – она изменяет цвет на серый. Если вершина обработана и удалена из очереди – она становится чёрной.

Для заданного графа G = (V, E) и фиксированной начальной вершины s алгоритм «поиска в ширину» перечисляет все достижимые из s (если проходить по рёбрам) вершины в порядке возрастания расстояния от s.

Расстоянием считается длина (число рёбер) кратчайшего пути. В процессе поиска из графа выделяется часть, называемая «деревом поиска в ширину» с корнем s. Она содержит все достижимые из s вершины (и только их). Для каждой из них путь из корня в дереве поиска будет одним из кратчайших путей (из начальной вершины) в графе. Алгоритм применим и к ориентированным и к неориентированным графам.

Реализация алгоритма под названием BFS использует представление графа G = (V, E) списками смежных вершин. Для каждой вершины u графа дополнительно хранятся её цвет и её предшественник – p (u). Кроме того, хранится d (u) – расстояние от s до u.

Вторым базовым алгоритмом для графов является «поиск в глубину». Алгоритм поиска в глубину перечисляет вершины начиная от начальной и уходя по рёбрам «вглубь» графа. Дойдя до тупиковой вершины, из которой нет пути по непройденному ребру, надо возвратиться и искать другой путь.

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

Если после этого остаются необнаруженные вершины, можно выбрать одну из них и повторять процесс, пока не будут перечислены все вершины графа.

Алгоритм «поиска в глубину» также хранит цвета вершин. Кроме того, некоторые реализации «поиска в глубину» ставят на вершинах метки времени. Каждая вершина имеет две метки: в d (v) записано, когда эта вершина была обнаружена (и сделана серой), а в f (v) – когда была закончена обработка списка смежных с v вершин (и v стала чёрной). Эти метки используются во многих алгоритмах на графах и полезны для анализа свойств «поиска в глубину».

Реализация «поиска в глубину» под названием DFS использует метки времени.

Задание на лабораторную работу

Написать программу, реализующую алгоритмы обхода графа «в глубину» и «в ширину».

Варианты заданий

Содержание отчета

Для защиты лабораторной работы необходимо представить отчет,

содержащий код программы и результат работы программы для

выполненного варианта.

<== предыдущая лекция | следующая лекция ==>
 | Создание собственного рисунка
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал