- •Тема 2-1. Задача о коммивояжере.
- •Тема 2-2. Методы оптимизации на графах.
- •Порядковая функция графа
- •Числовые функции графа
- •Оптимизация пути в графах без контуров.
- •Постановка задачи оптимизации пути в графах без контуров.
- •Оптимизация пути в графах с контурами.
- •Алгоритм Форда.
- •Эвристические методы оптимизации. Алгоритм Флетчера-Кларка.
Тема 2-2. Методы оптимизации на графах.
Методы оптимизации находят широкое применение при проектировании сложных систем обработки и передачи информации, в частности: вычислительных систем и сетей, сетей передачи и распределения электроэнергии, товаров и т.д.
Их применение связано с поиском оптимальных решений по эффективному использованию имеющихся технических и программных средств системы.
Методы оптимизации в значительной степени базируются на теории графов и комбинаторном анализе.
Методы оптимизации базируются на ряде дополнительных понятий теории графов: порядковой функции графа, числовых функциях графа. Рассмотрим их подробнее.
Порядковая функция графа
Пусть задан граф G=(X,), а N0, N1, ... , Nr - такие подмножества, что:
N0={xi/xi X, (-1)xi=}
N1={xi/xi X-N0, (-1)xi N0}
N2={xi/xi X-(N0 N1), (-1)xi (N0 N1)}
.......................................................
Nr={xi/xi
X-
Nk,
(-1)xi
Nk
}
Суть задания множеств N0, N1, ... , Nr : в множество N0 ни одна дуга не входит. В любое из оставшихся множеств могут входить дуги только из множеств, номера индексов которых меньше номера индекса рассматриваемого множества. Сказанное даёт возможность разбить всё множество вершин графа Х на (r +1) ярусов со связями между ярусами по типу "с предыдущего в последующие".
Графически множества N0, N1, ... , Nr могут быть проиллюстрированы так:
Функция О(х), определяемая равенством
(xiNk) (O(xi)=k)
называется порядковой функцией графа без контуров.
Пример. Задан граф G.
Множество Х, можно, например, разбить на подмножества N0, N1, ... , N3, т.е. задать порядковую функцию следующим образом:
Подмножества N0, N1, ... , Nr называются обычно уровнями.
Рассмотрим алгоритм нахождения уровней графа:
1. Задать граф матрицей смежности.
2. Образовать дополнительную к матрице смежности строку 0, в каждой её клетке записать число единиц по соответствующему столбцу матрицы смежности. Вершины графа, соответствующие нулевым клеткам строки 0, образуют подмножество N0.
3. Вычеркнуть из матрицы смежности строки, соответствующие вершинам графа, вошедшим в N0.
4. Образовать дополнительную строку 1 , заменив в ней нулевые клетки строки 0 крестиками. В остальные клетки строки 1 вписать число единиц по соответствующему столбцу матрицы смежности графа. Вершины графа, соответствующие нулевым клеткам строки 1 , образуют подмножество N1.
5. Процесс образования дополнительных строк i прекратить, когда все строки матрицы смежности будут вычеркнуты.
Пример. Задан граф G (из предыдущего примера).
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1 |
|
1 |
1 |
1 |
|
1 |
|
2 |
|
|
|
|
1 |
|
|
3 |
|
|
|
|
1 |
1 |
1 |
4 |
|
|
|
|
|
1 |
|
5 |
|
|
|
|
|
|
1 |
6 |
|
|
|
|
|
|
1 |
7 |
|
|
|
|
|
|
|
0 |
0 |
1 |
1 |
1 |
2 |
3 |
3 |
N0={1}
1 |
Х |
0 |
0 |
0 |
2 |
2 |
3 |
N1={2,3,4}
2 |
Х |
Х |
Х |
Х |
0 |
0 |
2 |
N2={5,6}
3 |
Х |
Х |
Х |
Х |
Х |
Х |
0 |
N3={7}
Примечание: если граф содержит контур, то обязательно появится строка без нулей. Поэтому предложенный алгоритм даёт возможность установить наличие контуров в графе. Петля также определяется как контур.
