Сортировка как линейная программа


24

У удивительного числа проблем есть довольно естественное сокращение к линейному программированию (LP). См. Главу 7 в [1] для примеров, таких как сетевые потоки, двустороннее сопоставление, игры с нулевой суммой, кратчайшие пути, форма линейной регрессии и даже оценка схемы!

Поскольку оценка схемы сводится к линейному программированию, любая проблема в должна иметь формулировку линейного программирования. Таким образом, у нас есть «новый» алгоритм сортировки посредством редукции к линейной программе. Итак, мои вопросыP

  1. Что такое линейная программа, которая будет сортировать массив из действительных чисел?n
  2. Каково время работы алгоритма сортировки по принципу «уменьшить-на-LP-и-решить»?

  1. Алгоритмы С. Дасгупты, С. Пападимитриу и У. Вазирани (2006)


3
Если вы уже знаете ответ, почему вы задаете вопрос?
Юваль Фильмус

2
@Joe Хорошо размещать интересные материалы, даже если вы знаете ответ. Обычный способ сделать это - ответить на ваш собственный вопрос с (тщательно продуманным) дублем (вместо публикации ссылок на какой-либо документ, который может сломаться).
Рафаэль

@ Рафаэль Если никто не напишет ответ, тогда я буду, когда у меня будет время.
Джо

@YuvalFilmus задает вопрос, ответ на который вы знаете, явно рекомендуется при обмене стека .
Джо

Ответы:


23

Следующий ответ в основном эквивалентен тому, который вы уже знаете, но может показаться немного менее «волшебным». С другой стороны, он более технический, но я считаю, что общий метод «напиши свою задачу как оптимизацию матриц перестановок и приведи Биркгофа-фон Неймана» - это здорово знать.

Для перестановки из { 1 , , n } определите матрицу перестановок P σ как матрицу 0-1, такую ​​что P i j = 1, если j = σ ( i ), и P i j = 0 в противном случае. Это просто матрица, которая переставляет координаты вектора x согласно σ : если y = P σ x, то y i = x σσ{1,,n}PσPij=1j=σ(i)Pij=0xσy=Pσx . Теперь я буду обозначатьy= P σ xкакσ(x).yi=xσ(i)y=Pσxσ(x)

Еще одно определение: неотрицательная матрица M является дважды стохастической, если каждая из ее строк и каждый из ее столбцов суммируются в 1.n×nM

И один факт, который очень важен в комбинаторной оптимизации - теорема Биркгофа-фон Неймана:

Матрица является вдвойне стохастической тогда и только тогда, когда она является выпуклой комбинацией матриц перестановок, то есть тогда и только тогда, когда существуют перестановки σ 1 , , σ k и положительные вещественные числа α 1 , , α k, такие что M = k i = 1 α i P σ i и α i = 1 .Mσ1,,σkα1,,αkM=i=1kαiPσiαi=1

Обратите внимание, что дважды стохастическая матрица определяется неравенствами

J : п Σ я = 1 М я J = 1 я , J : М я J0

i:j=1nMij=1
j:i=1nMij=1
i,j:Mij0

Все эти неравенства, взятые вместе, определяют многогранник , и теорема Биркгофа-фон Неймана утверждает, что все экстремальные точки (вершины) этого многогранника являются матрицами перестановок. Из базового линейного программирования мы знаем, что это подразумевает, что любая линейная программа, которая имеет вышеуказанные неравенства в качестве своих ограничений (и не имеет других ограничений), будет иметь матрицу перестановок в качестве оптимального решения.P

Поэтому, учитывая входные данные которые нужно отсортировать, нам просто нужно придумать линейную цель f a ( M ), для которой:a=(a1,,an)fa(M)

  • если σ ( a ) отсортировано, а τ ( a ) нет.fa(Pτ)<fa(Pσ)σ(a)τ(a)

Затем сформулируйте линейную программу с целью максимизировать и приведенные выше неравенства в качестве ограничений, и вы гарантируете, что оптимальным решением является матрица перестановок P σ для σ, такая, что σ ( a ) сортируется. Конечно, легко «считывать» σ из P σ .fa(M)Pσσσ(a)σPσ

Один из вариантов для - это v T M a, где v = ( 1 , , n ) . Подтвердите этоfa(M)vTMav=(1,,n)

  • это линейно по ;M
  • для , е ( Р σ ) = Σ п я = 1 я σ ( я ) ;Pσfa(Pσ)=i=1niaσ(i)
  • σσ(a)σ(a)

И вуаля, у вас есть линейная программа для сортировки. Кажется глупым для сортировки, но на самом деле это мощный метод оптимизации.


1
a

1
Когда существует несколько оптимальных решений, некоторые из них могут не быть матрицами перестановок (но всегда какое-то оптимальное решение будет матрицей перестановок). Если целевая функция постоянна, то все возможные решения являются оптимальными.
Сашо Николов

1
@ Турбо линейная программа полностью написана в этом ответе. Очевидно, что он не имеет ограничений целостности. Я не собираюсь пытаться ответить на ваш второй вопрос. Сядьте и попробуйте записать GI как оптимизирующую линейную функцию по дважды стохастическим матрицам, как я это сделал для сортировки. Убедитесь сами, где это не получается.
Сашо Николов

1
a

1
a
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.