У удивительного числа проблем есть довольно естественное сокращение к линейному программированию (LP). См. Главу 7 в [1] для примеров, таких как сетевые потоки, двустороннее сопоставление, игры с нулевой суммой, кратчайшие пути, форма линейной регрессии и даже оценка схемы!
Поскольку оценка схемы сводится к линейному программированию, любая проблема в должна иметь формулировку линейного программирования. Таким образом, у нас есть «новый» алгоритм сортировки посредством редукции к линейной программе. Итак, мои вопросы
- Что такое линейная программа, которая будет сортировать массив из действительных чисел?
- Каково время работы алгоритма сортировки по принципу «уменьшить-на-LP-и-решить»?
- Алгоритмы С. Дасгупты, С. Пападимитриу и У. Вазирани (2006)
Ответы:
Следующий ответ в основном эквивалентен тому, который вы уже знаете, но может показаться немного менее «волшебным». С другой стороны, он более технический, но я считаю, что общий метод «напиши свою задачу как оптимизацию матриц перестановок и приведи Биркгофа-фон Неймана» - это здорово знать.
Для перестановки из { 1 , … , n } определите матрицу перестановок P σ как матрицу 0-1, такую что P i j = 1, если j = σ ( i ), и P i j = 0 в противном случае. Это просто матрица, которая переставляет координаты вектора x согласно σ : если y = P σ x, то y i = x σσ { 1 , … , n } пσ пя ж= 1 j = σ( я ) пя ж= 0 Икс σ Y= PσИкс . Теперь я буду обозначатьy= P σ xкакσ(x).Yя= хσ( я ) Y= PσИкс σ( х )
Еще одно определение: неотрицательная матрица M является дважды стохастической, если каждая из ее строк и каждый из ее столбцов суммируются в 1.n × n M
И один факт, который очень важен в комбинаторной оптимизации - теорема Биркгофа-фон Неймана:
Обратите внимание, что дважды стохастическая матрица определяется неравенствами
∀ J : п Σ я = 1 М я J = 1 ∀ я , J : М я J ≥ 0
Все эти неравенства, взятые вместе, определяют многогранник , и теорема Биркгофа-фон Неймана утверждает, что все экстремальные точки (вершины) этого многогранника являются матрицами перестановок. Из базового линейного программирования мы знаем, что это подразумевает, что любая линейная программа, которая имеет вышеуказанные неравенства в качестве своих ограничений (и не имеет других ограничений), будет иметь матрицу перестановок в качестве оптимального решения.п
Поэтому, учитывая входные данные которые нужно отсортировать, нам просто нужно придумать линейную цель f a ( M ), для которой:а = ( а1, ... ,N) еa( М)
Затем сформулируйте линейную программу с целью максимизировать и приведенные выше неравенства в качестве ограничений, и вы гарантируете, что оптимальным решением является матрица перестановок P σ для σ, такая, что σ ( a ) сортируется. Конечно, легко «считывать» σ из P σ .еa( М) пσ σ σ( а ) σ пσ
Один из вариантов для - это v T M a, где v = ( 1 , … , n ) . Подтвердите этоеa( М) vTMa v = ( 1 , … , n )
И вуаля, у вас есть линейная программа для сортировки. Кажется глупым для сортировки, но на самом деле это мощный метод оптимизации.
источник