- •Н. В. Алексенко р. И. Воробьева
- •Оглавление
- •Введение
- •1. Основные методы решения задач линейного программирования
- •1.1. Введение в линейное программирование
- •1.1.1. Общая задача оптимизации
- •1.1.2. Задачи линейного программирования
- •1.1.3. Стандартная и каноническая задачи линейного программирования
- •1.2. Графический метод решения задачи линейного программирования
- •1.3. Симплекс-метод
- •1.3.1. Идея симплекс-метода
- •1.3.2. Алгоритм симплекс-метода
- •Алгоритм симплекс-метода
- •Алгоритм поиска первоначального опорного плана
- •1.4. Двойственность в линейном программировании
- •1.4.1. Постановка двойственной задачи
- •1.4.2. Теоремы двойственности
- •1.4.3. Двойственный симплекс-метод
- •1.4.4. Экономическая интерпретация задачи, двойственной задаче об использовании ресурсов
- •Исходная задача
- •Двойственная задача
- •1.5. Вопросы для самопроверки
- •2.1. Постановка задачи
- •2.2. Построение первоначального опорного плана транспортной задачи методом наименьших затрат
- •2.3. Проверка найденного опорного плана на оптимальность
- •2.4. Переход от одного опорного плана транспортной задачи к другому
- •2.5. Альтернативный оптимум
- •2.6. Открытая модель транспортной задачи
- •2.7. Приложение транспортной задачи к решению некоторых экономических задач
- •2.8. Вопросы для самопроверки
- •3. Целочисленное программирование
- •3.1. Общая постановка задачи
- •3.2. Метод отсечения Гомори
- •3.3. Графический метод решения задачи целочисленного программирования
- •3.4. Вопросы для самопроверки
- •4. Теория игр
- •4.1. Основные понятия
- •4.2. Решение игр 2 х 2 в смешанных стратегиях графическим способом
- •4.3. Решение игр 2 х n графическим способом
- •4.4. Решение игры n х 2 графическим способом
- •4.5. Сведение матричной игры m X n к задаче линейного программирования (решение любой матричной игры)
- •Функции дохода
- •6.2. Способы представления графов
- •6. 3. Некоторые задачи теории графов
- •6.3.1. Поиск кратчайшего пути в графе
- •Алгоритм поиска кратчайшего пути
- •6.3.2. Поиск кратчайшего гамильтонова цикла
- •6.4. Вопросы и задачи для самопроверки
- •7. Оптимизация сетевого графика
- •7. 1. Сетевая модель. Основные понятия
- •7.2. Основные требования к сетевому графику
- •7.3. Расчет временных параметров сетевого графика
- •7.3.1. Расчет параметров событий
- •Учитывая введенное в п.7.1 определение критического пути и введенные формулы (7.1–7.3), можно записать алгоритм нахождения критического пути.
- •7.3.2. Расчет параметров работ
- •7.3.3. Сетевое планирование в условиях неопределенности
- •7.4. Вопросы и задачи для самопроверки
- •8. Решение задач на компьютере
- •8.1. Решение задач с использованием системы Mathcad
- •8.2. Решение задач линейного программирования с помощью приложения Excel
- •Заключение
- •Библиографический список
- •Приложение
- •Алексенко Наталья Владимировна
- •Воробьева Раиса Ивановна
- •Математика
- •Основные задачи
- •Математического программирования
- •И реализация их на компьютере
- •644099, Омск, ул. Красногвардейская, 9
6. 3. Некоторые задачи теории графов
6.3.1. Поиск кратчайшего пути в графе
Пусть дан некоторый граф, каждому ребру которого поставлено в соответствие некоторое число l(Vi, Vj) – длина этого ребра. Тогда длиной пути в графе называется сумма длин ребер, образующих этот путь. Требуется найти кратчайший путь от некоторой вершины S до вершины t.
Алгоритм поиска кратчайшего пути
Алгоритм
основан на присвоении вершинам графа
меток. Каждой вершине
графа можно присвоить врéменную или
постоянную метки, состоящие из двух
чисел: (
),
где
– расстояние от S
до вершины
;
j
– номер вершины Vj,
непосредственно
предшествующей вершине
на пути от S
до
.
На каждом шаге с помощью некоторой процедуры метки изменяются. Если согласно методу метка вершины становится постоянной, то кратчайшее расстояние от S до найдено:
.
Рядом с постоянной меткой будем ставить знак +.
Шаг 1. Присвоение начальных меток.
Полагаем
d(S)
= 0, и метку (0;S)+
считаем постоянной. Для всех остальных
вершин полагаем
и считаем их метки врéменными. Обозначим
P = S.
Шаг 2. Обновление меток.
Для
всех вершин
,
смежных с вершиной Р
и имеющих врéменные метки, изменяем
метки по правилу
новая
метка
старая
метка
, (*)
j – изменяется в случае изменения первого числа в метке и становится равным номеру вершины P.
Шаг 3. Превращение метки в постоянную.
Среди
всех вершин с врéменными метками выбираем
вершину
с минимальным расстоянием, т. е.
и считаем эту метку постоянной, т. е.
ставим рядом с меткой знак + и полагаем
Шаг 4. Анализ решения.
1. Нахождение кратчайшего пути от вершины S до вершины t:
а) если P = t, то поиск закончен, кратчайшее расстояние от S до t равно d(P); для описания кратчайшего пути переходим к шагу 5;
б) если P ¹ t, то возвращаемся к шагу 2.
2. В случае, когда нужно найти кратчайшее расстояние от вершины S до всех вершин графа, проверяем, если метки всех вершин постоянные, то переходим к шагу 5. В противном случае возвращаемся к шагу 2.
Шаг 5. Описание кратчайших путей.
Описание кратчайших путей от вершины S до любой вершины начинаем с вершины , т. е. с конца, и используем информацию в метках (второе число).
Пример. Найти кратчайшие пути от вершины S до всех остальных вершин графа, изображенного на рис. 6.8.
Решение. Вычисленные на каждом этапе метки удобно заносить в соответствующие строки заранее приготовленной табл.6.1, а в вершинах графа проставлять постоянные метки.
1. Вершине S присвоим метку, равную (0;S) и считаем ее постоянной. Всем остальным вершинам присвоим врéменные метки, т. е. d(S) = 0, d(Vi) = ¥, (i = 1, 2, 3, …, 9) и полагаем P = S (см. первую строку табл. 6.1).
2. Обновляем метки.
Рассмотрим вершины, смежные с вершиной P, и для них по правилу (*) обновим метки.
d(V1) = min{¥, 0+8} = 8, j = S; d(V2) = min{¥, 0+13} = 13, j = S;
d(V3) = min{¥, 0+15} = 15, j = S; d(V4) = min{¥, 0+10} = 10, j = S.
Записываем метки во вторую строку табл. 6.1.
Таблица 6.1
Вычисление меток вершин графа
S |
v1 |
v2 |
v3 |
v4 |
v5 |
v6 |
v7 |
v8 |
v9 |
0;S+ |
¥ |
¥ |
¥ |
¥ |
¥ |
¥ |
¥ |
¥ |
¥ |
|
8;S+ |
13;S |
15;S |
10;S |
¥ |
¥ |
¥ |
¥ |
¥ |
|
|
12;1 |
15;S |
10;S+ |
¥ |
23;1 |
¥ |
¥ |
¥ |
|
|
12;1+ |
14;4 |
|
19;4 |
23;1 |
¥ |
22;4 |
¥ |
|
|
|
14;4+ |
|
17;2 |
23;1 |
¥ |
22;4 |
¥ |
|
|
|
|
|
17;3+ |
23;1 |
¥ |
22;4 |
¥ |
|
|
|
|
|
|
21;5 |
19;5+ |
22;5 |
¥ |
|
|
|
|
|
|
21;5+ |
|
22;5 |
26;7 |
|
|
|
|
|
|
|
|
22;5+ |
25;6 |
|
|
|
|
|
|
|
|
|
25;6+ |
3. Среди всех вершин с врéменными метками выбираем вершину с минимальным расстоянием и считаем ее метку постоянной.
Очевидно, d(V1) = min{d(vi)}, i = 1,…, 9; следовательно,
(d(V1);S) = (8;S)+ и полагаем P = V1, d(P) = 8.
4. Возвращаемся к шагу 2. Смежными с вершиной V1 являются вершины V2 и V6.
Имеем d(V2) = min{13, 8+4} = 12, j =1; d(V6) = min{¥, 8+15} = 23;
j =1.
Заполняем третью строку табл. 6.1. Метка вершины V4 становится постоянной.
Продолжаем так процедуру до тех пор, пока метки всех вершин не станут постоянными.
Построим кратчайшие пути от вершины S до всех вершин (рис. 6.9). Например, кратчайший путь от S до V9: метка V9 (25; 6) показывает, что Smin = 25, непосредственно предшествующая вершина на пути от S до V9 будет V6 (второе число в метке 6).
Метка V6 (21; 5), т. е. расстояние от S до V6 равно 21, предшествующая вершина V5 и т. д.
Получим путь S® V1® V2® V5® V6® V9.
