データ構造とアルゴリズム
第十四回
(2013年1月18日)
近似アルゴリズム
http://www.sw.it.aoyama.ac.jp/2012/DA/lecture14.html
Martin J. Dürst
© 2009-13 Martin
J. Dürst 青山学院大学
目次
- 前回の復習
- NP 問題への対策
- 近似アルゴリズム
- これからの予定
NP 問題への対応
- NP 完全問題や NP 困難の問題は多い
- 実用的な問題が多い
- 効率的なアルゴリズムは知られてない
- 実用的な対策が必要
NP 問題への対策
- 問題の変更・限定
- 実用的なデータへの対応
- 近似アルゴリズムの設計・使用
一般的な方法もあるが、ある問題に特化したものが多い
NP 問題の変更
具体例: 巡回セールスマン問題
- コストが平面上の直線の距離
- コストが三角不等式を満たす (最適解の 1.5
倍以内の多項式時間のアルゴリズムが存在)
など
実用的なデータへの対応
具体例: 3SAT
- 変数の数に比べて式が長い
→ 解が存在しないことを見せるのは簡単
- 変数の数に比べて式が短い
→ 解を見つけることが簡単
- 変数の数に比べて式が中間の長さ
→ 本当に難しい
細かい調整などで現実的な使用が可能
一年おきの大会: http://www.satcompetition.org
近似アルゴリズム
- 完璧な解がなくてもそれに近いものが欲しい
- 多くの近似アルゴリズムでは
「最適解より何倍以内離れている」
ということが保証できる
- 問題に特化した近似アルゴリズム
- 一般的な近似方法
- シミュレーテッドアニーリング
- 遺伝的アルゴリズム
- など
問題に特化した近似アルゴリズム
具体例: ロード・バランシング
複数の ti
の時間がかかる仕事をm
個の機械でできるだけ早く終わらせる
- アルゴリズム 1:
- 仕事を順番に一番まだ仕事が少ない機械に配置
- 合計時間は最適解の二倍以内
- アルゴリズム 2:
- 仕事を大きい順に一番まだ仕事が少ない機械に配置
- 合計時間は最適解の 1.5倍以内
シミュレーテッドアニーリング
(simulated annealing, 焼き鈍し法)
- 名前の由来: 温度を少しずつ下げながら結晶を創出
- ある解から出発
- 乱数を使って解を変更し、新しい解の候補を作成
- 変更を少しずつ小さくする (温度を下げる)
- 現在より最適な解を保持
- 悪化した解も一部保持
遺伝的アルゴリズム
(genetic algorithm)
- 解を遺伝的情報に例える
- 最初は乱数で作った複数の解から出発
- 各世代において交叉 (組み替え)
と突然変異で新しい解を作成
- いい方の解を乱数を交えて生き残す
これからの予定
- 1月25日 (金曜日1限、9:30-10:55): 期末試験
- 三年前期: 言語理論とコンパイラ