Microsoft PowerPoint - mp11-06.pptx

Similar documents
Microsoft PowerPoint - mp13-07.pptx

Microsoft PowerPoint - mp11-02.pptx

情報システム評価学 ー整数計画法ー

Microsoft PowerPoint - ad11-09.pptx

Microsoft PowerPoint - 13.ppt [互換モード]

PowerPoint Presentation

Microsoft PowerPoint - 13approx.pptx

Microsoft PowerPoint - no1_17

スライド タイトルなし

Microsoft PowerPoint - no1_19.pptx

三者ミーティング

PowerPoint プレゼンテーション

Microsoft PowerPoint - algo ppt [互換モード]

Microsoft PowerPoint SIGAL.ppt

Microsoft PowerPoint - DA2_2018.pptx

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - DA2_2017.pptx

混沌系工学特論 #5

アルゴリズムとデータ構造

…好きです 解説

スライド 1

040402.ユニットテスト

離散数学

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

umeda_1118web(2).pptx

A Constructive Approach to Gene Expression Dynamics

Microsoft PowerPoint - 05.pptx

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Microsoft PowerPoint - H21生物計算化学2.ppt

1.民営化

PowerPoint プレゼンテーション

Microsoft PowerPoint - H22制御工学I-2回.ppt

DVIOUT

Microsoft Word - 16wakui

Microsoft Word - NumericalComputation.docx

学習指導要領

Microsoft PowerPoint - ca ppt [互換モード]

Microsoft PowerPoint - 06.pptx

4 単元構想図 ( 全 14 時間 ) 生徒の意識の流れ 表を使って解く 縦 (m) 0 8 横 (m) x= 右辺の形に式を変形して 二次方程式を解こう1 ax = b (x + m) = nは平方根の考えで解くことができる x= 右辺の形に式を変形して 二次方程式を解こう2 x +

学習指導要領

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

OR#5.key

memo

! Aissi, H., Bazga, C., & Vaderpoote, D. (2009). Mi max ad mi max regret versios of combiatorial optimizatio problems: A survey. Europea joural of ope

Microsoft Word - 5章摂動法.doc

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

ボルツマンマシンの高速化

データ構造

Microsoft Word - 201hyouka-tangen-1.doc

平成 30 年度 前期選抜学力検査問題 数学 ( 2 時間目 45 分 ) 受検番号氏名 注 意 1 問題は, 表と裏にあります 2 答えは, すべて解答欄に記入しなさい 1 次の (1)~(7) の問いに答えなさい (1) -3 (-6+4) を計算しなさい 表合計 2 次の (1)~(6) の問

nlp1-04a.key

2008 年度下期未踏 IT 人材発掘 育成事業採択案件評価書 1. 担当 PM 田中二郎 PM ( 筑波大学大学院システム情報工学研究科教授 ) 2. 採択者氏名チーフクリエータ : 矢口裕明 ( 東京大学大学院情報理工学系研究科創造情報学専攻博士課程三年次学生 ) コクリエータ : なし 3.

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

Microsoft PowerPoint - 01-yagiura.ppt

Microsoft Word - 非線形計画法 原稿

PowerPoint プレゼンテーション

Microsoft PowerPoint - DA2_2019.pptx

大気環境シミュレーション

Microsoft PowerPoint - 09-search.ppt [互換モード]

<4D F736F F D208EC08CB18C7689E68A E F193F18D8095AA957A C C839395AA957A814590B38B4B95AA957A2E646F63>

Learning Bayesian Network from data 本論文はデータから大規模なベイジアン ネットワークを構築する TPDA(Three Phase Dependency Analysis) のアルゴリズムを記述 2002 年の発表だが 現在も大規模用 BN モデルのベンチマークと

Autodesk Inventor Skill Builders Autodesk Inventor 2010 構造解析の精度改良 メッシュリファインメントによる収束計算 予想作業時間:15 分 対象のバージョン:Inventor 2010 もしくはそれ以降のバージョン シミュレーションを設定する際

こまった専門家たち 非実践的アルゴリズム研究者 わかみず会 ( ) 前田英次郎

Microsoft PowerPoint - kougi9.ppt

PowerPoint Presentation

Microsoft PowerPoint - H20第10回最短経路問題-掲示用.ppt

Microsoft Word - COMP-MATH-2016-FULLTEXT.doc

Microsoft PowerPoint - algo ppt [互換モード]

OCW-iダランベールの原理

計算機シミュレーション

離散数学

数学○ 学習指導案

Microsoft PowerPoint - 13基礎演習C_ITプランナー_2StableMatching.pptx

Microsoft Word - no12.doc

学習指導要領

データ解析

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

学力スタンダード(様式1)

09.pptx

.( 斜面上の放物運動 ) 目的 : 放物運動の方向の分け方は, 鉛直と水平だけではない 図のように, 水平面から角 だけ傾いた固定した滑らかな斜面 と, 質量 の小球を用意する 原点 から斜面に垂直な向きに, 速さ V で小球を投げ上げた 重力の加速度を g として, 次の問い に答えよ () 小

微分方程式による現象記述と解きかた

Microsoft PowerPoint - 5.ppt [互換モード]

先週のベスト感想 ( 講義で分った事 ) 組合せ最適問題を解くときは 条件を厳しくしすぎるとコンピュータでも時間がかかりすぎるので どの程度の条件にするのかが大切である 2017/6/15 2

<4D F736F F D208CF68BA48C6F8DCF8A C30342C CFA90B68C6F8DCF8A7782CC8AEE967B92E8979D32288F4390B394C529332E646F63>

アルゴリズム入門

Microsoft PowerPoint - 第3回2.ppt

生命情報学

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ

オートマトンと言語

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

ネットワークフローとその代表的な問題

Microsoft PowerPoint - qcomp.ppt [互換モード]

Microsoft PowerPoint - DA2_2018.pptx

情報処理Ⅰ

位相最適化?

アクション講座 第1回目

学習指導要領

第 5 章 構造振動学 棒の振動を縦振動, 捩り振動, 曲げ振動に分けて考える. 5.1 棒の縦振動と捩り振動 まっすぐな棒の縦振動の固有振動数 f[ Hz] f = l 2pL である. ただし, L [ 単位 m] は棒の長さ, [ 2 N / m ] 3 r[ 単位 Kg / m ] E r

Transcription:

数理計画法第 6 回 塩浦昭義情報科学研究科准教授 shioura@dais.is.tohoku.ac.jp http://www.dais.is.tohoku.ac.jp/~shioura/teaching

第 5 章組合せ計画 5.2 分枝限定法

組合せ計画問題 組合せ計画問題とは : 有限個の もの の組合せの中から, 目的関数を最小または最大にする組合せを見つける問題 例 1: 整数計画問題全般 ( 整数の組合せ ) 例 2: グラフの最小木問題, 最短路問題,( グラフの枝の組合せ ) 例 3: 巡回セールスマン問題 ( 都市の順列 ) 解きやすい問題と解きにくい問題 解きやすい問題 多項式時間で解ける問題 解きにくい問題 NP 困難な問題 ( 多項式時間で解けないと信じられている問題 ) 注意 : 組合せ計画問題の解は有限個 有限時間で必ず解ける!

最小木問題 入力 : 無向グラフ G=(V,E), 各枝の長さ d(e) (e E) 出力 :G の最小木 (G の全域木で, 枝の長さの和が最小のもの ) 3 4 3 2 1 4 5 3 2 2 3 全域木であり, 最小木である ( 長さの和 =14)

巡回セールスマン問題 セールスマンが n 都市をちょうど一回ずつ巡回する 都市 i から j への距離は c ij ( 平面上の距離で与えられるケースも多い ) 目的 : 都市を巡回する際の総距離を最小にする 1 2 5 3 6 4

組合せ計画問題に対するアプローチ 組合せ計画問題をどのように解くか? 解きやすい問題の場合 多項式時間アルゴリズムを構築 ( 教科書 5.1) より高速な解法へ 解きにくい問題の場合 絶対に最適解が必要な場合 厳密解法 分枝限定法 ( 5.2, 授業で説明 ) 現在の主流 動的計画法 ( 5.3, アルゴリズムとデータ構造 ) ある程度良い解であれば十分という場合 精度保証付き近似アルゴリズム ( 解の良さに対する理論保証あり ) ヒューリスティックス ( 解の良さは実験的に証明 ) ( 5.4, 5.5)

組合せ計画問題に対する厳密解法 組合せ計画問題は解を全列挙すれば解ける しかし, 計算時間が膨大で現実には不可能 解の全列挙における無駄を出来るだけ省く 動的計画法 : 同一の部分問題を繰り返し解かない 分枝限定法 : ある部分問題から最適解が得られないことがわかったら, その部分問題は無視する

分枝限定法の考え方 組合せ計画問題を, 場合分けによって部分問題に分解 ( 分枝操作 ) 0-1ナップサック問題 : 各変数について 0 の場合と 1 の場合に分ける 巡回セールスマン問題 : 次に訪問する都市によって場合分け 分枝の進行の様子は探索木により表現可能

0-1 ナップサック問題の探索木 を 0 に固定 を 1 に固定 部分問題 x 2 =0 x 2 =1 x 1 =0 x 1 =1 x 2 =0 x 2 =1 部分問題 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 (0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1)

巡回セールスマン問題の探索木 4 都市 {A,B,C,D} の対称巡回セールスマン問題の場合 最初の訪問都市は A 2 番目の訪問都市 C B D 3 番目の訪問都市 C D B D B C 最終的な訪問の順番 ABCD ABDC ACBD ACDB ADBC ADCB

分枝限定法の考え方 分枝操作により, たくさんの部分問題が生成される 解く必要のない ( 解いても無駄な ) 部分問題が検出されたら, さらなる分枝操作をストップ ( 限定操作 ) 暫定解の保持と緩和問題の利用により, 無駄をチェック 暫定解 : 分枝限定法のそれまでの計算により得られている最良の許容解 緩和問題 : 元の数理計画問題の制約条件の一部を緩和して得られる問題 解く必要のない部分問題の例 最適解がすでに得られた 現在の暫定解より良い許容解を得られる可能性がなくなった 許容解が存在しない ( 実行不可能 )

緩和問題 緩和問題 : 元の数理計画問題の制約条件の一部を緩和して得られる問題 目的関数 : 最大 制約条件 :,,, 0,1 0-1 ナップサック問題 目的関数 : 最大 制約条件 : 0 1 1,2,, 0,1 を 0 1 に緩和 連続ナップサック問題 連続ナップサック問題は線形計画問題 多項式時間で解ける O(n) 時間アルゴリズムが存在 ( アルゴリズムとデータ構造 )

緩和問題の性質 緩和問題は元の問題より解きやすい ( 簡単に解ける ) ことが多い 通常, 簡単に解ける問題を緩和問題として選ぶ 緩和問題は元の問題の条件を緩和した問題 緩和問題の実行可能解集合は, 元の問題の実行可能解集合を含む 緩和問題の最大値 元の問題の最大値 緩和問題の最適値 ( 最大値 ) は, 元の問題の最適値の上界 緩和問題の最適解を修正することにより, 元の問題の実行可能解を作ることが可能なケースが多い 緩和問題の最適解が元の問題の実行可能解 元の問題の最適解になっている!

0-1 ナップサック問題の緩和問題 : 例 緩和問題の最適解は, / の大きい方から順に変数を増やしていけば得られる 15 100 90 60 40 15 10 1 2 20 20 30 40 30 60 10 b=102 の合計 72 b (1,1,1,1,(102-72)/40,0,0,0) は最適解目的関数値 =295 0-1 ナップサック問題の最適値 0 に置き換えた解 (1,1,1,1,0,0,0,0) は元問題の実行可能解目的関数値 =265 0 にして 1 とした解 (1,1,1,0,1,0,0,0) も元問題の実行可能解目的関数値 =245

緩和解く必要のない部分問題の例 : 最適解が得られた部分問題 x 1 =0 緩和問題の最適解は (x 2, x 3 ) = (1, 1) ( 整数解 ) 元の部分問題の最適解 (x 1,x 2,x 3 ) =(0,1,1) は暫定解, 目的関数値 =32 この部分問題をさらに調べても, より良い解は得られない この部分問題の探索をストップ

緩和解く必要のない部分問題の例 : より良い解が得られない部分問題 (x 1,x 2,x 3 )=(0,1,1) は暫定解, 目的関数値 =32 x 1 =1 緩和問題の最適解は (x 2, x 3 ) = (1, 2/3) 目的関数値 =23.6666 これは部分問題の上界値, 暫定解の目的関数値 32 この部分問題をさらに調べても, 暫定解より良い解は得られない この部分問題の探索をストップ

解く必要のない部分問題の例 : 実行不可能な部分問題 x 1 =0 x 1 =1 この部分問題は実行不可能 この部分問題の探索をストップ

分枝限定法の流れ 記号 L: 部分問題のリスト, x * : 暫定解,z: 暫定値 ( 暫定解の目的関数値 ) ステップ 0:L={ 元問題 }, z=-,x * は未定義とする. ステップ 1( 探索 ): L が空ならば計算終了. 現在の x * が最適解. L が非空ならば,L から部分問題 P を選び, 削除. ステップ 2( 限定操作 ): 2-a: P が実行不可能であることがわかったら, ステップ 1 へ. 2-b: P の最適解が得られたら, 必要に応じて x *, z を更新してステップ 1 へ. 2-c: P の緩和問題を解いた結果, 暫定解より良い許容解が得られないことがわかったらステップ 1 へ.

分枝限定法の流れ ステップ 2( 限定操作 ): 2-a: P が実行不可能であることがわかったら, ステップ 1 へ. 2-b: P の最適解が得られたら, 必要に応じて x *, z を更新してステップ 1 へ. 2-c: P の緩和問題を解いた結果, 暫定解より良い許容解が得られないことがわかったらステップ 1 へ. ステップ 3( 分枝操作 ): P を場合分けによって P 1, P 2,, P k に分解. L にこれらの問題を入れ, ステップ 1 へ.

分枝限定法の実装における検討事項 分枝限定法の性能は, 各々のステップを如何に実現するかによって左右される どのような順番で部分問題を選ぶか? ( 部分問題の探索法 ) ステップ1( 探索 ): Lが空ならば計算終了. 現在の x* が最適解. Lが非空ならば,Lから部分問題 P を選び, 削除. ステップ2( 限定操作 ): どのように実行不可能 2-a: P が実行不可能であることがわかったら, ステップ1へ. 2-b: P の最適解が得られたら, 必要に応じて性を判定するか x*, z を更新して? ステップ1へ. 2-c: P の緩和問題を解いた結果, 暫定解より良い許容解がどのような緩和問題を得られないことがわかったらステップ1へ. 解くか? ステップ3( 分枝操作 ): P を場合分けによってP 1, P 2,, P k に分解. L にこれらの問題を入れ, ステップ1へ. どのように問題を分解するか?

分枝限定法の実装における検討事項 部分問題の探索法 どのような順番で部分問題を選ぶか? 限定操作のやり方 どのように実行不可能性を判定するか? どのような緩和問題を解くか? 分枝操作のやり方 どのように問題を分解するか?

部分問題の探索法 最良優先探索と深さ優先探索が一般的 最良優先探索 最も良い許容解が得られそうな部分問題を優先的に選ぶ 緩和問題から得られる上界値などを部分問題の評価値として使用する 利点 : 計算終了までに解く部分問題の数が少ない 計算時間が少ない 深さ優先探索 部分問題の深さがより大きい問題を優先的に選ぶ 利点 : 実装が簡単, メモリ使用量が少ない, 暫定解を早く得やすい

深さ優先探索を用いた分枝限定法の例 0-1 ナップサック問題を例として : 初期の暫定解 x*= 未定義, 暫定解の目的関数値 =- とおく. 解いていない部分問題は元の問題 P のみ P を選ぶ変数 を選択,0 に固定した部分問題 P 1 および 1 に固定した部分問題 P 2 を作る. を 0 に固定 を 1 に固定 P x 1 =0 x 1 =1 P 1 P 2

深さ優先探索を用いた分枝限定法の例 解いていない部分問題は P 1, P 2, 2 つとも深さは同じ 0 に固定した部分問題 P 1 を先に選ぶ P P,, 0,1,2/3 1 元の問題の実行可能解ではない x 2 =0 x 2 =1 目的関数値は暫定解より大きい x 1 =0 緩和問題の最適解 限定操作はできないので, P 3 P 4 分枝操作を行う

深さ優先探索を用いた分枝限定法の例 解いていない部分問題は P 2, P 3, P 4 深さ優先探索を使っているので, もっとも深いところにある問題 P 3, P 4 を優先的に選ぶ今回は 0 に固定した部分問題 P 3 を先に選ぶ x 2 =0 P 3 P 1 x 2 =1 P 4 P 3 は変数 1 個なので簡単に解ける最適解は,, 0,0,1 目的関数値 =21 暫定解,, 0,0,1 とする

深さ優先探索を用いた分枝限定法の例 暫定解,, 0,0,1, 目的関数値 =21 解いていない部分問題は P 2, P 4 深さ優先探索を使っているので, もっとも深いところにある問題 P 4 を優先的に選ぶ x 2 =0 P 3 P 1 x 2 =1 P 4 P 4 は変数 1 個なので簡単に解ける最適解は,, 0,1,0 目的関数値 =14 暫定解の目的関数値より悪いので暫定解は変更しない

深さ優先探索を用いた分枝限定法の例 暫定解,, 0,0,1, 目的関数値 =21 解いていない部分問題はP 2 P 2 を選ぶ P x 1 =0 x 1 =1 x 2 =0 P 1 P 2 x 2 =1 P 3 P 4

深さ優先探索を用いた分枝限定法の例 暫定解,, 0,0,1, 目的関数値 =21 解いていない部分問題はP 2 P 2 を選ぶ P 緩和問題の最適解 x 1 =1,, 1,1,1/3 元の問題の実行可能解ではない 目的関数値 31は暫定解より大きい x 2 =0 限定操作はできないので, 分枝操作を行う P 5 P 2 x 2 =1 P 6

深さ優先探索を用いた分枝限定法の例 暫定解,, 0,0,1, 目的関数値 =21 解いていない部分問題はP 5, P 6 P 5 を選ぶ P 5 は変数 1 個なので簡単に解ける最適解は,, 1,0,0 目的関数値 =10 暫定解の目的関数値より悪いので暫定解は変更しない P x 1 =1 x 2 =0 P 2 x 2 =1 P 5 P 6

深さ優先探索を用いた分枝限定法の例 暫定解,, 0,0,1, 目的関数値 =21 解いていない部分問題はP 6 P 6 を選ぶ P 6 は変数 1 個なので簡単に解ける P 最適解は,, 1,1,0 目的関数値 =24 暫定解の目的関数値より良いので暫定解を変更,, 1,1,0 x 1 =1 x 2 =0 P 2 x 2 =1 解いていない部分問題がなくなった 分枝限定法は終了, 現在の暫定解が最適解 P 5 P 6

分枝限定法の高速化のための工夫 より良い上界値 ( 緩和問題 ) を使う 良い許容解 ( 近似解 ) をあらかじめ計算し, 暫定解として使う 無駄な部分問題を早く削除できる 良い上界値 許容解の計算に時間を使いすぎると逆効果 分枝の工夫 x 1 + x 2 + + x k = 1 と言う制約がある場合には,x j = 1 と言う制約を付加した k 個の部分問題に分割 前処理 : 事前に問題の規模を出来るだけ小さくする 値を固定できる変数を事前に検出 より強い条件式の導出 無駄な条件式の削除

レポート問題 ( 締切 : 次回講義 13:05) 下記のナップサック問題を分枝限定法で解きなさい ただし, ナップサックの容量 =10 とする注意事項 : 深さ優先探索のやり方で部分問題を解くこと 変数を,,, とおいたとき,,,, の順に変数を 0 または 1 に固定して部分問題を生成すること 変数を 0 に固定した問題を優先して解くこと 品物 A B C D 価値 25 9 11 17 重さ 8 3 4 7