Автор работы: Пользователь скрыл имя, 27 Ноября 2013 в 21:51, реферат
Часто бывает полезно и наглядно изображать некоторую ситуацию в виде рисунка, состоящего из точек (вершин), представляющих основные элементы ситуации, и линий (ребер), соединяющих определенные пары этих вершин и представляющих связи между ними. Такие рисунки известны под общим названием – графы.
Введение . . . . . . . . . . . . . . . . . . . . 3
Алгоритмы на графах . . . . . . . . . . . . . . . . 3
Методы систематического обхода вершин графа . . . . . 4
Алгоритм поиска в глубину
Алгоритм поиска в ширину
Остовное дерево наименьшего веса. Задача Штейнера . . 7
Алгоритм Прима
Алгоритм Краскала
Задача плоской укладки . . . . . . . . . . . . . . 10
Гамма-алгоритм
Задача раскраски графа . . . . . . . . . . . . . . 13
Метод неявного перебора
Приближенный алгоритм
Нахождение кратчайших путей . . . . . . . . . . . . 15
Алгоритм Дейкстры
Алгоритм Флойда
Эйлеровы графы . . . . . . . . . . . . . . . . . 18
Задача о наибольшем потоке . . . . . . . . . . . . 19
Алгоритм Форда-Фалкерсона
Заключение . . . . . . . . . . . . . . . . . . . 20
Построим граф G: каждой работе соответствует определенная вершина графа, а ребро () существует в графе тогда и только тогда, когда для выполнения i-й и j-й работ требуется хотя бы один общий ресурс, т. е. когда Si∩Sj≠Ø. Это означает, что i-я и j-я работы не могут выполняться одновременно. Раскраска графа G определяет тогда некоторое распределение ресурсов (по выполняемым работам), причем такое, что работы, соответствующие вершинам одного цвета, выполняются одновременно. Наилучшее использование ресурсов (т. е. выполнение всех n работ за наименьшее время) достигается при оптимальной раскраске вершин графа G.
Естественно, что круг применения не ограничен приведенными примерами.
Нахождение кратчайших путей
В последнее
время активно развивается
Пусть имеется граф G. Некоторая его вершина обозначена как вершина 1. Необходимо найти минимальные пути от вершины 1 до каждой из вершин графа. Минимальным путём будем называть путь с минимальной суммой цен вдоль пути. Ценой назовем неотрицательное число, являющееся весом ребра.
Существуют три наиболее эффективных алгоритма нахождения кратчайшего пути: алгоритм Дейкстры (используется для нахождения оптимального маршрута между двумя вершинами), алгоритм Флойда (для нахождения оптимального маршрута между всеми парами вершин) и алгоритм Йена (для нахождения k-оптимальных маршрутов между двумя вершинами)
Алгоритм Дейкстры
Идея основывается
на следующем очевидном
Пусть построен минимальный путь из вершины A в вершину B. И пусть вершина B связана с некоторым количеством вершин i. Обозначим через Ci – цену пути из вершины B в вершину i. Выберем из Ci минимальную величину. Тогда минимальное продолжение пути из точки B пойдёт через выбранную величину.
И из него вытекает следствие. Пусть есть множество вершин через которые уже проходят минимальные пути. Такое множество гарантированно есть, это вершина 1. Утверждение сформулированное выше даёт возможность добавлять к уже существующему множеству вершин (будем далее называть их выделенными) еще одну вершину, а так как в графе количество вершин конечно, то за конечное количество шагов все вершины графа окажутся выделенными, а это и будет решением.
Сущность алгоритма Дейкстры и заключается в процедуре добавления еще одной вершины к множеству выделенных. Эта процедура состоит из двух шагов:
Схема алгоритма:
Алгоритм Флойда
Пусть дан непустой взвешенный граф с произвольными весами ребер. Требуется найти кратчайшие длины путей между всеми парами вершин графа, если в графе нет циклов отрицательной длины или обнаружить наличие таких циклов.
Построим матрицу размерности |V| x |V|, элементы которой (обозначим из v) определяются по правилу:
= 0;
= Вес (, ), где i<>j, если в графе существует ребро (дуга) (, );
= бесконечность , где i<>j, если нет ребра (дуги) (, ).
Схема алгоритма:
+1=min{, + },
где i<>j; =0.
По завершению работы данного алгоритма, элементы матрицы равны длинам кратчайших путей между соответствующими вершинами.
Практическое применение алгоритмов решения задачи
Нахождение кратчайшего пути – жизненно необходимо и используется практически везде, начиная от нахождения оптимального маршрута между двумя объектами на местности (например, кратчайший путь от дома до университета), в системах автопилота, для нахождения оптимального маршрута при перевозках, коммутации информационного пакета в Internet и т.п.
Эйлеровы графы
Решение Эйлером задачи о Кёнигсбергских мостах привела к первой опубликованной работе по теории графов. Задачу об обходе мостов можно обобщить и получить следующую задачу теории графов: можно ли найти в данном графе G цикл, содержащий все вершины и все рёбра? Граф, в котором это возможно, называется эйлеровым. Таким образом, эйлеров граф имеет эйлеров цикл – замкнутую цепь, содержащую все вершины и все рёбра.
Алгоритм нахождения эйлерова цикла
Пусть G(X, E) — связный неорентированный граф, не имеющий вершин нечетной степени. Назовем мостом такое ребро, удаление которого из связного графа разбивает этот граф на две компоненты связности, имеющие хотя бы по одному ребру.
1) Пусть a — произвольная вершина графа G. Возьмем любое ребро e1=(a,
x1) , инцидентное вершине a, и положим m = {e1}.
2) Рассмотрим подграф G1(X, E\m1). Возьмем в качестве e2 ребро, инци-
дентное вершине x1 и неинцидентное вершине a, которое также не
является мостом в подграфе G1 (если такое ребро e2 существует).
Получим простую цепь m2 = {e1, e2}.
3) Пусть e2 = (x1, x2), x ¹ a. Рассмотрим подграф G2(X, E\m2) и удалим из
него все изолированные вершины. В полученном подграфе выберем
ребро e3ÎE\m2, инцидентное вершине a, которое не является мостом в
подграфе (если такое ребро e3 существует!). Получим простую цепь
m3 = {e1, e2, e3}.
Продолжая указанный процесс, мы через конечное число шагов получим эйлеров цикл m = {e1, e2, …, en}, где n — число ребер графа G(X, E).
Практическое применение алгоритма решения задачи
Известно, что эйлеровы графы получили широкое распространение и популярность благодаря тому, что многие головоломки и задачи можно решить с использованием знаний теории графов. Задачи на отыскание путей через лабиринты, близкие к задачам на эйлеровы графы, находят применение в современной психологии и при конструировании вычислительных машин.
Задача о наибольшем потоке
Если мы припишем каждой дуге ориентированного графа поток некоторого вещества, то граф становится удобной моделью при исследовании целого ряда проблем в транспорте, связи и других областях, связанных с действительным или воображаемым движением товаров, информации или людей. И очень часто встает вопрос о передвижении чего-либо в нужный пункт назначения с наибольшей рациональностью. Отсюда возникает важная задача в теории графов, называющаяся задачей о наибольшем потоке.
Как ( т.е. по каким маршрутам) послать максимально возможное количество грузов из начального пункта в конечный пункт, если пропускная способность путей между пунктами ограничена?
Два наиболее популярных алгоритма — алгоритм Форда-Фалкерсона и алгоритм "проталкивания предпотока".
Алгоритм Форда-Фалкерсона
Идея алгоритма заключается в следующем. Изначально величине потока присваивается значение 0: f(u,v) = 0 для всех . Затем величина потока итеративно увеличивается посредством поиска увеличивающего пути (путь от источника s к стоку t, вдоль которого можно послать больший поток). Процесс повторяется, пока можно найти увеличивающий путь.
Схема алгоритма:
Важно, что алгоритм не конкретизирует, какой именно путь мы ищем на шаге 2 или как мы это делаем. По этой причине алгоритм гарантированно сходится только для целых пропускных способностей, но даже для них при больших значениях пропускных способностей он может работать очень долго. Если пропускные способности вещественны, алгоритм может работать бесконечно долго, не сходясь к оптимальному решению. Это является основной сложностью данного алгоритма.
Применение алгоритма решения задачи
Задача о
максимальном потоке в сети изучается
уже более 60 лет. Интерес к ней
подогревается огромной практической
значимостью этой проблемы. Методы
решения задачи применяются на транспортных,
коммуникационных, электрических сетях,
при моделировании различных
процессов физики и химии, в некоторых
операциях над матрицами, для
решения родственных задач
ЗАКЛЮЧЕНИЕ
В настоящее время теория графов охватывает большой материал и активно развивается. И прежде всего это развитие обусловлено прогрессом вычислительной техники, необходимостью создания средств обработки и передачи информации, а также представления различных моделей на компьютерах, являющихся по своей природе конечными структурами. Поэтому, учитывая сегодняшнюю тенденцию развития вычислительной техники, можно судить, что этот предмет еще недостаточно изучен и представляет собой огромное поле для исследований и интересных открытий.