分割統治の理論的基礎


22

アルゴリズムの設計に関しては、多くの場合、次の手法を使用します。

  • 動的プログラミング
  • 貪欲戦略
  • 分割統治

最初の2つの方法については、よく知られた理論的基礎、つまりベルマン最適性原理とマトロイド(またはグレドイド)理論がありますが、D&Cに基づくアルゴリズムのこのような一般的なフレームワークは見つかりませんでした。

まず、コンビネータのコンテキストで発生した「アルゴリズムスケルトン」と呼ばれる関数型プログラミングクラスで私たち(またはむしろ教授)が導入したことを認識しています。この例として、D&Cアルゴリズムのスケルトンを次のように指定しました。

定義A,S空でないセットとします。S ソリューションの要素と呼び、の要素= PA P:=P(A)(つまり、のサブセットA)は問題と呼ばれます。次いで、D&C-骨格は 4タプルである(Pβ,β,D,C)ここで、:

  • Pβ問題の集合以上の述語であり、我々は問題のことを言うpされ、基本的なIFFPβ(p)成り立ちます。
  • 、Aマッピングである P βSの各基本的な問題に対する解決策を割り当てます。βPβS
  • は、各問題を一連の副問題に分割するマッピング P PP です。DPP(P)
  • P × PS Sのマッピングであり、サブ問題の解(「ピボット問題」の種類に応じてを結合して解を生成します。CP×P(S)S

次いで、に対して与えられたスケルトンおよび問題Pは、次の汎用関数F SP Sは、のために(形式的な意味での)解を計算Ps=(Pβ,β,D,C)pfs:PSp

fsp={βpもし p 基本ですCpfDpさもないと

ここで、我々は、表記の使用2行目のサブセットのためのXマッピングの終域のFfバツ:={fバツバツバツ}バツf

ただし、この方法で定式化できる問題の根底にある「構造」特性については詳しく調べませんでした(先ほど言ったように、これは関数型プログラミングクラスであり、これはほんの一例です)。残念ながら、私はこのアプローチについてのさらなる参照を見つけることができませんでした。したがって、上記の定義は非常に標準的なものではないと思います。誰かが私が上で述べたことを認識したら、関連記事について喜んでいるでしょう。

第二に、欲張り戦略については、その解が重み付きマトロイドを構成する場合にのみ、一般的な欲張りアルゴリズムによって問題が正しく解決されるという有名な結果が得られます。D&Cアルゴリズムについても同様の結果がありますか?

回答:


5

いわゆる擬似モルフィズム(つまり、ほぼモルフィズムであり、事前計算および事後計算が行われた関数)と呼ばれるものを使用した、主題の形式的な処理(質問で提案されたモデルに多少似ている)、および複雑さの考慮このようなアルゴリズムの分析と並列実装は次のとおりです。

Zhijing G. MouおよびPaul Hudakによる分割統治とその並列性の代数モデルThe Journal of Supercomputing、Volume 2、Issue 3、pp。257-278、1988年11月)


1

BellmanのDivide and Conquerアルゴリズムの最適化原則ほど具体的なものは知りません。しかし、分割統治の根底にある基盤は、問題の入力の再帰的(または帰納的)定義であり、問​​題の解決策をより大きな解決策に結合する手段であるように思われます。ここでの重要な洞察は、問題の入力について再帰的に考え、それを再帰的なD&Cアルゴリズムに活用することです。

例としてmergesortを取り上げます。入力、要素の配列から始めましょう。次のように、配列の構造を再帰的に定義できます。n

  • 以下のために、配列は空です。n=0
  • 以下のためのn=1、配列はシングルトン要素であります
  • 以下のために、配列のサイズの配列を連結したものであるNn>1)およびサイズNn2n2

n1ます。基本的に、データの再帰構造を取得し、それを再帰ソリューションにマッピングしたことに注意してください。

これが必ずしもD&Cアルゴリズムに期待するものにつながるとは限らないことに注意することが重要です。次のように配列構造を定義できます。

  • 以下のために、N = 0n=0
  • n>0n1

ここでマージソートに使用したのと同じ戦略に従って、再帰的な挿入ソートが行われます。そのため、通常、複数の再帰要素を含む再帰定義を開発します。つまり、データセットを半分または3分の1にカットします。

現在、D&Cアルゴリズムを分析するためのマスター定理があり、これは特定の全体的なランタイム効率を備えたD&Cアルゴリズムのサブコンポーネントに対する期待される効率にいくらかの光を当てます。


あなたが与える例は、私の質問で私が与える一般的な文脈に適合します(そして実際、具体的なアプリケーションを与えることが役立つかもしれません)。しかし、私の質問は、このパターンに適合するアルゴリズムによって解決可能な問題の基準(BOPやマトロイド構造など)があるかどうかでした。
コーネリアスブランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.