Программа, методические указания и контрольные задания Для студентов-заочников Казань, 2009 г

Вид материалаПрограмма

Содержание


Методические указания к выполнению и оформлению контрольной работы
Пример выполнения контрольной работы
Разрезом сети
Пропускной способностью
Минимальным разрезом
Подобный материал:
1   2   3

Рис. 2
  1. Определим кратчайшее расстояние между вершинами x1 и x8.

На нулевой итерации полагаем L*(x1)= 0 (знак * у метки означает, что рассматриваемая метка постоянная); L(xj) = ∞ (j=2, 3, ..., 8) - все вершины, кроме первой, имеют временные метки.

Первая итерация

Шаг 1. Пусть Г(x1) - множество вершин - последователей вершины x1 . В нашем случае Г(x1) = {x2, x3, x4, x6.} Вычисляем новые временные метки вершин из Г(x1) в соответствии с (1).

L(x2) = min {∞, 2+0} = 2,

L(x3) = min {∞, 1+0} = 1,

L(x4) = min{∞, 6+0} = 6,

L(x6) = min{∞, 9+0} = 9.

Шаг 2. Превращаем временные метки в постоянные:

min L(xj) = min 2≤j≤8 {2, 1, 6,∞, 9, ∞, ∞} = 1.

Вершина x3, как имеющая минимальную временную метку, получает постоянную метку L* (x3) = 1.

Результаты вычислений будем оформлять в виде табл. 3. Причем записывать будем только обновленные метки и помечать их в том столбце, в котором они родились. Кроме того, для каждой итерации в строке под номером итерации будем помещать вершину, отмеченную “звездочкой” на предыдущей итерации.

Таблица 3

Вершины

Итерации




0

1

2

3

4

5

6

7







x1

x3

x2

x5

x4

x7

x6

x1

0*






















x2



2*



















x3



1*



















x4



6




5

4*










x5






2*
















x6



9










6*







x7












5*










x8


















6*





Вторая итерация

Шаг 1. Рассматриваем Г(x3) = {x1, x5}.

Временную метку имеет только вершина x5. Обновляем ее (метку).

L (x5) = min{∞, 1+1} = 2.

Шаг 2. Вычисляем min по всем временным меткам.

min {L(x2), L(x4), L(x5), L(x6), L(x7), L(x8)}= min {2, 6,2, 9, ∞, ∞} =2.

В качестве постоянной можно взять любую из меток L(x2) и L(x5), которые совпадают и равны вычисленному минимуму. Пусть постоянную метку получит, например, вершина x2, т.е.

L*(x2)=2.

Третья итерация

Шаг 1. Г(x2) = {x1, x4, x5}. Вершины x4 и x5 имеют временные метки. Обновляем метки.

L(x4) = min {6, 3+2}= 5,

L(x5) = min {2, 5+2} = 2.

Шаг 2. min {L(x4), L(x5), L(x6), L(x7), L(x8)}= min {5,2, 9, ∞, ∞} =2.

Наименьшую метку имеет вершина x5. Эта метка становится постоянной, т.е.

L*(x5) = 2.

Четвертая итерация

Шаг 1. Г(x5) = {x2, x3, x4, x7}. Временные метки имеют вершины x4 и x7. Обновляем их.

L(x4) = min {5, 2+2} = 4,

L(x7) = min {∞, 3+2} = 5.

Шаг 2. min {L(x4), L(x6), L(x7), L(x8)} = min {4, 9, 5,∞} = 4.

Величина x4 получает постоянную метку L*(x4) = 4.

Пятая итерация

Шаг 1. Г(x4) = {x1, x2, x5, x6}. Временную метку имеет только вершина x6 .

Ее новая метка

L(x6) = min {9, 2+4} = 6.

Шаг 2. min {L(x6), L(x7), L(x8)} = min{6, 5,∞} = 5.

Полагаем L*(x7) = 5.

Шестая итерация

Шаг 1. Г(x7) = {x5, x6, x8}. Временные метки - у вершин x6 и x8. Имеем

L(x6) = min {6, 2+5} = 6,

L(x8) = min {∞, 1+5} = 6.

Шаг 2. min {L(x6), L(x8)}= min {6, 6} = 6.

Любую из меток L(x6), L(x8) можно сделать постоянной. Пусть L*(x6) =6.

Седьмая итерация

Шаг 1. Г(x6) = {x1, x4, x7, x8}. Единственная вершина из Г(x6) с временной меткой - это x8 .

L(x8) = min {6, 2+6} = 6.

Шаг 2. min {L(x8)} = min {6} = 6. Вершина x8 получает постоянную метку L*(x8) = 6.

Процесс расстановки меток закончен. Значение постоянной метки вершины x8 дает кратчайшее расстояние между x1 и x8, которое равно 6.

2)Для нахождения кратчайшего пути между x1 и x8 воспользуемся табл. 1.3. Вершина x8 получила постоянную метку на шестой итерации. Значит, ей предшествует вершина x7. Постоянная метка вершины x7 находится в столбце под номером 4. Значит, ей предшествует вершина x5. И так далее.

Таким образом, кратчайший путь из x1 в x8 S= {x1, x3, x5, x7, x8}.
  1. Построим основное дерево кратчайших путей для данного графа. Говоря другими словами, следует найти связный подграф исходного графа, который не содержал бы циклов, и в котором длина пути от вершины x1 (корня дерева) до каждой из вершин графа была бы наименьшей по сравнению с любым другим путем из x1 до рассматриваемой вершины. Для этого используем строку табл. 3, содержащую последовательность вершин {x1 x3 x2 x5 x4 x7 x6}. Каждую вершину из этой последовательности, начиная с первой, нужно соединить ребром с вершинами, отмеченными в соответствующем столбце символом “*”. Так, в столбце под x1 помеченными являются вершины x3 и x5. Значит, соединяем ребрами x1 с этими вершинами. Следующая ветвь дерева строится уже от вершины x3 до вершины x5. Согласно последовательности, строить дерево продолжаем от вершины x5. От нее должны идти ребра к вершинам x4 и x7 (см. столбец, соответствующий 4-й итерации). На 5-й итерации соединяем ребром вершины x4 и x6. На 6-й итерации проводим ребро от вершины x7 до x8. Последнюю вершину x6 не с чем соединять, так как в последнем столбце нет помеченных вершин. Таким образом, процесс построения дерева завершен.

Соответствующий построенному дереву кратчайших путей граф представлен на рис. 3





Рис. 3

Заметим, что сравнение рис. 2 и 3 подтверждает известную теорему о графах: наименьшее число ребер p, которое нужно удалить из связного графа, чтобы получить дерево, удовлетворяет соотношению

p= N - n + 1,

где N - число ребер исходного графа,

n - число вершин графа.

В нашем случае p = 13 - 8 + 1 = 6, т.е. количество удаляемых ребер графа для получения дерева не может быть меньше шести. Непосредственный подсчет показывает, что в рассматриваемой задаче оно равно шести.


МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ И ОФОРМЛЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ


При выполнении контрольной работы необходимо строго придерживаться указанных ниже правил. Работы, выполненные без соблюдения этих правил не засчитываются и возвращаются студенту для переработки.
  1. Контрольная работа должна быть выполнена в отдельной тетради в клетку чернилами любого цвета, кроме красного. Необходимо оставлять поля шириной 4-5 см для замечаний рецензента.
  2. В заголовке работы на обложке тетради должны быть ясно написаны фамилия студента, его инициалы, учебный номер (шифр), название дисциплины. Здесь же следует указать название учебного заведения, дату отсылки в университет и адрес. В конце работы следует выставить дату её выполения и подпись.
  3. Контрольная работа должна содержать все пункты предлагаемого расчета строго по положенному варианту. Контрольная работа не своего варианта не засчитывается.
  4. Перед самим расчетом надо полностью выписать свои данные и условия к выполняемой работе.
  5. Весь расчет следует излагать подробно и аккуратно, объясняя и мотивируя свои действия по ходу решения, делая необходимые рисунки.
  6. После получения прорецензированной незачтенной работы, студент должен исправить все отмеченные рецензентом ошибки и недочеты и выполнить все рекомендации рецензента.
  7. Если рецензент предлагает внести в решение те или иные исправления или дополнения и прислать их для повторной проверки, то это следует сделать в короткий срок.
  8. В случае незачета работы и отсутствия прямого указания рецензента на то, что студент может ограничиться представлением исправленных решений, вся работа должна быть заново исполнена.
  9. При высылаемых исправлениях должна обязательно находиться прорецензированная работа и рецензия на неё. Поэтому рекомендуется при выполнении контрольной работы оставлять в конце тетради несколько чистых листов для всех дополнений и исправлений в соответствии с указанием рецензента. Вносить исправления в сам текст после её рецензирования запрещается.

ПРИМЕР ВЫПОЛНЕНИЯ КОНТРОЛЬНОЙ РАБОТЫ


Транспортные сети. Построение максимального потока

Основные определения

Двухполюсной транспортной сетью S называется произвольный орграф без петель с множеством вершин X и с множеством дуг U, для которых выполняются следующие условия:

1.Существует одна и только одна вершина s ∈ X, в которую не заходит ни одной дуги. Эта вершина называется источником или входом сети.

2.Существует одна и только одна вершина t ∈ X, из которой не исходит ни одной дуги. Эта вершина называется стоком или выходом сети.

3.На множестве дуг сети U определена неотрицательная функция

С:U→R+ 0, ставящая в соответствие каждой дуге u  U неотрицательное число c(u), называемое пропускной способностью сети.

Потоком в сети S=(X,U) от входа к выходу (или от источника в сток) называется произвольная неотрицательная вещественная функция, определенная на множестве дуг сети :U → R+ 0, для которой выполняются следующие условия:

1. 0 ≤(u)≤c(u) для любой дуги;

2. ля любой вершины xX,x≠s,x≠t,

где

 -множество дуг, заходящих в вершину x,

 -множество дуг, выходящих из вершины x.

Это условие означает, что количество потока, входящего в каждую вершину сети (кроме вxода и выxода) равно количеству потока, выходящего из этой вершины. Следовательно, количество потока, выходящего из вxода s равно количеству потока, входящего в выxод t . Эта величина называется величиной потока и обозначается s.

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

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

Интересна задача нахождения максимального потока в сети (например, максимальное число деталей, которое может обработать в единицу времени производственная система).

Разрезом сети S=(X,U), заданным на множестве вершин AX, A≠0, A≠X, sA, tX\A называется множество дуг (xi,xj)  U таких, что xi  A, xjX\A. Разрез обозначается P(A).

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

Пропускной способностью разреза или величиной разреза C(A) называется сумма пропускных способностей входящих в него дуг: C(A) = 

Минимальным разрезом, разделяющим вход s и выход t сети, называется произвольный разрез P(A), sA, tX\A с минимальной пропускной способностью.

Теорема Форда-Фалкерсона

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

Дуга uU, соединяющая вершины xiX, xjX сети S, является допустимой, если для нее выполняется одно из следующих условий:
  1. Направление дуги совпадает с направлением потока и значение потока по этой дуге меньше ее пропускной способности: u = (xi,xj), (u) < c (u).
  2. Направление дуги противоположно направлению потока и по ней проходит ненулевой поток: u = (xi,xj), (u) > 0.

Дуги, для которых выполняется условие 1), называются увеличивающими или согласованными. Дуги, для которых выполняется условие 2), называются уменьшающими или несогласованными.

Увеличивающей цепью, соединяющей вход и выход сети, называется
простая цепь, все дуги которой являются допустимыми. Знание увеличивающей цепи позволяет увеличить поток по ней на величину  = min u{(u)}, где  (u) = с(u)-(u), если u -увеличивающая.  (u) = (u),если u - уменьшающая.


Алгоритм построения максимального потока

Шаг1. Задать начальное значение потока, если оно не задано. Удобно задавать начальное значение потока равным 0. Перейти к шагу 2.

Шаг2. Построить увеличивающую цепь от входа к выходу сети. Если увеличивающей цепи не существует, то максимальный поток построен. В противном случае перейти к шагу 3.

Шаг3. Вдоль построенной цепи увеличить значение потока на величину 8. Перейти к шагу 2.

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

Пример. Пусть дана матрица пропускных способностей некоторой транспортной сети (табл. 4). Построим сеть, соответствующую этой матрице (рис.4). Учтем, что веса, равные нулю, означают отсутствие ребра между соответствующими вершинами, а ненулевое значение, стоящее на пересечении k-й строки и l-го столбца означает, что из вершины xk идет дуга в вершину x1. Буквами s и t обозначены вершины, соответствующие истоку и стоку. Над каждой дугой проставлена ее пропускная способность и начальное значение потока (в скобках).

Таблица 4




x1

х2

х3

х4

t

s

7

0

4

0

0

x1

0

3

0

5

0

х2

0

0

2

0

5

х3

0

0

0

4

0

х4

0

0

0

0

6