Задача о назначениях, минимальное вершинное покрытие

advertisement
Паросочетания
Задан двудольный граф.
Построить максимальное паросочетание, найти дефицит и множество с
максимальным дефицитом границы.
Ag, Ah, Ba, Bc, Bf, Bh, Bj, Cg, Da, Dg, Dh, Di, Ed, Eg, Fd, Ff, Fh, Gd, Hb, Hj, Ia,
Ic, Ie, Ih, Jd, Je.
Множество вершин
M = Mb (A, B, C, D, E, F, G, H, I, J) + Me (a, b, c, d, e ,f, g, h, i, j)
1 шаг. Строим паросочетание (П) и отмечаем вершины, входящие в
контролирующее множество (КМ).
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
I
i
J
j
A
a
B
b
C
c
D
d
E
F
e
f
G
g
H
h
I
i
J
j
П – Ag, Ba, Dh, Ed, Ff, Hb, Ic, Je
КМ – A, B, C, D, E, F, H, I, J
Проверяем, есть ли не
контролируемые дуги. Есть. Будем
улучшать паросочетание.
Cg – не контролируется, при этом она
является дублером дуги Ag.
Cg (Ag)
Снимаем контроль с вершины A и
переносим ее на вершину g.
Дуга Ah не контролируется и она –
дублер дуги Dh. Снимаем контроль с
D и переносим его на h.
Cg (Ag) – Ah (Dh)
Дуга Di не контролируется и она не
является дублером какой-либо дуги из
выбранного паросочетания.
Cg (Ag) – Dh (Ah) – Di
Заменяем дуги Ag – Dh на дуги Cg –
Ah – Di и переносим контроль на
вершины-начала дуг, входящих в
паросочетание.
П – Ag, Ba, Cg, Di, Ed, Ff, Hb, Ic, Je
КМ – A, B, C, D, E, F, H, I, J
A
a
B
b
C
c
D
d
E
F
e
f
G
g
H
h
Дуга Eg осталась без контроля, у нее
есть дублер Cg
Gd (Ed)- Eg (Cg)
Переносим контроль на вершину g.
I
i
Все дуги под контролем.
J
j
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
I
i
Множество с максимальным
дефицитом границы
MD = {C, E, G}.
Этим вершинам соответствуют
вершины-концы дуг MDe = {g, d}
J
j
δ = |MD| - |MDe| = 3 – 2 = 1
Еще раз проверяем дуги.
Дуга Gd не контролируется, она
дублер дуги Ed. Переносим контроль
на вершину d
Gd (Ed)
MaxП – Ag, Ba, Cg, Di, Ed, Ff, Hb, Ic,
Je
КМ – A, B, D, F, H, I, J, d, g
Все дуги контролируются.
Максимальное паросочетание и
минимальное контролирующее
множество построено.
Размер максимального паросочетания
p = |Mb| - δ = 10 – 1 = 9
Применение теории паросочетаний
Покрытие графа путями. Теорема Дилворта
Задан граф. Найти покрытие графа минимальным числом путей (s) и
максимальное множество попарно несравнимых вершин.
AE, FC, AB, ED, EC, GD, GF, AG, EB, AF, GH, DF
B
C
A
D
H
E
G
F
Строим матрицу смежности и находим ее транзитивное замыкание (алгоритм
Флойда-Уоршалла)
.
Найдем максимальное паросочетание в двудольном графе, задаваемом
матрицей
.
A
A
B
B
C
C
Все дуги контролируются.
D
D
E
E
F
F
В КМ не попали вершины
V = {B, C, H}. Они и составляют
максимальное множество попарно
несравнимых вершин.
G
G
H
H
MaxП - AB, DF, ED, FC, GH
КМ - {A, D, E, F, G}
s = |V| = |M| - p = 3
Пути, покрывающие граф, – AB, EDFC, GH.
Задача о назначениях. Венгерский алгоритм
Заданы множества K, L (|K|=|L|=m) и матрица P (K, L) (матрица потерь).
Найти наилучшее назначение
a
b
c
d
e
f
g
h
A
32 11 19 18 44 65 23 18
B
41 54 23 19 87 16 25 33
C
47 34 41 26 15 47 29 52
D 73 14 10 0
12 29 33 50
E
37 33 18 29 26 26 41 84
F
72 61 38 96 26 14 55 47
G 38 17 26 49 28 91 97 24
H 32 52 67 71 33 56 54 22
1 шаг. Выполним спуск до нуля каждой строки и каждого столбца матрицы P.
(Порядок не важен, на окончательный результат это не повлияет, хотя
промежуточные матрицы получатся разными).
a
b
c
d
e
g
h
A
11 0
8
7
33 54 3
7
B
15 38 7
3
71 0
0
17
C
22 19 22 11 0
32 5
37
D 63 14 10 0
15 0
f
12 29 24 50
E
9
8
14 66
F
48 47 24 82 12 0
32 33
G 11 0
H 0
9
Матрица P1
11 8
32 11 74 71 7
30 45 49 11 34 23 0
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
Нулевые дуги матрицы P1 образуют
двудольный граф.
Ab, Bf, Bg, Ce, Dd, Ec, Ff, Gb, Ha, Hh
Строим максимальное паросочетание.
П - Ab, Bg, Ce, Dd, Ec, Ff, Ha
КМ – B, C, D, E, F, H, b
Оно не совершенное
пары не нашлось).
(вершине
G
2 шаг. Вычеркнем в матрице P1 все строки и столбцы из полученного КМ, т.е.
строки B, C, D, E, F, H и столбец b
a
b
c
d
e
g
h
A
11 0
8
7
33 54 3
7
B
15
38 7
3
71
0
0
17
C
22
19 22 11
0
32
5
37
D 63
14 10 0
12
29
24
50
E
9
15 0
8
8
14
66
F
48
47 24 82
12
0
32
33
11
f
G 11 0
9 32 11 74 71 7
H 0
30 45 49 11 34 23 0
Найдем минимальный элемент вне
контроля, т.е. среди неперечеркнутых
элементов. δ = P1[A, 7] = 3.
Далее,
Вычитаем
δ
из
неперечеркнутых
элементов матрицы P1,
Прибавляем
δ
к
элементам
перечеркнутым дважды,
Элементы,
перечеркнутые
1
раз,
оставляем без изменений.
Получим матрицу P2
a
b
c
d
e
g
h
A
8
0
5
4
30 51 0
4
B
15 41 7
3
71 0
0
17
C
22 22 22 11 0
32 5
37
D 63 17 10 0
18 0
f
12 29 24 50
E
9
8
14 66
F
48 50 24 82 12 0
32 33
6
11 8
G 8
0
29 8
71 68 4
H 0
33 45 49 11 34 23 0
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
a
b
Строим максимальное паросочетание.
П - Ab, Bg, Ce, Dd, Ec, Ff, Ha
Оно не изменилось, изменилось КМ
КМ – C, D, E, H, b, f, g
Построить совершенное
паросочетание не удалось, повторяем
шаг 2.
c
d
e
0
8
5
B 15 41 7
4
3
30 51 0
71 0 0
4
17
C
37
A
f
Нулевые дуги матрицы P2 образуют
двудольный граф.
Ab, Ag, Bf, Bg, Ce, Dd, Ec, Ff, Gb, Ha,
Hh
g
h
22
22 22
11
0
32 5
D 63
17 10
0
12
29 24 50
E
18 0
11
8
8
9
14 66
F
48 50 24 82 12 0 32 33
G 8
0
71 68 4
6
29 8
H 0
33 45
49
11
34 23 0
δ = P2[B, 7] = 3.
Вычитаем
δ
из
неперечеркнутых
элементов матрицы P2,
Прибавляем
δ
к
элементам
перечеркнутым дважды,
Элементы,
перечеркнутые
1
раз,
оставляем без изменений
Получаем матрицу P3
a
b
c
d
e
g
h
A
5
0
2
1
27 51 0
1
B
12 41 4
0
68 0
0
14
C
22 25 22 11 0
35 8
37
D 63 20 10 0
21 0
9
F
45 50 21 79 8
11 8
26 5
11 17 66
0
32 30
G 5
0
H 0
36 45 49 11 37 26 0
71 68 1
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
Ab, Ag, Bd, Bf, Bg, Ce, Dd, Ec, Ff, Gb,
Ha, Hh
П - Ab, Bg, Ce, Dd, Ec, Ff, Ha
Оно не изменилось, изменилось КМ
КМ – C, E, H, b, d, f, g
δ=1
a
b
c
d
e
0
5
2
B 12 41 4
1
27 51 0
68 0 0
C
11 0
A
22
25 22
0
f
g
35 8
h
1
14
37
D 63 20 10 0
12 32 27 50
E 9
21 0
11 8
11 17 66
F
45 50 21 79 8
G 5
0
26 5
3
0
H 0
37 26 0
36 45
32 30
71 68 1
49 11
И новая матрица P4 Имеет вид
a
b
c
d
e
f
g
h
A
4
0
1
1
26
51 0
0
B
11 41 3
0
67
0
0
13
C
22 26 22 12 0
36 9
37
D 62 20 9
0
E
9
12 8
F
44 50 20 79 7
22 0
2
Из нулевых дуг опять строим
паросочетание
12 32 27 50
E
3
f
11
G 4
0
26 4
H 0
37 45 50 11
32 27 49
12 18 66
0
32 29
71 68 0
38 27 0
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
A
a
B
b
C
c
D
d
E
e
F
f
G
g
H
h
Нулевые дуги
Ab, Ag, Ah, Bd, Bf, Bg, Ce, Dd, Ec, Ff,
Gb, Gh, Ha, Hh
П - Ab, Bg, Ce, Dd, Ec, Ff, Gh, Ha
КМ – A, B, C, D, E, F, G, H
Построено совершенное
паросочетание. Алгоритм завершен.
Наилучшее назначение
P[A,b] + P[B,g] + P[C,e] + P[D,d] + P[E,c]
+ P[F,f] + P[G,h] + P[H,a] =
= 11+25+15+0+18+14+24+32=139
Возможен
и
другой
вариант
совершенного паросочетания
П - Ah, Bg, Ce, Dd, Ec, Ff, Gb, Ha
КМ – A, B, C, D, E, F, G, H
Наилучшее назначение
P[A,h] + P[B,g] + P[C,e] + P[D,d] + P[E,c]
+ P[F,f] + P[G,b] + P[H,a] =
= 18+25+15+0+18+14+17+32=139
Download