Изменения

Перейти к: навигация, поиск

Алгоритм "поднять-в-начало"

12 байт добавлено, 15:00, 30 декабря 2012
м
Алгоритм
== Алгоритм ==
Инициализируем предпоток и высоты, с помощью операции [[Метод проталкивания предпотока#Схема алгоритма|initializePreflow]], список <tex>L</tex> {{- --}} список для хранения всех вершин графа, кроме стока и истока. Проинициализируем указатель <tex>current</tex> каждой вершины <tex>u</tex>, чтобы он указывал на первую вершину в списке <tex>u</tex>.
Пройдем по списку <tex>L</tex> разгружая вершины, начиная с первой вершины. И если операция <tex>discharge</tex> изменила высоту вершины, то перемещаем ее в начало списка <tex>L</tex>. Передвинем указатель на следующую вершину списке <tex>L</tex>, если после разгрузки была изменена высота, то берем следующую вершину в новом списке <tex>L</tex>.
В приведенном псевдокоде предполагается, что для каждой вершины <tex>u</tex> уже создан список <tex>N[u]</tex>.
<tex>nextVartex[u]</tex> возвращает вершину, следующую за <tex>u</tex> в списке <tex>L</tex>. Если <tex>u</tex> {{- --}} последняя вершина в списке, то <tex>nextVartex[u] = null</tex>.
== Корректность алгоритма ==
338
правок

Навигация