Наступна відповідь в основному еквівалентна тій, яку ви вже знаєте, але може здатися трохи менш "магічною". З іншого боку, це більш технічно, але я вважаю, що загальна методика "написати свою проблему як оптимізація на матрицях перестановки і посилатися на Бірхоффа фон Ноймана" - це чудово знати.
Для перестановки з { 1 , ... , п } визначимо матрицю перестановок Р сг як 0-1 матриці , такий , що Р я J = 1 , якщо J = σ ( я ) і Р я J = 0 в іншому випадку. Це просто матриця, яка перетворює координати вектора x відповідно до σ : якщо y = P σ x, то y i = x σσ{ 1 , … , n }ПσПi j= 1j = σ( i )Пi j= 0хσу= Рσх . Я позначаюy= P σ xякσ(x)відтепер.уi= хσ(i )у= Рσхσ( х )
Ще одне визначення: негативна матриця M є подвійно стохастичною, якщо кожен її рядок і кожен з її стовпців дорівнює 1.н × nМ
І один факт, який дуже важливий у комбінаторній оптимізації, - теорема Біркгоффа фон Неймана:
Матриця є вдвічі стохастичною тоді і лише тоді, коли вона є опуклою комбінацією матриць перестановки, тобто тоді і тільки тоді, коли існують перестановки σ 1 , … , σ k і позитивні реалі α 1 , … , α k такі, що M = ∑ k i = 1 α i P σ i і ∑ α i = 1 .Мσ1, … , Σкα1, … , ΑкМ= ∑кi = 1αiПσi∑ αi= 1
Зауважте, що подвійно стохастична матриця визначається нерівностями
∀ j : n ∑ i = 1 M i j = 1 ∀ i , j : M i j ≥ 0
∀ i : ∑j = 1нМi j= 1
∀ j : ∑i = 1нМi j= 1
∀ i , j : Mi j≥ 0
Усі ці нерівності, взяті разом, визначають політоп , а теорема Біркгофа-фон Неймана стверджує, що крайні точки (вершини) цього політопа - це всі матриці перестановки. З базового лінійного програмування ми знаємо, що це означає, що будь-яка лінійна програма, яка має зазначені вище нерівності як свої обмеження (і ніяких інших обмежень), не матиме матрицю перестановки як оптимальне рішення.П
Тому , з огляду на вхід бути відсортований, нам просто потрібно придумати лінійна задача е в ( М ) , для яких:a = ( a1, … , Ан)fа( М)
- якщо σ ( a ) відсортовано, але τ ( a ) - ні.fа( Сτ) < fа( Сσ)σ( а )τ( а )
Потім сформулюйте лінійну програму з метою максимізувати та нерівності, наведені вище, як обмеження, і вам гарантується, що оптимальним рішенням є матриця перестановки P σ для σ, така що σ ( a ) відсортовано. Звичайно, легко "відчитати" σ з P σ .fа( М)Пσσσ( а )σПσ
fа( М)vТМаv = ( 1 , … , n )
- М
- Пσfа( Сσ) = ∑нi = 1я aσ( i )
- σσ( а )σ( а )
І вуаля, у вас лінійна програма для сортування. Здається, нерозумно для сортування, але це насправді потужний метод оптимізації.