次の答えは、あなたがすでに知っているものと基本的に同等ですが、少し「魔法的」ではないように思えるかもしれません。一方、より技術的ですが、一般的な手法「置換行列の最適化として問題を記述し、Birkhoff-von Neumannを起動する」は知っておくべき素晴らしいテクニックだと思います。
置換のためのの{ 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σP私はj= 1j = σ(i )P私はj= 0バツσy= Pσバツ。私が示すよYは= P σ Xとしてσ(Xは)これから。y私= xσ(i )y= Pσバツσ(x )
もう1つの定義:非負の行列Mは、各行と各列の合計が1である場合、二重確率です。n × nM
組み合わせ最適化で非常に重要な1つの事実-ビルホフ・フォン・ノイマンの定理:
行列あれば二重に確率論的であり、それは置換行列の凸結合である場合にのみ、すなわち、もし、そこ順列存在する場合にのみ、σ 1、... 、σ kの正の実数は、α 1、... 、α kのようにM = Σ K 私= 1 α I Pは、σ IをそしてΣはα iは = 1。Mσ1、… 、σkα1、… 、αkM= ∑ki = 1α私Pσ私Σのα私= 1
二重確率行列は不等式によって定義されることに注意してください
∀ J :N Σ iは= 1 M I 、J = 1 ∀ I 、J :M 、I 、J ≥ 0を
∀ I :Σj = 1nM私はj= 1
∀ J :Σi = 1nM私はj= 1
∀ I 、J :M私はj≥ 0
これらすべての不等式が一緒になってポリトープ決定し、ビルホフ・フォン・ノイマンの定理は、このポリトープの極値点(頂点)はすべて置換行列であると述べています。基本的な線形計画法から、これは、制約として上記の不等式を持つ(および他の制約がない)線形プログラムには最適解として順列行列があることを意味していることがわかります。P
したがって、ソートされる入力が与えられた場合、線形目標f a(M )を考え出す必要があります。a = (a1、… 、an)fa(M)
- 場合 σ ()ソートされているが、 τ ()ではありません。fa(Pτ)< fa(Pσ)σ(a )τ(a )
次いで最大化するために、目的と線形計画を策定と不等式制約上記のように、あなたは、最適なソリューションは順列行列であることを保証されているP σ用σようσは()ソートされます。もちろん、それは「読み取る」に簡単だσからPのσ。fa(M)Pσσσ(a )σPσ
fa(M)vTMav = (1 、… 、n )
- M
- Pσfa(Pσ)= ∑ni = 1私はσ(i )
- σσ(a )σ(a )
そして出来上がり、あなたはソートのための線形プログラムを持っています。ソートには馬鹿げているように見えますが、これは実際には最適化の強力な方法です。