Profile and Contacts� Author: Fei Zhao� Student ID: 085739E� Email: [email protected]� PDF Download: http://bit.ly/semi3-fei� Date: 2011/05/13 (FRI)� 1 目次 4.3.1 問題の定義と定式化 ------------------------------------ 131 4.3.2 近傍 ---------------------------------------------------------- 133 4.3.3 補助メモリによる高速化 -------------------------------- 137 4.3.4 禁断探索法 ------------------------------------------------ 138 4.3.5 遺伝的アルゴリズムと禁断探索法の融合 --------- 138 4.3.6 Python による実装 -------------------------------------- 141 2 4.3.1 問題の定義と定式化 グラフ彩色問題とは: 与えられた無向グラフ G = (V ,E) に対して, 最小の K (彩色 数) を導く K 彩色Υ = {V1 ,...,Vk } を求める問題. ただし, € K 個の部分集合への分割 Υ€= {V1 ,...,Vk } で 点集合 V の €は: € Vi ∩V j = ∅,∀i≠ j K Vj = V € j=1 € € € を満たす 3 4.3.1 問題の定義と定式化 グラフ彩色問題の例: Υ = {V1 ,V2 ,V3 } K =3 V1 = {B,E,D} € € V2 = {F} € V3 = {A,C} € € 4 4.3.1 問題の定義と定式化 グラフ彩色問題の最適解: 3 (色クラスの数). 5 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: minimize K max ∑ yk k=1 K max subject to ∑ xik k=1 € =1 ∀i ∈ V xik + x jk ≤ yk ∀(i, j) ∈ E,k = 1,...,K max xik ∈€{0,1} ∀i ∈ V ,k = 1,...,K max € yk ∈ € {0,1} ∀k = 1,...,K max € € € 6 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: 最適な K 彩色は, 1 ≤ る € y k K max ∑ yk k=1 K ≤ K max (仮定) の整数から選択す yk ∈ {0,1} € ∀k = 1,...,K max 色クラス Vk に含まれる点の数が ≥ 1 のとき otherwise € € 0 € € € € 1 € 7 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: xik ∈ {0,1} ∀i ∈ V ,k = 1,...,K max xik k =1 点 i に塗られた色が € € otherwise k の時 1 € 0 € € € k =2 € € k=3 k = K max € € 8 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: K max ∑ xik k=1 k =1 = 1 ∀i ∈ V k =2 € € 各点 i に必ず一つの色が塗られること € € k=3 k =n € € € k = K max € 9 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: xik + x jk ≤ yk ∀(i, j) ∈ E,k = 1,...,K max € € € xik ∈ {0,1} ∀i ∈ V ,k = 1,...,K max xik + x jk ≤ yk = 1 ( yk = 1 のときのみ色 k で彩色可能) € € 枝(i, j)両端点の点 i と点 j が,同じ色クラスに割り当てられる ことを禁止する € € € € 10 € 4.3.1 問題の定義と定式化 グラフ彩色問題の定式化: xik + x jk ≤ yk = 1 0 0 =0 0 1 =1 1 0 =1 1 1 = 2 (同じ色クラスに 割り当てられる) 11 4.3.1 問題の定義と定式化 応用: 1. 時間割作成 2. スケジューリング 3. 周波数割当 4. レジスタ配分 5. プリント基板テスト 6. パターンマッチング 7. 数独 (81 個の頂点を持つグラフの 9 – 彩色問題) 12 4.3.2 近傍 move 近傍: (一つの点の色を別の色に変える) 13 4.3.2 近傍 move 近傍の定義: ʹ′ } | conditions} N move (Υ) = {Υʹ′ = {V1ʹ′,...,VKʹ′ ,VK+1 conditions : Vcʹ′(i) = Vc (i) \ {i} Vkʹ′ = VkU {i} V jʹ′ = V j (∀j ≠ k,c(i)) k ≠ c(i) k ∈ {1,...,K,K +1} i∈V 14 4.3.2 近傍 move 近傍のペナルティ関数: f (Υ) = K 2 − ∑ Vi i=1 K + 2 ∑ Vi i=1 ⋅ E(Vi ) € 15 4.3.2 近傍 move 近傍おいては, 彩色数 K を小さくするために, 各色クラ スに含まれる点の数をなるべく偏ったものにすること. 9 個の点を三つ分割するとき: € (3,3,3) 2 2 2 (0,0,9) 2 2 2 = 3 + 3 + 3 = 27 = 0 + 0 + 9 = 81 K =3 K =1 € € € € 16 4.3.2 近傍 move 近傍 (制限付き) の定義: N˜ move (Υ) = {Υʹ′ = {V1ʹ′,...,VKʹ′ } | conditions} conditions : Vcʹ′(i) = Vc (i) \ {i} Vkʹ′ = VkU {i} V jʹ′ = V j (∀j ≠ k,c(i)) k ≠ c(i) k ∈ {1,...,K} i∈V B(i) > 0 17 4.3.2 近傍 Kempe chain 近傍の定義: K 彩色 Υ = {V1 ,...,VK } から2つのクラス Vi ,V j を選び, k を Vi ,V j から導かれた部分グラフ上での連結成分とする. k ≠ (Vi ∪V j ) のとき, Vi = Vi Δk € € € V j = V j Δk € で置き換えた 彩色の集合が, Υ の Kempe 近傍である. € € € 18 4.3.2 近傍 Kempe chain 近傍の例: Vi = {A, B} V j = {C,D,E} € € € € k = {A, B,D} Vi ∪V j = {A, B,C,D,E} 19 4.3.2 近傍 Kempe chain 近傍の例: k ≠ Vi ∪V j ∴ Vi = Vi Δk = (Vi \ k) ∪ (k \ Vi ) = {∅} ∪ {D} = {D} € € V j = VΔk = (V j \ k) ∪ (k \ V j ) = {C,E} ∪ {A, B} = {A, B,C,E} 20 € 4.3.2 近傍 Kempe Chain 近傍の例: 21 4.3.2 近傍 Kempe Chain 近傍は 4 色問題の証明に用いられた. 4 色問題とは: 境界で接するどの2つの国も同じ色で塗らないように, 地図の 全ての国を 4 色で塗り分けることができる. 22 4.3.2 近傍 Kempe Chain 近傍においては, move 近傍で用いたペナル ティ関数と同様に, 色クラス Vk の位数をなるべく偏ったものす ることによって, 彩色数 K を減少させる. 下記の目的関数を最大化すれば良い. € € € f (Υ) = K 2 ∑ Vi i=1 23 4.3.2 近傍 近傍の比較: move 近傍 実行不可能解を許可. move 近傍 (制限付き) 実行不可能解を許可. Kempe Chain 近傍 実行可能解上で定義される. 24 4.3.3 補助メモリによる高速化 補助メモリを用いて目的関数値の差の計算を効率的に計算で きる. 補助メモリ BD(i,k) は: 点 i に色 k を塗ったときの点 i に接 続する悪い枝の数を保管する配列である. 補助メモリ BD(i,k) を使うことによって, 点 i の色を k ≠ c(i) に変更したときの目的関数の差は, 下記の式によって O(1) € € € €時間で評価できる. BD(i,k) − BD(i,c(i)) € € € € € 25 4.3.4 禁断探索法 禁断リスト Tabu には, 点と色のペアを保管する. 26 4.3.5 遺伝的アルゴリズムと禁断探 索法の融合 1 初期解 ( K 分割) の集合 P をランダムに生成 2 3 € € € while 終了判定基準が満たされていない 1 2つの親 Υ , do Υ 2 , を P から選択 € 2 4 親 Υ , Υ に対する交叉によって子 Υ を生成 € 5 Υ を禁断探索法によって改善 € € € 6 改善された解を P にいれて, 最も悪い解を除去 € € € 7 return P 1 € 27 END� ご清聴, ありがとうございました. 28
© Copyright 2024 ExpyDoc