Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Недзвецкий.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
589.31 Кб
Скачать

Федеральное агентство связи

Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный университет

телекоммуникаций им. проф. М.А. Бонч-Бруевича»

Архангельский колледж телекоммуникаций (филиал) федерального государственного образовательного бюджетного учреждения высшего профессионального образования «Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М.А. Бонч-Бруевича»

КУРСОВОЙ ПРОЕКТ

НА ТЕМУ

ЗАДАЧИ НА ГРАФАХ

Л221. 13КП01. 016 ПЗ

обозначение документа

Учебная дисциплина Математические

методы

Студент В-01 15.04.2013 И.В. Недзвецкий

группа подпись дата И. О. Ф

Преподаватель Ю.С. Маломан

подпись дата И. О. Ф

Архангельск 2013

Содержание

Введение 4

1 Теоретическая часть 6

1.1 Способы задания графа 7

1.2 Алгоритм Диница 8

1.3 Поиск блокирующего потока 8

1.4 Асимптотика 9

2 Постановка задачи 10

3 Решение задачи аналитическим методом 11

4 Создание приложения для решения задачи 15

4.1 Описание алгоритма 15

4.2 Разработка программы 17

4.3 Тестирование программы 17

4.4 Руководство пользователя 18

Заключение 21

Список использованных источников 22

Введение

Начало теории графов как математической дисциплины было положено Эйлером в его рассуждение о Кенигсбергских мостах. Однако статья Эйлера 1736 года была единственной в течение почти ста лет. Интерес к проблемам теории графов возродился около середины прошлого столетия и был сосредоточен главным образом в Англии. Имелось много причин для такого оживления изучения графов. Естественные науки оказали свое влияние на это благодаря исследованиям электрических цепей, моделей кристаллов и структур молекул.

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

На практике часто возникает проблема определения максимальной проводимости некоторой реальной сети: сети транспортной, сети ЭВМ, других. Иногда нужно определить самый дешёвый поток и т.д. Все эти и многие другие задачи решаются с помощью алгоритмов, которые работают на сетях. Так, алгоритм о максимальном потоке ищет максимально возможную пропускную способность сети, алгоритм минимальной стоимости – самый дешёвый поток.

Задача о максимальном потоке в сети изучается уже более 60 лет. Интерес к ней подогревается огромной практической значимостью этой проблемы. Исследования данной задачи проводятся во множестве крупнейших университетов мира. 60 лет назад, задача о максимальном потоке решалась симплекс методом линейного программирования, что было крайне не эффективно. Л. Р. Фордом и Д. Р. Фалкерсоном предложили рассматривать для решения этой задачи ориентированную сеть и искать решение с помощью итерационного алгоритма. В течение 20 лет, все передовые достижения в исследовании данной задачи базировались на их методе. В 1970 наш соотечественник, Диниц, предложил решать задачу с использованием вспомогательных бесконтурных сетей и псевдо максимальных потоков, что намного увеличило быстродействие разрабатываемых алгоритмов. А в 1974 Карзанов улучшил метод Диница, введя такое понятие как предпоток.

Задача о максимальном потоке является классической и имеет множество применений. Напомню постановку проблемы. Дан взвешенный ориентированный граф с неотрицательными весами (пропускными способностями). Выделены две вершины: исток и сток такие, что любая другая вершина лежит на пути из истока в сток. Потоком назовем функцию с такими свойствами:

1) Поток по ребру не может быть больше его (ребра) пропускной способности;

2) Антисимметричность;

3) Для каждой вершины (кроме истока и стока), количество входящего потока равно количеству исходящего потока. То есть, алгебраическая сумма потоков для каждой вершины (кроме истока и стока) равна нулю.

Задача заключается в нахождении такого множества потоков по дугам, чтобы их сумма была максимальной.

1 Теоретическая часть

Графом G(V,E) называется совокупность двух множеств – непустого множества V (множества вершин) и множества E двухэлементных подмножеств множества V (E – множество ребер).

Ориентированным называется граф, в котором множество упорядоченных пар вершин вида (x, y), где x называется началом, а y – концом дуги. Дуга – ребро ориентированного графа. Вершина Х называется инцидентной ребру E, если ребро соединяет эту вершину с какой-либо другой вершиной. Вершины называются смежными, если существует ребро, их соединяющее.

Транспортной сетью называется связный ориентированный граф G(V, E) без петель, каждой дуге которого поставлено в соответствие некоторое неотрицательное число C, называемое пропускной способностью дуги, и существует:

1) ровно одна вершина S, в которую не заходит ни одна дуга, называемая источником или началом сети;

2) ровно одна вершина T, из которой не выходит ни одной дуги; эта вершина называется стоком или концом сети.

Потоком сети называется неотрицательная функция f(1) такая, что f(e) меньше или равно c(e). (Поток не может превышать пропускную способность дуги.)

Дуга называется насыщенной потоком f, если (Поток называется полным, если содержит насыщенную дугу f(e)=c(e).)

Разрезом L сети G(V,E) называется множество насыщенных дуг, отделяющих источник S от стока T.

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

с пропускной способностью ;

с пропускной способностью .

Стоит отметить, что при таком определении в остаточной сети могут появляться кратные рёбра: если в исходной сети было как ребро , так и .

Остаточное ребро можно интуитивно понимать как меру того, насколько ещё можно увеличить поток вдоль какого-то ребра. В самом деле, если по ребру с пропускной способностью протекает поток , то потенциально по нему можно пропустить ещё единиц потока, а в обратную сторону можно пропустить до единиц потока, что будет означать отмену потока в первоначальном направлении.

Блокирующим потоком в данной сети называется такой поток, что любой путь из истока в сток содержит насыщенное этим потоком ребро. Иными словами, в данной сети не найдётся такого пути из истока в сток, вдоль которого можно беспрепятственно увеличить поток.

Блокирующий поток не обязательно максимален. Теорема Форда-Фалкерсона говорит о том, что поток будет максимальным тогда и только тогда, когда в остаточной сети не найдётся пути из истока в сток; в блокирующем же потоке ничего не утверждается о существовании пути по рёбрам, появляющимся в остаточной сети.

Слоистая сеть для данной сети строится следующим образом. Сначала определяются длины кратчайших путей из истока до всех остальных вершин; назовём уровнем вершины её расстояние от истока. Тогда в слоистую сеть включают все те рёбра исходной сети, которые ведут с одного уровня на какой-либо другой, более поздний, уровень, т.е. (почему в этом случае разница расстояний не может превосходить единицы, следует из свойства кратчайших расстояний). Таким образом, удаляются все рёбра, расположенные целиком внутри уровней, а также рёбра, ведущие назад, к предыдущим уровням.

Очевидно, слоистая сеть ациклична. Кроме того, любой путь из исток – сток в слоистой сети является кратчайшим путём в исходной сети.

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