6.2. Сетевое моделирование.
Сетевое моделирование как раздел науки, основанной на теории графов, начиналось с решения двух наиболее известных задач: задачи о кратчайшем пути и задачи о максимальном потоке. В последнем случае, если взвешенный орграф моделирует, например, систему водопроводов, то при решении задачи о максимальном потоке воды через эту систему вершины такого орграфа представляют собой потребителей или производителей воды, а его дуги - участки водопровода. При этом веса, соответствующие каждой дуге графа, указывать на скорость потребления воды и пропускную способность труб данного водопровода.
В
задаче о кратчайшем пути веса дуг графа
задаются расстоянием между вершинами,
которые эти дуги соединяют. П
роиллюстрируем
этот пример небольшой физической
моделью. Пусть имеется топологическая
карта сети из 5 дорог, соединяющих 4
пункта, причём необходимо выбрать
кратчайший путь из пункта 1 в пункт 4:
Рис. 6.2.1. Топологическая карта транспортной сети из 5 ветвей
Оказывается, используя аналогию между длиной пути lij между пунктом i и пунктом j на карте и электрическим напряжением Uij между точкой i и точкой j определенной электрической цепи, можно решать задачу о кратчайшем пути, моделируя транспортную сеть Рис. 6.2.1 следующей электрической схемой:
Рис. 6.2.2. Электрическая модель транспортной сети Рис. 6.2.1
Впрочем, любая электрическая схема сама по себе представляет ориентированный и взвешенный граф. Ориентирован этот граф будет протекающими в определённых направлениях токами по разным участкам схемы. Величины токов могут играть роль весов соответствующих дуг графа, а величины напряжений - роль весов соответствующих вершин графа. Свойство постоянства потока в сети равносильно высказыванию о том, что поток в промежуточной вершине не исчезает и не возникает. Это свойство эквивалентно закону Кирхгофа для цепи постоянного тока.
Для иллюстрации методов сетевого моделирования рассмотрим более подробно другую известную задачу – задачу о максимальном потоке в транспортной сети. На основе теории графов эта сеть моделируется ориентированным связным графом без петель g = [(s, P), (U, W)], который обладает следующими свойствами:
Существует одна и только одна такая вершина s1 называемая входом сети (источником), что g -1(s1) = 0;
Существует одна и только одна такая вершина sn, называемая выходом сети (стоком), что g (sn) = 0
Каждой дуге Uij графа соответствует некоторое число f(Uij) ≥ 0, называемое пропускной способностью дуги.
Метод нахождения максимального потока рассмотрим на примере интенсивного потока автомашин, стремящихся преодолеть участок транспортной сети с односторонним движением и ограниченной пропускной способностью. Для конкретности рассмотрим участок городского движения с одним въездом на участок (s) и одним выездом из него (s'). Представим схематически модель этого участка в виде взвешенного ориентированного графа с 8 вершинами (перекрестками) и 13 дугами (переулками):
4
2
1
1
3
6
1
2
1
1
1
3
4
Рис. 6.2.3. Исходная сеть, исследуемая на предмет пропускной способности.
Упорядоченная пара узлов (i, j) определяет дугу этой сети, причем каждой дуге (i, j) приписывается определенная пропускная способность k(i, j). На Рис. 6.2.3 пропускная способность каждой дуги (i, j) указана числом (автомобилей/сек) в квадратике рядом с ней. Потоком в сети называется функция f, сопоставляющая каждой дуге (i, j) число f(i, j) и обладающая свойствами:
f(i, j) = - f(j, i) ; f(i, j) < k(i, j) (6.2.1)
Пропускная способность и поток может характеризовать как отдельную дугу, так и всю сеть. Узел s является в данном случае источником потока (автомашин) f, узел s' - стоком. Поток с одним источником s и одним стоком s' называется потоком от s к s'. Узлы s и s' связаны сложной промежуточной сетью. В соответствии с теорией графов, для удобства моделирования исходная исследуемая сеть (рис. 6.2.3) представляется симметричной матрицей пропускных способностей || k || (Табл. 6.2.1):
Таблица 6.2.1.
|
s |
1 |
2 |
3 |
4 |
5 |
6 |
s’ |
S |
0 |
1 |
4 |
0 |
0 |
4 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
2 |
0 |
2 |
4 |
0 |
0 |
2 |
0 |
0 |
0 |
1 |
3 |
0 |
1 |
2 |
0 |
0 |
0 |
3 |
0 |
4 |
0 |
1 |
0 |
0 |
0 |
3 |
1 |
0 |
5 |
4 |
0 |
0 |
0 |
3 |
0 |
0 |
1 |
6 |
0 |
2 |
0 |
3 |
1 |
0 |
0 |
6 |
s’ |
0 |
0 |
1 |
0 |
0 |
1 |
6 |
0 |
В матрице || k || элемент i, j на пересечении строки i и столбца j соответствует пропускной способности дуги (i, j). Для начала моделирования насыщения исходной сети допустим, что из источника s в каждом из трех возможных направлений вытекает поток fsj по 1 условной единице, который в сумме дает общий поток f1 = 3. Входящие в узлы 1, 2, 5 единичные потоки должны течь дальше по сети до тех пор, пока не сольются в узле s' . Этому общему суммарному потоку величиной 3 условные единицы соответствует антисимметричная матрица потока || f1 ||. Эта матрица || f1 || вместе с ориентированным графом, соответствующим потоку f1, изображена ниже:
1
1
|
S |
1 |
2 |
3 |
4 |
5 |
6 |
S’ |
s |
|
1 |
1 |
|
|
1 |
|
|
1 |
-1 |
|
|
|
|
|
1 |
|
2 |
-1 |
|
|
|
|
|
|
1 |
3 |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
5 |
-1 |
|
|
|
|
|
|
1 |
6 |
|
-1 |
|
|
|
|
|
1 |
s’ |
|
|
-1 |
|
|
-1 |
-1 |
|
1
1
1
1
1
Знаки (-) в матрице || f1 || возникли в силу свойства (6.2.1) потока. Теперь, чтобы выяснить, насколько полно поток f1 насыщает исходную сеть, вычтем потока f1 из общей пропускной способности k, а также соответствующие этим потокам матрицы и получим новую сеть k1 = k – f1 и новую матрицу пропускных способностей || k1 || = || k || – | | f1 ||:
3
3
0
2
3
|
s |
1 |
2 |
3 |
4 |
5 |
6 |
s’ |
s |
|
0 |
3 |
|
|
3 |
|
|
1 |
2 |
|
|
1 |
1 |
|
1 |
|
2 |
5 |
|
|
2 |
|
|
|
0 |
3 |
|
1 |
2 |
|
|
|
3 |
|
4 |
|
1 |
|
|
|
3 |
1 |
|
5 |
5 |
|
|
|
3 |
|
|
0 |
6 |
|
3 |
|
3 |
1 |
|
|
5 |
s’ |
|
|
2 |
|
|
2 |
7 |
|
1
3
0
1
1
1
5
0
Появление в матрице || k1 || нулей свидетельствует о появлении насыщенных дуг, а именно дуг (s,1), (2,s') и (5,s') в результате операции вычитания. Найдем те узлы, которых можно достичь из s, следуя по ненасыщенным дугам. Эти узлы определяются положительными элементами первой строки матрицы || k1 ||, т.е. это узлы (2) и (5). Из узлов (2) и (5) достижимы узлы (3) и (4) , из узлов (3) и (4) можно попасть в узел (6), а из него - в (s').
Таким образом, одним из ненасыщенных путей является путь (s,2), (2,3), (3,6), (6,s'). Образующие этот путь элементы в матрице || k1 || обведены кружками, а элементы в квадратиках образуют путь для потока в противоположном направлении. Минимальная пропускная способность пути (s,2), (2,3), (3,6), (6,s') лимитируется дугой (2,3), значит, по нему возможен поток мощностью максимум 2 единицы. Обозначив этот поток f2 = 2, вычтем его значение из сети k1. Новую матрицу пропускных способностей || k2 || = || k1 || - || f2 || получим вычитанием 2 из элементов || k1 ||, обведенных кружками, и добавлением 2 к элементам, обведённым квадратами. Вот эта матрица || k2 ||:
|
s |
1 |
2 |
3 |
4 |
5 |
6 |
S’ |
s |
|
0 |
1 |
|
|
3 |
|
|
1 |
2 |
|
|
1 |
1 |
|
1 |
|
2 |
7 |
|
|
0 |
|
|
|
0 |
3 |
|
1 |
4 |
|
|
|
1 |
|
4 |
|
1 |
|
|
|
3 |
1 |
|
5 |
5 |
|
|
|
3 |
|
|
0 |
6 |
|
3 |
|
5 |
1 |
|
|
3 |
S’ |
|
|
2 |
|
|
2 |
9 |
|
Еще один ненасыщенный путь из (s) в (s’) образован дугами (s,5), (5,4), (4,6), (6,s'). Он отмечен кружками в матрице || k2 ||, а обратный путь - квадратами. Минимальное сечение этого пути лимитируется дугой (4,6) и равно 1, а значит, максимальный поток по этому пути f3 = 1. Новую матрицу пропускных способностей || k3 || = || k2 || - || f3 || получим, таким же образом, как ранее получили || k2 ||, в виде следующей таблицы:
|
s |
1 |
2 |
3 |
4 |
5 |
6 |
s’ |
S |
|
0 |
1 |
|
|
2 |
|
|
1 |
2 |
|
|
1 |
1 |
|
1 |
|
2 |
7 |
|
|
0 |
|
|
|
0 |
3 |
|
1 |
4 |
|
|
|
1 |
|
4 |
|
1 |
|
|
|
4 |
0 |
|
5 |
6 |
|
|
|
2 |
|
|
0 |
6 |
|
3 |
|
5 |
2 |
|
|
2 |
S’ |
|
|
2 |
|
|
2 |
10 |
|
Единственный оставшийся ненасыщенным путь из (s) в (s’) отмечен кружками в матрице ||k3||. Это путь (s,5), (5,4), (4,1), (1,6), (6,s'). Максимальный поток f4 = 1 по этому пути лимитируется дугами (4,1) и (1,6). Производя снова операцию вычитания потока f4, получим результирующую матрицу пропускных способностей ||k4|| = || k3 || - || f4 ||:
Таблица 6.2.2.
|
s |
1 |
2 |
3 |
4 |
5 |
6 |
s’ |
S |
|
0 |
1 |
|
|
1 |
|
|
1 |
2 |
|
|
1 |
2 |
|
0 |
|
2 |
7 |
|
|
0 |
|
|
|
0 |
3 |
|
1 |
4 |
|
|
|
1 |
|
4 |
|
0 |
|
|
|
5 |
0 |
|
5 |
7 |
|
|
|
1 |
|
|
0 |
6 |
|
4 |
|
5 |
2 |
|
|
1 |
S’ |
|
|
2 |
|
|
2 |
11 |
|
Выделенные кружками узлы, которых можно достичь, исходя из (s), не включают узел (s’). Значит, сверх этого более никакой поток в исследуемой сети невозможен. Полный поток, насыщающий исходную сеть k (рис.6.2.3), слагается из найденных частичных потоков: fмакс = f1 + f2 + f3 + f4 = 3 + 2 + 1 + 1 = 7. Матрицу максимального потока || fмакс || = || k || - || k4 || получим вычитанием результирующей матрицы пропускных способностей (Табл. 6.2.2) из исходной матрицы (Табл.6.2.1):
Рис. 6.2.4. Матрица || fмакс || и соответствующий ей поток fмакс.
Полный поток, вытекающий из (s), равный сумме элементов первой строки || fмакс ||, равен полному стоку в (s’), т. е. сумме элементов последнего столбца, и оказывается равным 7 автомашин/сек. Направление потока автомашин в сети будет определяться стрелками на рис.6.2.4, а его интенсивность - числами у соответствующих дуг (переулков). Интересно отметить, что отсутствует вклад дуги (1,3) в полный поток автомашин, хотя она обладает единичной пропускной способностью (1 автомашина/сек). Таким образом, оказывается, что в этом переулке поток автомашин отсутствует (образуется пробка), несмотря на интенсивное движение в соседних переулках.
