Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
313
Добавлен:
16.04.2013
Размер:
2.43 Mб
Скачать

7. Какое минимальное число ребер нужно удалить из графа B4 , чтобы полученный граф стал планарным?

8.Какое минимальное число вершин нужно удалить из графа B 4 , чтобы полученный граф стал планарным?

9.Найти хроматическое число графа B4 .

10.Найти реберное хроматическое число графа B3 .

11.Найти хроматическое число графа Tn (дерева с п вершинами).

12.Найти хроматическое число графа, изображенного на рис. 2.68в.

13.Привести пример плоского графа с хроматическим числом, равным

3.

14.Найти реберное хроматическое число графа K3,5 .

15.Найти хроматическое число и реберное хроматическое число графа

C2 ×Z3 .

16.Найти хроматическое число и реберное хроматическое число графа

C3 ×Z3 .

Ответы

1. Нет. 2. Нет. Указания: а), б), в) – доказать, что если планарен, то четырехугольников не менее 5; г) – доказать, что если планарен, то треугольников 8. 3. Нет. 4. Нет. 5. Да. 6. а) при любом п; б) при п = 2. 7. 4. Указание: доказать, что меньше нельзя, и показать, что можно убрать 4 ребра. 8. 2. Указание: доказать, что меньше нельзя, и показать, что можно убрать 2 вершины. 9. 3.

10. 4. 11. 2. 12. 3. 13. См. рис. 2.70. 14. 5. Указание:

учитывая, что ∆ = 5 , найти раскраску 5 красками. 15.

3; 3. 16. 3; 4. Рис. 2.70

§2.5. Потоки в сетях

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

Определение. Сеть – это ориентированный связный граф, рёбра которого помечены положительными действительными числами

c(x, y) (для ребра (x, y), идущего из вершины x в вершину y). В графе должны быть выделены вершины s (источник) и t (сток).

Число c(x, y) называется пропускной способностью ребра (x, y).

В сети допускаются кратные рёбра, но не допускаются петли. Вершины сети часто называют узлами.

Определение. Поток в сети – это функция

f (x, y), определённая для

каждого ребра (x, y) и удовлетворяющая условиям:

(а) 0 f (x, y) c(x, y)

для любого ребра (x, y);

(б) существует число v такое, что

v,

если a = s,

 

 

f (x, a) f (a, y) = 0,

если a s, t,

x

y

v, если a = t.

Число v называется величиной потока f . Иногда пишут v( f ) вместо v, чтобы подчеркнуть зависимость v от f . Величина потока

выражает количество субстанции (воды, или количества электричества, или автомашин), “перетекающих” из s в t за определённый

промежуток времени. Равенство f (x, a) f (a, y) = 0 для x y

внутренней точки a – это “закон сохранения” (сколько единиц субстанции “втекает” в узел a, столько и “вытекает” из него). В

математике рассматриваются и более общие сети – сети, имеющие несколько источников s1, ... , sm и несколько стоков t1, ... ,tn .

Определение. Поток f называется максимальным, если его величина v( f ) максимальна.

Основная задача теории потоков в сетях состоит в нахождении максимального потока. Мы покажем, что максимальный поток всегда существует, и приведём алгоритм его нахождения.

Теорема. В любой сети существует максимальный поток.

Доказательство. Пусть e1,e2 , ... , en все рёбра сети. Положим

ci = c(ei ). Если f поток, то полагаем fi = f (ei ). Тогда поток f

можно отождествить с точкой f = ( f1, f2 , ... , fn ) п-мерного пространства R n . Конечно, не всякая точка из R n определяет поток.

Должно быть выполнено условие (а): 0 fi

ci , т.е.

( f1, f2 , ... , fn ) [0, c1 ]×[0, c2 ]×... ×[0, cn ]

(точка

f

лежит в

n

 

 

 

параллелепипеде [0, ci ] ). Кроме того, должны быть выполнены

i=1

 

 

 

условия (б): f (s, x) f ( y, a) = −f (t, p) + f (q,t) и

x y p q

f (a, x) f ( y, a) = 0 при a s,t. Например, если a s,t и

x

y

сеть вблизи узла a имеет вид

 

f1

 

 

f3

 

 

 

 

 

α

 

f2

 

Рис. 2.71

 

f 3 = f1 + f 2 . Множество K всех точек

 

 

R n ,

то

f

удовлетворяющих условиям (а) и (б), таким образом, является замкнутым и ограниченным (т.е. компактом) в R n . Величина потока

v( f ) является непрерывной функцией от f , определённой на компакте K (действительно, v( f ) = fi1 + ... + fik f j1 ... f jl

линейная функция; здесь ei1 , ... , eik рёбра, выходящие из s, а

f j1 , ... , f jl входящие в s). По известной теореме математического анализа функция, непрерывная на компакте K, достигает своего

наибольшего значения в некоторой точке из K. В нашем случае эта точка и будет давать максимальный поток.

Введём ещё несколько обозначений. Пусть N множество всех узлов сети. Для двух подмножеств A, B N положим

f ( A, B) = f (x, y),

c( A, B) = c(x, y). Очевидно,

x A

x A

y B

y B

c( X Y , Z ) = c( X , Z ) + c(Y , Z) при X Y = и аналогичное равенство имеет место для функции f . Введём ещё одно понятие. Определение. Разрез – это разбиение множества N всех узлов сети на два непересекающихся подмножества X и X , причём s X , а

t X . Число c( X , X ) называется пропускной способностью

разреза ( X , X ).

Пример. В сети, изображённой на рисунке 2.72, на каждом ребре

x

3

 

 

,

 

5

s

 

 

 

 

 

a 4,2 b

4

 

 

 

 

,

 

5,1

 

 

4

 

 

 

t

x

2,2

 

 

4,2 c 4,3 d

,1 4

Рис. 2.72

(x, y) написаны числа c(x, y), f (x, y) (пропускная способность

этого ребра и поток через него). В этом примере величина потока

v = f (s, a) + f (s, c) = 3 + 2 = 5. Этот поток не максимальный, так как можно, например, вдоль пути s c d t увеличить поток через рёбра на 1, условия (а) и (б) будут выполняться, но уже с v = 5 +1 = 6. Рассмотрим разрез ( X , X ), где X ={s, a,b}, X ={c, d,t}. Его пропускная способность равна 4 + 5 + 4 =13. Мы имеем: 5 13.

 

4,4

 

 

2,2

 

s,a,b

5,1

c,d,t

 

4,2

 

xx

Рис. 2.73

Оказывается, такое неравенство выполняется во всякой сети для любого потока и любого разреза. Сформулируем этот факт в виде леммы, которая потребуется затем для доказательства основной теоремы. Лемма. Величина любого потока в сети не превосходит пропускной

способности любого разреза, т.е. v( f ) c( X , X ).

Доказательство. Пусть f поток и ( X , X ) разрез. Пусть N

множество всех узлов сети. По определению потока имеем:

f (s, N) f (N, s) = v, f (a, N) f (N, a) = 0 при a s,t и

f (t, N) f (N,t) = −v. Складывая выражения f (x, N) f (N, x) для x X и учитывая, что s X , t X , получим:

f( X , N) f (N, X ) = v. Отсюда следует, что

v = f ( X , N ) f ( X , N) = f ( X , X X ) f ( X X , X ) = = f ( X , X ) + f ( X , X ) f ( X , X ) f ( X , X ) =

= f ( X , X ) f ( X , X ) c( X , X ),

так как f ( X , X ) 0. Лемма доказана.

Итак, величина любого потока меньше или равна пропускной способности любого разреза. Поэтому, если мы найдём поток и разрез,

для которых v( f ) = c( X , X ), то поток будет максимальным (а разрез –

минимальным). На этом простом замечании основаны алгоритм построения максимального потока и основная теорема о максимальном потоке, к изложению которых мы сейчас переходим.

Алгоритм построения максимального потока в сети.

1-й шаг. Полагаем для каждого ребра (x, y) данной сети f (x, y) = 0. 2-й шаг. Будем просматривать узлы сети и расставлять на них пометки

вида (x+ ,ε(x)) или (x,ε(x))

(ε(x) > 0) по следующему принципу.

Источнику s присваиваем метку

( , ). Если вершина a уже

помечена, а вершина x ещё нет, то мы помечаем вершину x в

следующих случаях:

 

(α)

если есть ребро из a в x и

f (a, x) < c(a, x);

(β)

если есть ребро из x в a и

f (x, a) > 0.

В случае (α) вершина x получает метку (a+ , ε(x)), где

ε(x) = min{ε(a), c(a, x) f (a, x)}; в случае (β) метку

(a, ε(x)), где ε(x) = min{ε(a), f (x, a)}.

Просмотр вершин и расстановку меток будем продолжать, пока это

ai

ai+1

ai+1

ai

Рис. 2.74

возможно. При этом могут представиться следующие случаи:

(1)вершина t оказалась помеченной;

(2)вершина t не помечена, но больше никакие вершины пометить

невозможно.

Покажем, что в случае (1) величину потока можно увеличить, а в случае

(2) построенный поток является максимальным. Действительно, пусть имеет место случай (1). Тогда в процессе расстановки меток можно

будет “добраться” из s в t. Следовательно, существует путь (s, a1), (a1, a2 ), ... , (ak ,t), состоящий из помеченных вершин. Будем считать,

что вершины этого пути взяты в “хронологическом” порядке (т.е. в порядке, в котором расставлялись метки). Некоторые из стрелок

(ai , ai+1 ) прямые, а некоторые обратные (см. рис 2.74).

c>f

(a+,ε (b))

f >0 (a

 

ε (b))

,

a

b

a

b

 

 

Рис. 2.75

 

 

 

Метки для прямых и обратных стрелок выглядят так, как показано на рис. 2.75.

Из принципа расстановки меток видно, что

ε(s) ε(a1 ) ... ε(ak ) ε(t) > 0.

3-й шаг. Увеличим величину потока v на число ε(t), прибавив ε(t) к

потоку f (ai , ai+1 )

для прямых рёбер и отняв ε(t)

от f (ai+1, ai ) для

обратных рёбер (см. рис. 2.76).

 

 

 

 

(t)

(t)

−ε (t)

(t)

s

a1

a2

a3

t

Рис. 2.76

Условия (а) и (б) при этом не нарушатся, и мы получим поток величины v +ε(t). После этого стираем все метки и начинаем расстановку меток

заново, т.е. возвращаемся к шагу 2.

Пусть теперь имеет место случай (2), т.е. в процессе расстановки меток “добраться” до вершины t невозможно. Докажем, что в этом случае алгоритм можно считать завершённым, так как построенный поток уже максимальный. Обозначим через X множество всех помеченных

вершин, а X непомеченных. Очевидно, ( X , X ) разрез. Покажем,

что для стрелок из X

в

X

имеет место равенство c(x, y) = f (x, y),

а для стрелок из

 

в

X равенство

f (x, y) = 0.

X

Действительно, пусть a X , b

 

.

Если f (a,b) < c(a,b), то

X

вершина b может быть помечена меткой (a+ , min{ε(a), c f }), поэтому b X , что невозможно. А если f (b, a) > 0, то вершина b

 

f1=c1

 

f2=c2

 

f3=0

x

x

 

Рис. 2.77

получает метку (a, min{ε(a), f (b, a)}), поэтому b X , что

невозможно. Для данного разреза ( X , X ) мы имеем:

v( f ) = f ( X , N) f ( X , N) = f ( X , X ) f ( X , X ) = = f (x, y) f ( y, x) = c(x, y) 0 = c( X , X ).

x X

x X

x X

y X

y X

y X

Так как величина потока равна пропускной способности разреза, то поток максимальный.

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

пропускные способности c(x, y) являются рациональными числами.

Это ограничение не носит принципиального характера, так как действительное число можно приблизить с любой степенью точности рациональным числом, а при реализации на компьютере действия и так проводятся лишь с рациональными числами. Заметим, что наш

алгоритм монотонный в том смысле, что величина потока v( f ) в ходе алгоритма постоянно увеличивается. Так как числа c(x, y)

рациональны, то можно их привести к общему знаменателю, а затем умножить на знаменатель; 7таким образом, можно считать, что все

c(x, y) целые числа. В ходе работы алгоритма числа f (x, y) будут также получаться целыми, а значит, и числа v( f ) целые. Монотонность алгоритма означает, что 0 = v0 < v1 < v2 < ... ( vi

величина потока на i-й итерации алгоритма). Очевидно, последовательность v1, v2 , ... ограниченная. Так как члены последовательности – целые числа, то величина v( f ) достигнет своего наибольшего значения, а значит, алгоритм будет завершён.

Из алгоритма нахождения максимального потока и леммы следует основная теорема о потоках в сетях:

Теорема Форда – Фалкерсона. Для всякой сети существуют поток f

и разрез ( X , X ) такие, что величина потока равна пропускной

способности разреза: v( f ) = c( X ,

X

 

). В этом случае поток

f

максимальный.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примеры решения задач

 

1. Построить максимальный поток в сети,

 

 

 

 

 

 

a

 

изображённой на рисунке 2.78, и найти разрез,

 

 

 

 

5

 

пропускная способность которого равна

 

 

 

 

 

 

 

3

величине потока.

 

 

 

 

 

 

 

 

 

 

 

s

 

 

4

 

 

t

Решение. Вначале положим для всех рёбер

 

 

 

2

 

 

3

f (x, y) = 0. Двигаясь от вершины s,

будем

 

 

 

 

b

расставлять пометки (см. рис. 2.79).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(s+,5)

 

a

 

 

 

Так как

 

 

 

 

 

Рис. 2.78.

 

 

 

 

 

 

 

вершина t

 

 

 

 

(

 

,

) 5

 

3 (a+,3)

 

оказалась помеченной, то можно

 

 

 

величину потока увеличить. Вдоль пути

 

 

 

 

 

s

4

 

t

 

 

 

s a t увеличим поток через рёбра

 

 

 

2

 

3

 

 

 

этого пути на ε(t) = 3. Тогда получим

 

 

 

 

 

 

 

 

 

распределение потока через рёбра,

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

изображённое на рис. 2.80.

 

 

 

 

Рис 2 79

a

 

Снова расставляем метки – см. рис.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

3

 

3

 

 

 

 

 

 

3

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

,

 

 

 

 

 

 

,

 

,

 

 

 

 

 

 

 

 

 

5

 

3

 

 

 

 

 

s

5

 

3

(b+,2)

 

 

 

 

 

s

 

4,0

 

t

 

 

 

 

 

4,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

(

 

 

, )

 

 

 

 

 

 

 

 

2

 

 

0

 

 

 

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

(s+,2) b

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.80

 

 

 

 

 

 

 

 

Рис. 2.81

 

2.81. Затем вдоль пути s b t увеличиваем поток через рёбра на ε(t) = 2 (рис. 2.82). Расставляем метки ещё раз (см. рис. 2.83). Теперь “добраться” до вершины t невозможно. Значит, поток является

максимальным. Его

 

 

 

a

 

 

 

 

(s+,2) a

 

 

 

величина равна

 

3

 

3

 

 

 

3

 

3

 

 

v = 0 + 3 + 2 = 5.

 

,

 

,

 

 

 

,

 

,

 

 

5

 

3

 

 

s

5

 

3

 

Пусть X ={s, a}

s

 

 

4,0

 

t

 

 

4,0

 

t

(множество вершин,

 

2

 

 

 

2

 

(

, )

2

 

 

2

 

 

 

 

 

 

 

,

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

,

 

до которых можно

 

2

 

 

 

 

0

 

 

 

 

 

3

 

 

 

 

 

b

3

 

 

“добраться” из s),

 

 

 

b

 

 

 

 

 

 

 

 

 

 

={b,t}

 

Рис. 2.82

 

 

 

 

Рис. 2.83

 

 

 

X

 

 

 

 

 

 

 

оставшиеся вершины.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для разреза ( X ,

 

) имеем:

c( X ,

 

 

) = c(a,t) + c(s,b) = 3 + 2 = 5.

 

X

X

 

Значит, v = c( X , X ).

2. Проверить, является ли поток в сети максимальным:

 

a

4

 

,

2,1

5

s

 

6

 

,

 

3

 

c

6,5

b

6

 

 

 

 

,

 

 

6

 

4,1

t

 

 

 

 

1

 

 

,

2,2

d

5

 

Рис. 2.84

Решение. Так как существует путь s a b d t, в котором c > f для прямых стрелок и f > 0 для обратной стрелки, то поток не

максимальный. Его можно увеличить на число min{5 4, 6 5,1, 5 1} =1.

Задачи для самостоятельного решения

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

1. Построить максимальный

 

 

 

 

 

5

 

 

 

 

2

 

 

 

 

поток в сети, рассматривая

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

s

 

4

b

4

c 6

 

 

t

 

пути sat,

sbact,

sdt,

sact,

 

 

 

2

 

2

3

 

 

4

 

 

 

sbacdt :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Построить максимальный

 

 

 

 

 

 

 

Рис. 2.85

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поток в сети. Найти какой-либо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

разрез, пропускная способность которого равна величине потока:

а) см.

 

рис. 2.86;

 

 

б) см. рис. 2.87.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

2

b

5

c

 

 

 

 

 

 

 

 

 

4

 

2

 

 

3

 

 

s

5

 

 

1

3

 

 

3

 

 

t

 

s

5

2

 

3

2

4

1

 

 

t

4

 

 

 

 

6 2

 

 

 

 

 

 

 

 

 

 

 

2

4

f

 

 

 

5

 

5

4

3

2

3

 

4

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

d

 

e

 

3

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

Рис. 2.86

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.87

 

 

 

 

 

3. Найти величину максимального потока в сети:

 

 

 

 

 

 

 

 

а) см. рис. 2.88;

б) см. рис. 2.89.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

2

 

 

 

 

 

 

 

 

5

4

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

5s 5

34

 

 

 

 

 

 

 

4

3

 

 

4

 

5

 

 

 

 

 

 

 

2t

 

 

 

 

s

 

 

 

3

 

2

4

 

 

3

 

 

3

 

 

4

 

4

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

5

3

 

 

 

 

2

6

 

3

 

t

 

 

 

 

 

 

 

2

 

 

 

 

t

 

 

 

 

2

 

Рис. .22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.88

 

 

 

 

 

 

 

 

Рис. 2.89

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Привести пример двух различных потоков в

 

 

4

 

 

3

 

 

сети, изображённой на рисунке 2.90, каждый из

 

 

 

 

 

 

которых максимален.

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.90

 

 

1.

s

Ответы

,5

a

 

5

 

 

1

4

4,3 b

 

,

2

 

 

4

 

,

 

 

2

 

1

 

 

,

 

,

3

2,

2

 

 

 

 

2

 

 

 

d

2,2

c 6 t

,3 4

Рис. 2.91

 

 

 

 

2. а) см. рис. 2.92, разрез: X ={s, a, d},

 

 

 

={b, c, e, f ,t};

 

X

б) см. рис. 2.93, разрез: X ={s, a,b, g},

 

={c, d, e, f , h, k, t} (ответ

X

неоднозначен);

 

 

 

 

 

a

2

b

3 c

s

3

 

1

 

 

3

1

 

 

 

 

 

 

 

 

 

 

2

 

2

 

f

 

 

d

 

e

2

 

a

2

 

b

2

c

2

 

t s

5

 

3

 

e

4

 

f

 

d

 

 

 

 

t

 

 

 

 

 

 

3

1

 

 

 

 

4

 

3

 

 

 

 

 

 

 

 

3

 

h

2

 

 

2

 

 

g

 

k

 

 

Рис. 2.92

 

 

 

 

 

Рис.2.93

3. а) v = 8; б) v =11. 4. См. рис. 2.94.

 

 

s

3

 

3

3

 

3

 

 

 

 

t s

 

t

4

 

 

1

1

 

1

 

 

 

 

Рис. 2.94