Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Задача. Задан орграф с пропускными способностями с, значения которых указаны рядом с каждой дугой. Найти максимальный поток из источника s в сток t.
Рисунок 3.1 - Исходный орграф
Решение. Пропустим по орграфу произвольный поток, для чего зададим для каждой дуги e потоковую функцию f, удовлетворяющую условиям:
1) ;
2) для каждой вершины, отличной от s и t, сумма потоковых функций входящих дуг равна сумме потоковых функций исходящих дуг.
Получим граф, изображенный на рис. 3.2, где первое число рядом с дугой обозначает ее пропускную способность, второе – потоковую функцию. Суммарный поток, исходящий из источника, Равный ему поток входит в сток:
Рисунок 3.2 - Орграф с суммарным потоком 9
Присвоим тип I каждой дуге, для которой потоковая функция меньше ее пропускной способности, и тип D- каждой дуге, для которой потоковая функция отлична от нуля.
Рисунок 3.3 - Орграф с указанными типами дуг
На рис 3.3 изображен граф с указанными типами дуг. Отметим, что дуга (s,a) является одновременно как дугой типа I, так и дугой типа D.
Попытаемся найти в графе увеличивающую цепь, т.е. простую цепь из источника в сток, в которой каждая дуга, направленная из s в t, (прямая дуга) имеет тип I, акаждая дуга, направленная из t в s, (обратная дуга) -тип D. Для этого будем помечать вершины и дуги графа, начиная с источника s и используя следующее правило:
- если вершина x помечена, дуга (x,y) не помечена и имеет тип I, вершина y не помечена, то помечается дуга (x,y) и ее конец y;
- если вершина x помечена, дуга (y,x) не помечена и имеет тип D, вершина y не помечена, то помечается дуга (y,x) и ее начало y;
- других случаев пометки вершин и дуг не существует.
Если в результате окажется возможным пометить сток t, то в графе существует увеличивающая цепь, по которой можно пропустить дополнительный поток, иначе такой цепи не существует, и текущий поток является максимально возможным.
Пометим прежде всего вершину s. Из двух дуг, исходящих из этой вершины, можно пометить только дугу (s,a), имеющую тип I, и ее конец a. Далее можно пометить дугу (a,c) и ее конец c. Нельзя пометить прямую дугу (a,b), имеющую тип D, и обратную дугу (d,a), т.к. она имеет тип I. Непомеченными остаются также их вершины b и d. Далее, исходя из вершины c, помечается обратная дуга (b,c) типа D и ее начало b. Дуга (c,d) и ее вершина d не помечаются, т.к. эта прямая дуга имеет тип D. Наконец, помечаются прямая дуга (b,t) типа I и ее конец-источник t.
Таким образом, найдена увеличивающая цепь (s,a), (a,c), (b,c), (b,t).
Найдем для увеличивающей цепи резерв увеличения потока по каждой прямой дуге : d(s,a)= 4,
Рисунок 3.4 - Орграф с увеличенным потоком
d(b,t)= 3; далее найдем резерв уменьшения потока по каждой обратной дуге : d(b,c)= 1. Минимальная из этих величин есть дополнительный поток, который можно пропустить по увеличивающей цепи. Новые значения потоковой функции в прямых дугах цепи , а в обратных дугах . Граф с увеличенным потоком изображен на рис. 3.4.
Можно видеть, что суммарный поток в этом графе равен 10. Вновь определим типы дуг (рис. 3.5).
Анализ этого графа показывает, что в нем можно пометить только дуги (s,a), (a,c) и их вершины a,c. Дальнейшие пометки невозможны, и сток t остается непомеченным. Следовательно, новых увеличивающих цепей построить нельзя, и найденный поток, равный 10, является максимальным.
Рисунок 3.5 - Орграф с новыми типами дуг
Варианты заданий
Определить максимальный поток из вершины s в вершину t для графа, изображенного на рис. 3.6, с пропускными способностями дуг с.
Рисунок 3.6 – Заданный орграф
1. c(e1)=15; c(e2)=4; c(e3)=12; c(e4)=10; c(e5)=5; c(e6)=3; c(e7)=7; c(e8)=10
2. c(e1)=30; c(e2)=8; c(e3)=12; c(e4)=20; c(e5)=10; c(e6)=8; c(e7)=14; c(e8)=20
3. c(e1)=20; c(e2)=6; c(e3)=8; c(e4)=15; c(e5)=7; c(e6)=4; c(e7)=11; c(e8)=15
4. c(e1)=21; c(e2)=7; c(e3)=9; c(e4)=16; c(e5)=9; c(e6)=6; c(e7)=13; c(e8)=17
5. c(e1)=22; c(e2)=8; c(e3)=10; c(e4)=17; c(e5)=10; c(e6)=7; c(e7)=14; c(e8)=18
6. c(e1)=18; c(e2)=10; c(e3)=8; c(e4)=15; c(e5)=13; c(e6)=2; c(e7)=16; c(e8)=15
7. c(e1)=12; c(e2)=3; c(e3)=12; c(e4)=13; c(e5)=14; c(e6)=8; c(e7)=7; c(e8)=19
8. c(e1)=51; c(e2)=10; c(e3)=15; c(e4)=4; c(e5)=13; c(e6)=10; c(e7)=6; c(e8)=21
9. c(e1)=50; c(e2)=9; c(e3)=16; c(e4)=5; c(e5)=14; c(e6)=9; c(e7)=7; c(e8)=22
10. c(e1)=15; c(e2)=4; c(e3)=12; c(e4)=10; c(e5)=5; c(e6)=3; c(e7)=7; c(e8)=10
11. c(e1)=22; c(e2)=12; c(e3)=4; c(e4)=11; c(e5)=22; c(e6)=5; c(e7)=9; c(e8)=14
12. c(e1)=7; c(e2)=21; c(e3)=6; c(e4)=13; c(e5)=16; c(e6)=23; c(e7)=32; c(e8)=8
13. c(e1)=9; c(e2)=31; c(e3)=16; c(e4)=6; c(e5)=11; c(e6)=14; c(e7)=7; c(e8)=11
14. c(e1)=3; c(e2)=21; c(e3)=12; c(e4)=20; c(e5)=33; c(e6)=11; c(e7)=7; c(e8)=15
15. c(e1)=2; c(e2)=41; c(e3)=22; c(e4)=11; c(e5)=7; c(e6)=4; c(e7)=20; c(e8)=15
16. c(e1)=13; c(e2)=7; c(e3)=14; c(e4)=11; c(e5)=31; c(e6)=15; c(e7)=8; c(e8)=3
17. c(e1)=1; c(e2)=6; c(e3)=17; c(e4)=18; c(e5)=5; c(e6)=22; c(e7)=31; c(e8)=12
18. c(e1)=10; c(e2)=41; c(e3)=23; c(e4)=7; c(e5)=8; c(e6)=9; c(e7)=11; c(e8)=14
19. c(e1)=1; c(e2)=5; c(e3)=13; c(e4)=17; c(e5)=24; c(e6)=19; c(e7)=7; c(e8)=17
20. c(e1)=15; c(e2)=3; c(e3)=2; c(e4)=1; c(e5)=13; c(e6)=8; c(e7)=22; c(e8)=15
21. c(e1)=10; c(e2)=7; c(e3)=12; c(e4)=10; c(e5)=3; c(e6)=4; c(e7)=17; c(e8)=10
22. c(e1)=8; c(e2)=16; c(e3)=7; c(e4)=8; c(e5)=5; c(e6)=2; c(e7)=3; c(e8)=12
23. c(e1)=12; c(e2)=4; c(e3)=8; c(e4)=11; c(e5)=3; c(e6)=4; c(e7)=7; c(e8)=15
24. c(e1)=6; c(e2)=8; c(e3)=12; c(e4)=14; c(e5)=7; c(e6)=5; c(e7)=17; c(e8)=15
25. c(e1)=9; c(e2)=6; c(e3)=3; c(e4)=11; c(e5)=7; c(e6)=2; c(e7)=20; c(e8)=7
Дата публикования: 2015-02-22; Прочитано: 407 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!