Типовой расчет 3,4. Задан следующий орграф.




Типовой расчет 1

Найдите максимальное и минимальное назначение для задачи с матрицей

         
         
         
N     2N  
  N     N

Решение

Найдем максимальное назначение

Шаг 1:
Преобразуем матрицу, заменив каждый элемент матрицы разностью максимального элемента этой строки и самого элемента.

          Max=7
          Max=8
          Max=9
N 2N -2 2N -9   2N -8 Max=2N
N -8   N -7 N -9   Max=N


Шаг 2.

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

         
         
         
N-1 2N -2 2N -11   2N -8
N -9   N -9 N -9  

Шаг 3.

Получили матрицу, в которой в каждой строки и каждом столбце есть ноль. Нашей целью является отметить по одной ячейке в каждой строке и каждом столбце так, чтобы они были нулевые. Отметим соответствующие ячейки желтым цветом.

         
         
         
N-1 2N -2 2N -11   2N -8
N -9   N -9 N -9  

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

         
         
         
         
         

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

Найдем минимальное назначение

         
         
         
N     2N  
  N     N

Шаг 1:
Преобразуем матрицу, заменив каждый элемент матрицы разностью самого элемента и минимального элемента строки.

 

         
         
         
N-2     2N-2  
  N-7     N-7

 

Шаг 2.

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

         
         
         
N-2     2N-4  
  N-7     N-10

Шаг 3.

Получили матрицу, в которой в каждой строки и каждом столбце есть ноль. Нашей целью является отметить по одной ячейке в каждой строке и каждом столбце так, чтобы они были нулевые. Отметим соответствующие ячейки желтым цветом.

         
         
         
N-2     2N-4  
  N-7     N-10

Не удалось отметить 0 в четвертой строке.

Проводим модификацию матрицы. Вычеркиваем строки и столбцы с возможно большим количеством нулевых элементов: строки 5,3 столбец 2,
Получаем сокращенную матрицу (элементы не выделены).

         
         
         
N-2     2N-4  
  N-7     N-10

 

Минимальный элемент сокращенной матрицы (1) вычитаем из всех ее элементов:

           
           
           
N-3     2N-5    
  N-7     N-10  

Затем складываем минимальный элемент с элементами, расположенными на пересечениях вычеркнутых строк и столбцов:

 

 

         
         
         
N-3     2N-4  
  N-6     N-10

Получили матрицу, в которой в каждой строки и каждом столбце есть ноль. Нашей целью является отметить по одной ячейке в каждой строке и каждом столбце так, чтобы они были нулевые. Отметим соответствующие ячейки желтым цветом.

           
           
           
N-3     2N-4    
  N-6     N-10  
           

 

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

         
         
         
         
         

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

Типовой расчет 2. Решите задачу коммивояжера жадным алгоритмом и алгоритмом удвоения ребер минимального остова для матрицы расстояний между всеми парами из пяти вершин.

         
         
         
        N
      N  

Решение

Самый очевидный алгоритм решения задачи коммивояжера — жадный: из текущего города иди в ближайший из тех, куда ещё не ходил. Если выполняется неравенство треугольника, нетрудно доказать, что этот алгоритм ошибается не более, чем в два раза. Трудоемкость этого алгоритма O (V 2).

Запускаем жадный алгоритм из вершины 1, кратчайшее расстояние до вершины 3, равное 1. Из вершины 3 кратчайшее расстояние до вершины 2(за исключением уже посещенной вершины 1) равное 3. Из вершины 2 кратчайшее расстояние(до оставшихся вершин 4 и 5) расстояние до вершины 4, равное 6, от вершины 4 до вершины 5 расстояние равно N. Расстояние от вершины 5 до вершины 1 равно 7. Длина полученного цикла 1,3,2,4,5,1 равна 1+3+6+N+7=N+17.

Построим дерево-остов минимального веса с помощью алгоритма Прима.

Алгоритм Прима обладает тем свойством, что ребра в множестве А всегда образуют единое дерево. Дерево начинается с произвольной корневой вершины г и растет до тех пор, пока не охватит все вершины в V. На каждом шаге к дереву А добавляется легкое ребро, соединяющее дерево и отдельную вершину из оставшейся части графа. Данное правило добавляет только безопасные для А ребра; следовательно, по завершении алгоритма ребра в А образуют минимальное остовное дерево. Данная стратегия является жадной, поскольку на каждом шаге к дереву добавляется ребро, которое вносит минимально возможный вклад в общий вес.

Начнем с вершины с номером 1, добавим ребро {1,3}, которое имеет минимальный вес среди ребер, инцидентных вершине 1равный 1, затем ребро {3,2} веса 3, {2,4} веса 6, {4,5} веса N получим минимальное дерево-остов Т.Построим мультиграф, путем удвоения ребер в дереве Т.

Рис.1

Длина полученного цикла равна 1+3+6+N+N+6+3+1=2N+20.

 

Типовой расчет 3,4. Задан следующий орграф.

Дуга (s,v1) c весом 8, дуга(s,v2) c весом 9, дуга (v1, v2) c весом N, дуга (v1,t) c весом 4, дуга (v2,t) c весом 1, дуга (s,t) c весом 20. Найдите максимальный поток и минимальный разрез в сети, считая вес дуги ее пропускной способностью. Найдите минимальный путь из вершины s в вершину t.

Решение.

Нарисуем граф.

Рис.1.

Простой, связный орграф G будем называть транспортной сетью (или просто сетью), если выполняются следующие условия: - существует вершина s (источник), в которую не входит ни одна дуга, - существует вершина t (сток), из которой не выходит ни одна дуга, - каждой дуге eij приписано целое число сij≥0, называемое пропускной способностью дуги. Потоком в сети называют функцию, сопоставляющую каждой дуге целое неотрицательное число fij≥0(значение потока через дугу) так, чтобы

1) fij≤ сij, т.е. не превышало пропускной способности дуги

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

3) Для вершины s сумма исходящих потоков равна сумме потоков, входящих в вершину t.

Величиной потока, обозначают Val f, называют сумму значений потока на всех дугах, выходящих из источника s, равную сумме значений потока на всех дугах, входящих в сток t. Поток называется максимальным, если его величина наибольшая из возможных. Дуга eij называется насыщенной, если fij= сij, т.е. значение потока через дугу равно пропускной способности дуги.

Теорема Форда – Фолкерсона. Величина максимального потока в сети из вершины s в вершину t равна величине минимального сечения между этими вершинами.

Алгоритм Форда – Фолкерсона:

1. Зададим произвольный начальный поток, можно нулевой.

2. Вершину s пометим двойной пометкой: (0;∞). Первая пометка означает вершину, из которой получена пометка. Вторая нужна для подсчёта возможного увеличения потока. Дальнейшее помечивание по существу означает поиск пути из s в t.

3. Если в графе существует непомеченная вершина j, смежная с какой – то помеченной вершиной i, то в зависимости от того, как ориентирована связывающая их дуга, проводим прямую пометку (если дуга ведёт от i к j, и не насыщенная fij< сij) или обратную (если дуга ведёт от j к i, и cji>0). Прямая пометка: (+i, ∆j=cij-fij) Обратная пометка: (-i, ∆j=cij+fij)

4. Если на шаге 3 не удалось пометить вершины, выход из алгоритма, максимальный поток найден.

5. Если j=t, переход к 6, иначе переход к 3.

6. Этот шаг соответствует построенному пути из s в t, на котором возможно увеличение потока на величину ∆=min∆j, где ∆j – вторые метки всех вершин этого пути, кроме s. Начинаем с t и движемся по пометкам назад к источнику. На прямых дугах (1-я метка со знаком +) увеличиваем значение потока на ∆. На обратных дугах уменьшаем значение потока на ∆; если в этом случае fji - ∆.

Для нашего случая

Val f= 4+1+20=25.

1). Путь из s в t по которому поток может быть увеличен, состоит из прямых дуг, соединяющих вершины: s=1→3→t=4. Пометки указанных вершин: s=(0;∞)→(+1;∆ v1=8-4=4)→ (+1;∆v2 =9-1=8)→ t. Получили граф

Рис.2.

Путь из s в t (рис.2), на котором возможно увеличение потока построить не удалось. До стока t не дошли. Вершина t не может быть помечена, все входящие в нее дуги насыщены, поэтому поток не может быть увеличен.

Значит поток f (рис.2) максимален. Найдём минимальное сечение. Помеченные вершины: Мs={1,2,3}. Непомеченные вершины: Мt={4}. Прямые насыщенные дуги, идущие из Мs в Мt: e34, e14, e24, образуют минимальное сечение: e34· e14· e24. Величина этого сечения равна 4+1+20=25 и совпадает с величиной максимального потока f.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: