Следующий ответ в основном эквивалентен тому, который вы уже знаете, но может показаться немного менее «волшебным». С другой стороны, он более технический, но я считаю, что общий метод «напиши свою задачу как оптимизацию матриц перестановок и приведи Биркгофа-фон Неймана» - это здорово знать.
Для перестановки из { 1 , … , n } определите матрицу перестановок P σ как матрицу 0-1, такую что P i j = 1, если j = σ ( i ), и P i j = 0 в противном случае. Это просто матрица, которая переставляет координаты вектора x согласно σ : если y = P σ x, то y i = x σσ{ 1 , … , n }пσпя ж= 1j = σ( я )пя ж= 0ИксσY= PσИкс . Теперь я буду обозначатьy= P σ xкакσ(x).Yя= хσ( я )Y= PσИксσ( х )
Еще одно определение: неотрицательная матрица M является дважды стохастической, если каждая из ее строк и каждый из ее столбцов суммируются в 1.n × nM
И один факт, который очень важен в комбинаторной оптимизации - теорема Биркгофа-фон Неймана:
Матрица является вдвойне стохастической тогда и только тогда, когда она является выпуклой комбинацией матриц перестановок, то есть тогда и только тогда, когда существуют перестановки σ 1 , … , σ k и положительные вещественные числа α 1 , … , α k, такие что M = ∑ k i = 1 α i P σ i и ∑ α i = 1 .Mσ1, … , ΣКα1, … , ΑКM= ∑Кя = 1αяпσя∑ αя= 1
Обратите внимание, что дважды стохастическая матрица определяется неравенствами
∀ J : п Σ я = 1 М я J = 1 ∀ я , J : М я J ≥ 0
∀ я : ∑J = 1NMя ж= 1
∀ j : ∑я = 1NMя ж= 1
∀ i , j : Mя ж≥ 0
Все эти неравенства, взятые вместе, определяют многогранник , и теорема Биркгофа-фон Неймана утверждает, что все экстремальные точки (вершины) этого многогранника являются матрицами перестановок. Из базового линейного программирования мы знаем, что это подразумевает, что любая линейная программа, которая имеет вышеуказанные неравенства в качестве своих ограничений (и не имеет других ограничений), будет иметь матрицу перестановок в качестве оптимального решения.п
Поэтому, учитывая входные данные которые нужно отсортировать, нам просто нужно придумать линейную цель f a ( M ), для которой:а = ( а1, ... ,N)еa( М)
- если σ ( a ) отсортировано, а τ ( a ) нет.еa( Pτ) < fa( Pσ)σ( а )τ( а )
Затем сформулируйте линейную программу с целью максимизировать и приведенные выше неравенства в качестве ограничений, и вы гарантируете, что оптимальным решением является матрица перестановок P σ для σ, такая, что σ ( a ) сортируется. Конечно, легко «считывать» σ из P σ .еa( М)пσσσ( а )σпσ
Один из вариантов для - это v T M a, где v = ( 1 , … , n ) . Подтвердите этоеa( М)vTMav = ( 1 , … , n )
- это линейно по ;M
- для , е ( Р σ ) = Σ п я = 1 я σ ( я ) ;пσеa( Pσ) = ∑Nя = 1яσ( я )
- σσ( а )σ( а )
И вуаля, у вас есть линейная программа для сортировки. Кажется глупым для сортировки, но на самом деле это мощный метод оптимизации.