ВУЗ:
Составители:
Рубрика:
36
каждом. Вершины R называются юношами и соответствуют строкам A.
Вершины C называются девушками и соответствуют столбцам A. В G
имеется ребро (r
i
, c
j
), если a
ij
≠ 0.
(2) Пусть M – паросочетание в G. Вначале M = ι, но в ходе работы
алгоритма M становится непустым. Теперь при фиксированном G и текущем
M мы приписываем ориентацию ребрам G: каждое ребро из M направлено от
юноши к девушке, а каждое из оставшихся ребер G – от девушки к юноше.
Пусть ),( EVG = – полученный этим способом ориентированный граф .
Именно такой способ построения
G
мотивируется следующим его
свойством: ребра любого ориентированного пути в
G
попеременно
принадлежат
E
– M и M. Поэтому если в
G
найден путь , связывающий
свободную девушку со свободным юношей (имеется в виду свобода по
отношению к M), то этот путь необходимо увеличивающий .
(3) Пусть L
0
– множество свободных девушек . Тогда нужно построить
подструктуру уровней ориентированной смежности с корнем в L
0
, пользуясь
поиском в ширину . Нет необходимости строить всю подструктуру.
Достаточно сохранять ребра, идущие от каждого уровня L
i
к уровню L
i+1
. При
этом нужны только уровни L
0
, L
1
, … , L
p
, где p = min{i | L
i
1 {свободные
юноши}≠ ι}.
Построенная подструктура представляет собой ациклический орграф с
девушками в четных уровнях и юношами – в нечетных. Каждый путь от
свободной девушки к свободному юноше – это кратчайший увеличивающий
путь для M, причем его длина равна p. Чтобы найти максимальное множество
путей с различными вершинами, обращается ориентация каждого ребра, и на
подструктуре, отправляясь от свободных юношей уровня L
p
, выполняется
поиск в глубину . Заметим , что если бы ориентация ребер не обращалась , а
поиск начинался от свободных девушек уровня L
0
, то пришлось бы
исследовать много ребер , ведущих к несвободным юношам уровня L
p
, что
потребовало бы значительно большей вычислительной работы . Наконец,
если {P
1
, P
2
, … , P
t
} – найденное множество путей , то можно увеличить
текущее паросочетание M и новое паросочетание имеет кардинальное число
|M| + t.
Если разреженная матрица порядка n имеет z ненулевых элементов, то
алгоритм, строящий внутри фазы максимальное множество путей , требует
памяти и времени O(n, z). Поскольку кардинальное число наибольшего
паросочетания не превышает n, то фаз будет не больше чем 2 n
1/2
+ 2.
Следовательно, весь алгоритм вычисления наибольшего паросочетания
требует времени не более O(n
3/2
, zn
1/2
) и памяти не более O(n, z). Если z =
O(n), что часто выполняется для разреженных матриц , то эти оценки
превращаются в O(n
3/2
) для времени и O(n) для памяти.
3.2.6 Алгоритм Сарджента – Уэстерберга
Несимметричная разреженная матрица, имеющая полную трансверсаль
(т.е. диагональ без нулей ) может быть симметрично переупорядочена к
блочной нижней треугольной форме, если известны сильные компоненты
36 каждом. Вершины R называются юношами и соответствуют строкам A. Вершины C называются девушками и соответствуют столбцам A. В G имеется ребро (ri, cj), если aij ≠ 0. (2) Пусть M – паросочетание в G. Вначале M = ι, но в ходе работы алгоритма M становится непустым. Теперь при фиксированном G и текущем M мы приписываем ориентацию ребрам G: каждое ребро из M направлено от юноши к девушке, а каждое из оставшихся ребер G – от девушки к юноше. Пусть G =(V , E ) – полученный этим способом ориентированный граф. Именно такой способ построения G мотивируется следующим его свойством: ребра любого ориентированного пути в G попеременно принадлежат E – M и M. Поэтому если в G найден путь, связывающий свободную девушку со свободным юношей (имеется в виду свобода по отношению к M), то этот путь необходимо увеличивающий. (3) Пусть L0 – множество свободных девушек. Тогда нужно построить подструктуру уровней ориентированной смежности с корнем в L0, пользуясь поиском в ширину. Нет необходимости строить всю подструктуру. Достаточно сохранять ребра, идущие от каждого уровня Li к уровню Li+1. При этом нужны только уровни L0, L1, …, Lp, где p = min{i | Li 1 {свободные юноши}≠ ι}. Построенная подструктура представляет собой ациклический орграф с девушками в четных уровнях и юношами – в нечетных. Каждый путь от свободной девушки к свободному юноше – это кратчайший увеличивающий путь для M, причем его длина равна p. Чтобы найти максимальное множество путей с различными вершинами, обращается ориентация каждого ребра, и на подструктуре, отправляясь от свободных юношей уровня Lp, выполняется поиск в глубину. Заметим, что если бы ориентация ребер не обращалась, а поиск начинался от свободных девушек уровня L0, то пришлось бы исследовать много ребер, ведущих к несвободным юношам уровня Lp, что потребовало бы значительно большей вычислительной работы. Наконец, если {P1, P2, …, Pt} – найденное множество путей, то можно увеличить текущее паросочетание M и новое паросочетание имеет кардинальное число |M| + t. Если разреженная матрица порядка n имеет z ненулевых элементов, то алгоритм, строящий внутри фазы максимальное множество путей, требует памяти и времени O(n, z). Поскольку кардинальное число наибольшего паросочетания не превышает n, то фаз будет не больше чем 2n1/2 + 2. Следовательно, весь алгоритм вычисления наибольшего паросочетания требует времени не более O(n3/2, zn1/2) и памяти не более O(n, z). Если z = O(n), что часто выполняется для разреженных матриц, то эти оценки превращаются в O(n3/2) для времени и O(n) для памяти. 3.2.6 Алгоритм Сарджента – Уэстерберга Несимметричная разреженная матрица, имеющая полную трансверсаль (т.е. диагональ без нулей) может быть симметрично переупорядочена к блочной нижней треугольной форме, если известны сильные компоненты
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »