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