1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7

# конспект · шаг 7 из 7

Конспект: потоки минимальной стоимости

выжимка - её можно унести в заметки

Понятия

Цена ребра a(u, v) - стоимость ЕДИНИЦЫ потока по нему. Стоимость потока - сумма a(u, v)·f(u, v) по всем рёбрам.

Остаточная сеть со стоимостями: прямое ребро - остаток c − f по цене a(u, v); обратное - остаток f−ℓ по цене −a(u, v), где ℓ - нижняя граница потока на ребре. При ℓ=0 обратный остаток равен f; отмена возвращает заплаченное.

Задача о назначениях - n исполнителей, n работ, цена пары; раздать так, чтобы сумма была наименьшей. Транспортная задача - то же самое с объёмами вместо единиц.

Сетевой симплекс - дерево базисных дуг T и небазисные дуги на нижней границе L или верхней U. На T приведённая цена r=0. Улучшение ищут при r<0 на L или r>0 на U; шаг ограничивают остаточные зазоры по циклу. Без верхних ёмкостей U пусто: дуги вне дерева стоят на нижних границах; при нулевых нижних границах их потоки нулевые. Старт проверяют первой фазой с искусственными дугами или обоснованно большой штрафной ценой.

Что унести

критерий оптимальности:
    поток величины K минимален по стоимости
    ⇔ в ОСТАТОЧНОЙ сети нет цикла отрицательной стоимости

проверяется Беллманом-Фордом за O(V·E) по всей остаточной сети
начальные расстояния 0 у всех вершин находят и недостижимые из s циклы
алгоритм как оговорка
последовательные кратчайшие пути (SSP) дополнять по самому дешёвому пути старт минимален для своей величины; пустой подходит при нулевых нижних границах и без исходных отрицательных циклов
отмена циклов взять любой поток нужной величины и убирать отрицательные циклы старт любой; выбор цикла влияет на число шагов
поиск дешёвого пути:  Беллман-Форд          O(V·E) за шаг    (возможны отрицательные цены)
с потенциалами:       Дейкстра              O(E·log V) за шаг
итого SSP:            O(K·V·E)  или  O(K·E·log V),  K - ВЕЛИЧИНА потока
начальный Беллман-Форд при отрицательных исходных ценах: ещё O(V·E)

Потенциалы Джонсона - те же, что в разделе про кратчайшие пути: a'(u, v) = a(u, v) + p[u] − p[v], обновляются после каждого шага. Нулевые начальные потенциалы подходят при неотрицательных исходных ценах. Если отрицательные рёбра есть, а отрицательных циклов нет, начальные потенциалы можно получить Беллманом-Фордом с временным общим источником. При обновлении не прибавляй бесконечные расстояния до недостижимых вершин. Оценка с множителем K предполагает целые нижние и верхние границы потока, целочисленный старт и целую требуемую величину K: каждый шаг увеличивает её хотя бы на 1.

Сведения: назначения - единичные пропускные способности и цены на рёбрах между долями; транспортная задача - запасы и потребности; кратчайший путь - задай каждому ребру ёмкость 1 и нижнюю границу 0, затем найди поток величины 1; для этого сведения в сети не должно быть отрицательных циклов; максимальный поток - цены отсутствуют. Одна модель, разные числа на рёбрах.

задача специализированный алгоритм
назначения n×n венгерский, O(n³); SciPy использует модификацию Jonker-Volgenant
транспортная тот же поток минимальной стоимости

Если задача имеет конечный оптимум, при целых нижних и верхних границах потока и балансах есть целый оптимальный поток: матрица ограничений вполне унимодулярна. Другие оптимальные точки могут быть дробными смесями целых оптимумов. Округлять их независимо нельзя: выбирай целую оптимальную вершину или алгоритм, который сохраняет целость потока. Дробные объёмы транспортной задачи сами по себе целого решения не гарантируют.

Тихие ошибки: искать отрицательный цикл в исходной сети вместо остаточной; забыть минус у обратного ребра; запускать SSP с потока без доказанной оптимальности для своей величины; применять Дейкстру без допустимых потенциалов; считать, что «максимальный поток» и «самый дешёвый поток данной величины» - одна задача; решать назначения жадно (по строкам на пяти исполнителях это 18 против 13).

Куда это ведёт

Дальше - выпуклые стоимости и обобщённые потоки. В первом случае цена следующей единицы зависит от уже отправленного объёма; во втором на дуге меняется сам объём. После этих двух глав конспект раздела соберёт признаки всех изученных моделей.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.