分割統治法
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、アルゴリズムについて説明しています。政治、歴史分野での分割統治については「分割統治」をご覧ください。

分割統治法(ぶんかつとうちほう、: divide-and-conquer method)は、そのままでは解決できない大きな問題を小さな問題に分割し、その全てを解決することで、最終的に最初の問題全体を解決する、という問題解決の手法である。
擬似コード

分割統治法を擬似コードによって表現すると、以下のような再帰呼出しを使ったものとなる。また、分割統治法になっている何らかのアルゴリズムを実装すると、その基本的な骨組みがこのようになる。function conquer(x) is if xは簡単にconquerできる then return conquerの結果 else (x1, x2, ...) := divide(x) // 複数の小さな副問題に分割 (y1, y2, ...) := (conquer(x1), conquer(x2), ...) // 再帰 return synthesize(y1, y2, ...) // 各副問題の解を合成(最大値を選ぶ、等)

具体的なアルゴリズムのサンプルとしては、マージソートの記事などを参照。
その他

分割統治法は、再帰の際に同じ副問題を複数回解いてしまう場合があり、そうした場合にはそれが原因で計算コストが、計算を終えるのが非現実的になるほどに増加(例えば指数的に発散して)しまう事がある。この問題はメモ化で解決できることがある。最初からメモ化を組込んだ手法の例に、動的計画法がある。

(以下はこの手法に限らず一般的な話であるが)再帰呼出しを使ったプログラムでは、再帰が深くなるとスタックが大きく成長し、メモリが足りなくなったり最悪の場合はスラッシングを起こす。再帰をループに書換える手法もあるが、直接の末尾再帰からの書換えでなければ、結局自分で管理するスタックにデータを積むため、労が多いわりに益が少ないこともある。キューを実装に使うこともあるが、それは速度の問題などよりは、縦ではなく横に探索したい(幅優先探索をしたい)といった理由による。
参考文献

数値線形代数における分割統治法について

桑島豊, & 重原孝臣. (2005). 実対称三重対角固有値問題の分割統治法の拡張 (行列・固有値問題における線形計算アルゴリズムとその応用). 日本応用数理学会論文誌, 15(2), 89-115.

桑島豊, & 重原孝臣. (2006). 実対称三重対角固有値問題に対する多分割の分割統治法の改良 (理論, 行列・固有値問題の解法とその応用, 平成 18 年研究部会連合発表会). 日本応用数理学会論文誌, 16(4), 453-480.

廣田悠輔, & 今村俊幸. (2015). 帯行列の一般化固有値問題向け分割統治法. 情報処理学会論文誌コンピューティングシステム (ACS), 8(4), 78-87.

Elsner, L., Fasse, A., & Langmann, E. (1997). A divide-and-conquer method for the tridiagonal generalized eigenvalue problem. en:Journal of computational and applied mathematics, 86(1), 141-148.

Kwak, D. Y., & Kim, J. (2015). A generalization of the divide and conquer algorithm for the symmetric tridiagonal eigenproblem. arXiv preprint arXiv:1506.08517.

Tisseur, F., & Dongarra, J. (1999). A parallel divide and conquer algorithm for the symmetric eigenvalue problem on distributed memory architectures. en:SIAM Journal on Scientific Computing, 20(6), 2223-2236.

Bai, Z., Demmel, J., & Gu, M. (1997). An inverse free parallel spectral divide and conquer algorithm for nonsymmetric eigenproblems. en:Numerische Mathematik, 76(3), 279-308.


因数分解における分割統治法について

園田信吾, 櫻井鉄也, 杉浦洋, & 鳥居達生. (1991). 分割統治法による多項式の数値的因数分解. 日本応用数理学会論文誌, 1(4), 277-290.


計算幾何学における分割統治法について

浅野孝夫. (1984). 計算幾何学とその応用. 情報処理, 25(3).


並列計算における分割統治法について

中島大輔, 藤本典幸, & 萩原兼一. (2000). 分割統治法アルゴリズムの効率的な並列化手法とそのコンパイラの実装. 情報処理学会研究報告アルゴリズム (AL), 2000(5 (1999-AL-071)), 25-32.










アルゴリズム
ソート

比較ソート

バブルソート

選択ソート

挿入ソート

シェルソート

クイックソート

マージソート

ヒープソート

シェーカーソート

コムソート

ノームソート

図書館ソート

イントロソート

奇偶転置ソート

線形時間ソート

鳩の巣ソート

基数ソート

バケットソート

並行ソート

ソーティングネットワーク

バッチャー奇偶マージソート

シェアソート

非効率的

ボゴソート

ストゥージソート

グラフ

トポロジカルソート


探索

リスト

線形探索

二分探索

グラフ

幅優先探索

最良優先探索

均一コスト探索

A*


深さ優先探索

反復深化深さ優先探索

深さ制限探索


双方向探索

分枝限定法

ビームサーチ

文字列

クヌース?モリス?プラット法

ボイヤー-ムーア法

エイホ?コラシック法

ラビン-カープ法

Bitap法


最短経路問題

ダイクストラ法

ベルマン?フォード法

ワーシャル?フロイド法

最小全域木

プリム法

クラスカル法

最大フロー問題
最小カット問題

フォード・ファルカーソン法

エドモンズ・カープ法

線型計画問題

シンプレックス法

カーマーカー法

順序統計量

選択アルゴリズム

クイックセレクト

中央値の中央値


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:18 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef