Главная страница

Сетевые модели. Тема10_Сетевые модели_net_lec. Тема 10 Сетевые модели


Скачать 1.35 Mb.
НазваниеТема 10 Сетевые модели
АнкорСетевые модели
Дата28.04.2021
Размер1.35 Mb.
Формат файлаpdf
Имя файлаТема10_Сетевые модели_net_lec.pdf
ТипАнализ
#199664
страница2 из 4
1   2   3   4
Алгоритм использует три массива из N чисел каждый.
Первый массив S содержит метки с двумя значения:
0 (вершина еще не рассмотрена) и 1 (если уже рассмотрена); второй массив B содержит расстояния - текущие кратчайшие расстояния от и до соответ- ствующей вершины; третий массив С содержит номера вершин - k-й элемент С[k] есть номер предпоследней вер- шины на текущем кратчайшем пути из V
i в V
k
Матрица расстояний A[i,k] задает длины дуге (i,k); если такой дуги нет, то A[i,k] присваивается большое число M, равное "машинной бесконечности".
1. (Инициализация). В цикле от 1 до N заполнить нулями массив S; заполнить числом i массив C; перенести i-ю строку матрицы A в массив B, S[i]:=1;
C[i]:=0 (i - номер стартовой вершины).
2. (Общий шаг). Hайти минимум среди неотмеченных (т. е. тех k, для которых S[k]=0). Пусть минимум достигается на индексе j, т. е. B [j] ≤B[k].
Затем выполняются следующие операции:
S[j]:=1; если B[k] > B[j]+A[j,k], то B[k]:=B[j]+A[j,k]; C[k]:=j
Условие означает, что путь V
i
... V
k длиннее, чем путь V
i
...V
j
V
k
Если все S[k] отмечены, то длина пути от V
i до V
k равна B[k]. Теперь надо перечислить вершины, вхо- дящие в кратчайший путь.
3. (Выдача ответа). Путь от V
i до V
k выдается в обратном порядке следующей процедурой:
3.1. z:=C[k];
3.2.
Выдать z;
3.3. z:=C[z]. Если z = О, то конец, иначе перейти к 3.2.
Для выполнения алгоритма нужно N раз просмотреть массив B из N элементов, т. е. алгоритм
Дейкстры имеет квадратичную сложность. Алгоритм Дейкстры не может быть использован, если веса некоторых дуг отрицательны. В этом случае для поиска кратчайшего пути в графе с отрицательным ве- сом применяется Алгоритм Форда, являющийся модификацией алгоритма Дейкстры.
3.2. Определение кратчайшего пути на сети с циклами с использованием матрицы
Введем вспомогательные величины:
V
j
= min
i
{U
i
+ d
ij
}
, где:
U
i
– кратчайшее растояние между узлами 1 и j, d
ij
– длина дуги между смежными узлами.
Процесс начинается с
i
=
1
и
V
1
=
U
1
=
0
. После определения
V
j
полагаем
U
i
= V
j
. Заметим, что
U
i
включает расстояние до узла
i
, которое затем используется для определения расстояния до ближай- шего узла.
Формула рекурсивная и для сети без циклов решение получается за один проход. При наличии циклов (имеется путь меньшей длины от узлов с большими номерами к меньшим номерам) необходим итерационный процесс, по сути напоминающий метод потенциалов в транспортной задаче.
Конец итерационного процесса определяется по условию
d
ij
≥ V
j
-
U
i
для всех строкматрицы. При обнаружении несоответствия в строке вычислить новые
V
j
= U
i
+ d
ij
для j
не удовлетворяюших условию, положить
U
j
= V
j
и продолжить расчет.
3.3. Пример нахождения кратчайшего пути на сети с циклами
Рассмотрим задачу нахождения кратчайшего пути в сети с циклами на конкретном примере.

Дана следующая сеть (рис. 1):
Рис. 1. Граф сети.
Необходимо найти кратчайший путь из пункта 1 в пункт 10 и обратно.
Определим кратчайший путь на сети с циклами с использованием матрицы.
Пусть расстояния между узлами приведены в виде следующей табл. 1:
Таблица 1. Матричное представление графа сети
1
2
3
4
5
6
7
8
9
10
U
i
1
3 8
11
2
7 9
2 2
3
4 15 7
9 3
4
4 5
4
5
8 2
3 4
1
6
4 2
1 7
6 7
7
12 5
2 4
8
8
7 6
8 3
9
4 1
3 7
13 2 6
10
1 4
1 8
5
V
j
Применяя рекурсивную формулу для расчета расстояний, найдем опорное решение (табл. 2).
Таблица 2. Опорное решение
1
2
3
4
5
6
7
8
9
10
U
i
1
3 8
11 0
2
7 9
2 2
3
3
4 15 7
9 3
10
4
4 5
4 12
5
8 2
3 4
1 5
6
4 2
1 7
6 7
8
7
12 5
2 4
8 5
10 1
2 8
4 7
5 9
3 6

8
7 6
8 3
9
9
4 1
3 7
13 2 6
6
10
1 4
1 8
5 12
V
j
0 3
10 12 5 8
5 9
6 12
Проверяем условие:
d
ij
≥ V
j
-
U
i
.
В строке 5 условие не выполнено для
d
53
, проводим перерасчет с учетом найденных элементов
V
3
= U
5
+
d
53
=7
,
полагаем
U
3
= V
3
=7
и продолжаем проверку. Следующие несоответствующие элементы
d
74
,
d
76
,
d
98
. Результаты приведены в дополнительнойстроке и столбце таблицы 3.
Таблица 3. Окончательное решение
1
2
3
4
5
6
7
8
9
10
U
i
1
3 8
11 0
2
7 9
2 2
3
3
4 15 7
9 3
10 7
4
4 5
4 12 10
5
8 2
3 4
1 5
6
4 2
1 7
6 7
8 7
7
12 5
2 4
8 5
8
7 6
8 3
9 8
9
4 1
3 7
13 2 6
6
10
1 4
1 8
5 12
V
j
0 3
10 12 5 8
5 9
6 12 7
10 7
8
В результате получили матрицу расстояний от пункта 1 к любому другому.
Найдем кратчайший путь к пункту 1, используя условие из рекуррентной формулы:
U
i
= V
j
-
d
ij
(табл.4).
Таблица 4. Решение для поиска пути из первого пункта в последний.
1
2
3
4
5
6
7
8
9
10
U
i
1
3 8
11 0
2
7 9
2 2
3
3
4 15 7
9 3
7
4
4 5
4 10
5
8 2
3 4
1 5
6
4 2
1 7
6 7
7
7
12 5
2 4
8 5
8
7 6
8 3
8
9
4 1
3 7
13 2 6
6
10
1 4
1 8
5 12
V
j
0 3
7 10 5
7 5
8 6
12
Кратчайший путь:
1 2
5 9
10 с расстоянием в 12 единиц.
Для нахождения обратного пути матрица просчитывается от конечного пункта с учетом циклич- ности сети.
В результате получим опорное решение (табл.5).
Таблица 5. Решение для поиска пути из последнего пункта в первый.
1
2
3
4
5
6
7
8
9
10
U
i

1
3 8
11 7
2
7 9
2 2
5
3
4 15 7
9 3
4
4
4 5
4 1
5
8 2
3 4
1 4
6
4 2
1 7
6 7
3
7
12 5
2 4
8 1
8
7 6
8 3
7
9
4 1
3 7
13 2 6
5
10
1 4
1 8
5 0
V
j
7 5
4 1
4 3
1 7
5 0
Т. к. условие
d
ij
≥ V
j
-
U
i
выполняется везде, то по таблице начиная с левой верхней ячейки (с конца) находим обратный путь: в первой колонке для
U
i
=7 1- 6, в шестой колонке для
U
i
=3 6-7, в седьмой колонке для
U
i
=1 7-10, так что окончательно путь длины 7 определяет цепь
10 7
6 1
Определим кратчайший путь на сети с использованием алгоритма Дейкстры.
Построим дерево, соответствующее заданной сети. Дерево строится не до всех конечных узлов путей возможных для данной вершины графа, а лишь для тех, которые ведут к заданной конечной вер- шине. Причем вершины, для которых не имеет смысла продолжать путь, оставляются без дальнейшего внимания.
Корнем дерева возьмем соответствующий начальный узел сети (вершину графа) - 1 (рис.2).
Помечаем вершину 1.
Рис. 2
Сначала пойдем по левой ветви, т. к. до вершины 2 путь наименьший. Помечаем вершину 2 (рис.3).
2 4
3 5
6 1
2 3
7 5
6 1
9 8
1 0
8 7
3 2
7 5
4 3
2 5
1 0
7 9
8 3
2 2
4 6
9 1

Рис. 3.
Далее опять идем по меньшему пути , т. е. к вершинам 5 и 7. При этом, т. к. пути 2 3, 1 5, 1 6 ока- зываются длиннее, мы их не будем рассматривать. В результате подобных рассуждений мы получим три пути:
1. 1 2
4 10 (длина = 16)
2. 1 2
7 4
10 (длина = 14)
3. 1 2
7 10 (длина = 13)
Осталось рассмотреть вершины 3, 8 и 9, исходящие из пятой. Результаты представлены на рис.4.
Рис. 4.
Таким образом нашли еще один путь
1 2
5 9
10 (длина = 12), причем все остальные пути оказались заведомо большими.
Сравнивая полученные результаты, выбираем кратчайший:
1 2
5 9
10 (длина = 12).
4. Максимальный поток
4.1. Алгоритм нахождения максимального потока
Рассматривается задача определения максимального потокамежду двумя выделенными узлами связной сети. Каждая дуга сети обладает пропускными способностями в обоих направлениях, которые определяют максимальное количество потока, проходящего по данной дуге. Ориентированная (одно- сторонняя) дуга соответствует нулевой пропускной способности в запрещенном направлении.
Пропускные способности с ij сети можно представить в матричной форме. Для определения мак- симального потока из источника s в сток t используются следующие шаги.
Шаг 1. Найти цепь, соединяющую s с t, по которой поток принимает положительное значение в направ- лении s→t. Если такой цепи не существует, перейти к шагу 3. В противном случае перейти к шагу 2.
Шаг 2. Пусть c
- ij
— пропускные способности дуг цепи (s, t) в направлении s→t(t→s) и
=min{c
- ij
}>0
Матрицу пропускных способностей C
ij можно изменить следующим образом:
(а) вычесть из всех c
- ij
;
(б) прибавить ко всем c
+
ij
. При этом общая пропускная способность сети не изменится. Перейти к шагу 1.
Операция (а) дает возможность использовать остатки пропускных способностей дуг выбранной цепи в направлении s→t. Операция (б) восстанавливает исходные пропускные способности сети, по- скольку уменьшение пропускной способности дуги в одном направлении можно рассматривать как уве- личение ее пропускной способности в противоположном направлении.
6 8
9 6
4 2
3 1
3 4
6 8
8 2
1 3
5 7
1 0
9

Шаг 3. Найти максимальный поток в сети. Пусть С=||с ij
|| — исходная матрица пропускных способно- стей, и пусть С*=||с
*
ij
|| — последняя матрица, получившаяся в результате модификации исходной мат- рицы (шаги 1 и 2).
Оптимальный поток X=||x ij
|| в дугах задается как
ij
ij
ij
ij
ij
ij
ij
c
c
c
c
c
c
x
*
*
*
,0
,
Максимальный поток из s в t равен
j
jt
i
si
x
x
z
4.2. Пример нахождения максимального потока
Рассмотрим сеть на рис.5 с данными пропускными способностями.
Рис. 5. Граф сети.
Матрица пропускных способностей С приведена в табл. 6.
Табл. 6 . Цепь (s→1→4→t), =5 Табл. 7 . Цепь (s→3→2→t), =10 s
1 2
3 4 t s
5 3
14 4
1 10 5
9 0
2 5
6 15 10 3
12 7
10 7
2 4
3 14 8
8 t
3 4
10
В качестве исходной цепи можно выбрать s→1→4→t. Таким образом, ячейки (s, 1), (1, 4) и (4, t) помечаются знаком (-), а ячейки (1, s), (4, 1) и (t, 4) - знаком (+). Для данной цепи максимальный поток определяется как
=min{c s1
, c
14
, c
4t
=min{10, 5,13 =5.
Матрица С в табл. 6 корректируется путем вычитания =5 из всех элементов, помеченных зна- ком (-), и сложения со всеми элементами, имеющими знак (+). Результаты приведены в табл. 7.
Результаты последующих итераций приведены в табл. 8-11.
Табл. 8. Цепь (s→1→3→4→t), =5. Табл. 9. Цепь (s→1→3→4→t), =3. s
1 2
3 4 t s
10 3
14 4
1 5
5 9
5 2
5 6
15 10 3
12 7
10 7
2 4
3 9
8 13 t
3 4
5
s
1 2
3 4 t s
0 3
4 4
1 15 5
4 0
2 5
6 25 0
3 22 12 0
2 2
4 3
14 13 3 t
13 4
15
Табл. 10. Цепь (s→3→t), =2 . Табл.
11. Нет стока. s
1 2
3 4 t s
0 3
2 1
1 15 5
4 0
2 5
6 25 0
3 24 12 0
2 0
4 6
14 13 0 t
13 4
20
Из табл. 11 следует, что между s и t нельзя построить цепей с положительным потоком, посколь- ку все элементы в столбце t равны нулю. Таким образом, табл. 4.6 дает матрицу C
*
. Из табл.6 (матрица
С) и табл.11 (матрица С
*
) вычисляем матрицу оптимального потока, элементы которой Х=C-C* с заме- ной отрицательных величин нулями. В табл.12 приведена матрица X, а в табл.13 показана исходная матрица с отметкой узлов, через которые происходит сток
Таблица 12. Матрица оптимального потока Таблица 13. Исходная матрица
Из табл.12 видно, что z=10+12+3=25. Сумма всех (=5+10+5+3+2=25) также дает максимальный поток.
5. Календарное планирование
5.1. Историческая справка
До появления сетевых методов календарное планирование программ (планирование во времени) осуществлялось в небольшом объеме. Наиболее известным средством такого планирования быллен- точный (линейный)график Ганта, задававший сроки начала и окончания каждой операции на горизон- тальной шкале времени. Его недостаток заключается в том, что он не позволяет установить зависимости между различными операциями (определяющие в значительной мере темпы реализации программы). В связи с повышением сложности современных программ потребовалась разработка более четких и эф- фективных методов планирования, обеспечивающих оптимизацию всего процесса осуществления про- грамм. При этом эффективность интерпретируется как минимизация продолжительности выполнения программы с учетом экономических факторов использования имеющихся ресурсов.
Организационное управление программами стало новой областью теоретических и прикладных исследований благодаря разработке двух аналитических методов структурного и календарного плани- рования, а также оперативного управления программами. Эти методы, разработанные почти одновре- менно в 1956— 1958 гг. двумя различными группами, получили названия метод критического пути
s
1 2
3 4 t s
5 3
4 4
1 10 5
9 0
2 5
6 25 0
3 22 7
0 7
2 4
3 14 8
8 t
13 4
10 s
1 2
3 4 t s
0 3
4 1
1 15 5
4 0
2 5
6 25 0
3 22 12 0
2 2
4 6
14 13 0 t
13 4
18 s
1 2
3 4 t s
10 12 3
1 5
5 2
10 3
10 5
2 4
13 t s
1 2
3 4 t s
10 3
14 4
1 5
5 9
5 2
5 6
15 10 3
12 7
10 7
2 4
3 9
8 13 t
3 4
5

(МКП) и метод оценки и пересмотра программ (ПЕРТ). Метод критического пути был предложен фирмой Е. I. du Font de Nemours & Company для управления программами строительства, а затем был развит и обобщен фирмой Mauchly Associates. Метод ПЕРТ разработан консультативной фирмой по заказу военно-морского министерства США для календарного планирования научно- исследовательских и опытно-конструкторских работ программы создания ракет ―Поларис‖.
В методах ПЕРТ и МКП основное внимание уделяется временному аспекту планов в том смысле, что оба метода в конечном счете определяют календарный план программы. Хотя эти методы были раз- работаны независимо, они отличаются поразительным сходством. Пожалуй, самым существенным раз- личием первоначально было то, что в методе МКП оценки продолжительности операций предполага- лись детерминированными величинами, а в методе ПЕРТ — случайными. В настоящее время оба мето- да составляют единый метод сетевого планирования и управления (СПУ) программами.
Сетевое планирование и управление (СПУ) программами включает три основных этапа:структурное
планирование, календарное планирование и оперативное управление.
Этап структурного планирования начинается с разбиения программы на четко определенные операции. Затем определяются оценки продолжительности операций и строится сетевая модель (сете- вой график, стрелочная диаграмма), каждая дуга (стрелка) которой отображает работу. Вся сетевая мо- дель в целом является графическим представлением взаимосвязей операций программы. Построение сетевой модели на этапе структурного планирования позволяет детально проанализировать все опера- ции и внести улучшения в структуру программы еще до начала ее реализации. Однако еще более суще- ственную роль играет использование сетевой модели для разработки календарного плана выполнения программы.
Конечной целью этапа календарного планирования является построение календарного графика, определяющего моменты начала и окончания каждой операции, а также ее взаимосвязи с другими опе- рациями программы. Кроме того, календарный график должен давать возможность выявлять критиче- ские операции (с точки зрения времени), которым необходимо уделять особое внимание, чтобы закон- чить программу в директивный срок. Что касается некритических операций, то календарный план дол- жен позволять определять их резервы времени, которые можно выгодно использовать при задержке вы- полнения таких операций или с позиций эффективного использования ресурсов.
Заключительным этапом является оперативное управление процессом реализации программы.
Этот этап включает использование сетевой модели и календарного графика для составления периодиче- ских отчетов о ходе выполнения программы. Сетевая модель подвергается анализу и в случае необхо- димости корректируется. В этом случае разрабатывается новый календарный план выполнения осталь- ной части программы.
1   2   3   4


написать администратору сайта