線形プログラムとしてソートする


24

驚くほど多くの問題が、線形計画法(LP)をかなり自然に削減しています。ネットワークフロー、2者間マッチング、ゼロサムゲーム、最短パス、線形回帰、および回路評価などの例については、[1]の第7章を参照してください。

回路評価は線形計画法に帰着するため、問題には線形計画法の定式化が必要です。したがって、線形プログラムへの還元を介した「新しい」ソートアルゴリズムがあります。だから、私の質問はP

  1. 実数の配列をソートする線形プログラムとは何ですか?n
  2. LPへの還元と解決のソートアルゴリズムの実行時間は?

  1. S. Dasgupta、C。Papadimitriou、U。Vaziraniによるアルゴリズム(2006)


3
すでに答えがわかっている場合、なぜ質問をしているのですか?
— ユヴァルフィルマス

2
@Joe答えを知っていても、興味深い資料を投稿しても構いません。そうするための従来の方法は、(詳細な)テイクであなた自身の質問に答えることです(壊れる可能性のあるドキュメントへのリンクを投稿する代わりに)。
— ラファエル

@Raphael誰も答えを書いていないなら、時間があるときに私がします。
— ジョー

@YuvalFilmusが答えを知っているという質問をすることは、スタック交換で明示的に推奨されます。
— ジョー

回答:


23

次の答えは、あなたがすでに知っているものと基本的に同等ですが、少し「魔法的」ではないように思えるかもしれません。一方、より技術的ですが、一般的な手法「置換行列の最適化として問題を記述し、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=σ(私)P私j=0バツσy=Pσバツ。私が示すよYは= P σ Xとしてσ(Xは)これから。y私=バツσ(私)y=Pσバツσ(バツ)

もう1つの定義:非負の行列Mは、各行と各列の合計が1である場合、二重確率です。n×nM

組み合わせ最適化で非常に重要な1つの事実-ビルホフ・フォン・ノイマンの定理:

行列あれば二重に確率論的であり、それは置換行列の凸結合である場合にのみ、すなわち、もし、そこ順列存在する場合にのみ、σ 1、... 、σ kの正の実数は、α 1、... 、α kのようにM = Σ K 私= 1 α I Pは、σ IをそしてΣはα iは = 1。Mσ1、…、σkα1、…、αkM=∑私=1kα私Pσ私∑α私=1

二重確率行列は不等式によって定義されることに注意してください

∀ J :N Σ iは= 1 M I 、J = 1 ∀ I 、J :M 、I 、J ≥ 0を

∀私:∑j=1nM私j=1
∀j:∑私=1nM私j=1
∀私、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σ)=∑私=1n私aσ(私)
  • σσ(a)σ(a)

そして出来上がり、あなたはソートのための線形プログラムを持っています。ソートには馬鹿げているように見えますが、これは実際には最適化の強力な方法です。


1
a

1
複数の最適解がある場合、いくつかは順列行列ではない可能性があります(ただし、常にいくつかの最適解は順列行列になります)。目的関数が一定の場合、すべての実行可能な解が最適です。
— サショニコロフ

1
@Turbo線形プログラムは、この回答で完全に記述されています。明らかに、積分制約はありません。2番目の質問に答えようとはしません。座って、GIを二重確率行列上の線形関数の最適化として書き留めてみてください。これは、ソートのためにここで行った方法です。失敗した場所を確認してください。
— サショニコロフ

1
a

1
a
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.