平成 25 年度学士論文 絵画的迷路構成問題に対する 制約ソルバーを用いた発見的手法 学籍番号 10B02780 岩本 恵太 指導教員 福田光浩 准教授 2014 年 2 月 24 日 目次 第 1 章 はじめに 1 第 2 章 絵画的迷路構成問題 2.1 定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 既存手法 (絵の部分) . . . . . . . . . . . . . . . . . . . 2.2.1 縮尺変更による完全な迷路の出力 . . . . . . . . 2.2.2 完成度を犠牲にして縮尺を変えない迷路の出力 . 2.3 提案手法 (絵の部分) . . . . . . . . . . . . . . . . . . . 2.3.1 初期解の生成 . . . . . . . . . . . . . . . . . . . 2.3.2 単純な解の拡張 . . . . . . . . . . . . . . . . . . 2.3.3 ハミルトン閉路つめこみ . . . . . . . . . . . . . 2.4 既存手法 (地の部分) . . . . . . . . . . . . . . . . . . . 2.5 提案手法 (地の部分) . . . . . . . . . . . . . . . . . . . 2.5.1 絵の経路に似た枝を伸ばす全域木 . . . . . . . . 第3章 3.1 3.2 3.3 . . . . . . . . . . . 4 4 5 5 6 9 10 12 13 16 16 16 絵画的迷路構成問題の数値実験 複雑度の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 20 21 第 4 章 モザイク絵画的迷路構成問題 4.1 定義 . . . . . . . . . . . . . . . . . . . . . . . . 4.2 提案手法 . . . . . . . . . . . . . . . . . . . . . . 4.2.1 濃度の定義 . . . . . . . . . . . . . . . . 4.2.2 絵画的迷路構成問題での提案手法の拡張 4.2.3 解の拡張方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 25 26 26 第 5 章 モザイク絵画的迷路構成問題の数値実験 31 第 6 章 まとめと今後の課題 34 謝辞 35 参考文献 35 i 第1章 はじめに パズルは子供から大人まで楽しめる娯楽であり, その中でも迷路は広く人々に愛されて いて今まで一度も迷路に触れず大人になった人はいないほどである. 迷路には様々なもの が存在し, 迷路の作り方についての研究もいくつかなされている [13] . そのなかでもス タートからゴールまでの道のりを塗りつぶすと何かの絵や記号が浮かび上がる迷路は絵画 的迷路と呼ばれており, 多くの迷路本で扱われている [2, 7]. 本論文では白黒画像を入力すると迷路を解きながら経路を黒く塗りつぶすことで入力画 像の絵が浮かび上がる迷路を作成する 絵画的迷路構成問題 についての研究を行う. 絵画 的迷路構成問題から作成された迷路について, 正解路 の部分を 絵, それ以外の部分を 地 と 呼び, それぞれの構成方法について分けて考える. 絵の構成方法に関する既存研究では主に岡本・上原の 「入力画像に対して縦横の縮尺を 変えて迷路を出力」 する提案手法 [10] と池田・橋本の 「完成度を犠牲にして縮尺を変え ずに迷路を出力」 する提案手法 [4] をはじめとする二種類の方針が存在する. 前者の方針 では入力画像の 1 ピクセル分に相当する 1 マスを 2 × 2 マスに変換することで NP 完全な 問題をより簡単な問題におきかえた. この手法を用いて解経路を塗りつぶすと入力画像と 全く同じ絵が浮かび上がる完成度の高い迷路を得た. しかし浮かび上がる絵は入力画像を 縦横 2 倍に拡大したものとなるためギザギザに見えるという点と, 迷路のスタートとゴー ルが隣同士でなければならないという点が問題となっている. また, 後者の問題点はすで に中井・岡本の研究で解消された [8]. 後者の方針では出力迷路の縮尺を変えず前者のよう に浮かび上がる絵がギザギザにならないように問題を最適化問題として定式化し, 焼きな まし法を用いて近似解を得た. この手法では入力画像と解経路を塗りつぶして浮かび上が る絵が多少食い違っており, 出力迷路の絵の完成度が前者よりも劣っている点と, 焼きな まし法の性質上良い解を求めるためには時間がかかってしまう欠点がある. しかし早く解 を求めようとすると良い解が得られないという点も問題になっている. 本論文では焼きな まし法の欠点を補う, 高速で食い違いの少ない良い解を見つける新しい発見的手法を提案 する. 既存手法の焼きなまし法では正解路に白ピクセル部分を含めてしまうとき, あるいは黒 ピクセル部分を含めていないときのペナルティーの合計を目的関数値にしていた. しかし, 本手法の最適化問題の定式化では, 白ピクセルを正解路に含めないという制約のみを付与 することで問題を簡単にして高速化を図った. さらに, 得られた正解路に対して既存手法 でも使われている単純な解の拡張を行った. そして, 入力画像の黒ピクセル部分を頂点に 見立てた格子グラフを考え, 既製の制約ソルバーを用いてその格子グラフ内の正解路以外 の頂点の一部からハミルトン経路を生成し, 正解路に挿入するハミルトン閉路つめこみと いう拡張方法も考えて, 高速で良い解の生成を行った. また, ハミルトン経路を求める際に グラフの中で複数の閉路が発生してしまう場合がある. その対処法として, セールスマン 1 問題で使われる分枝限定法を用いずに格子グラフの特性を生かした閉路結合法について提 案し, 問題を解決した. 絵画的迷路構成問題での数値実験は提案手法と既存手法の焼きなまし法に対して行う. この 2 つの手法のパラメータをそれぞれ設定し, 時間と完成度と複雑度の 3 つの評価値を 定義した. そして 6 種類の画像を入力画像として使用して性能評価を行った. その結果か ら提案手法が既存の焼きなまし法よりも高速で良い解が得られることがわかった. 地の構成方法については, 全域木を用いた安直な手法だと絵と地の質の違いが一目でわ かってしまうので容易に解となる通路が想像できてしまう. これは面白い迷路とは言えな いので, 絵と地の見た目を近づける方法について研究がなされている. これに対して岡本・ 上原は全域木を構成することで得られる質の悪い地に対して, 行き止まりを減らす操作を 行うことで地の質を上げた [10] . また中井は, 絵の部分に用いられている迷路の形をその まま使うことで絵と地の見た目を近づけた [9] . これらの研究では, 全域木を構成してか ら対処法が行われているのに対し, 全域木の構成段階で工夫を行うものは存在しなかった. これを受けて本論文では, 全域木の枝ののばし方を工夫することで絵と地の質が近くなる のではないかと考え, その手法について提案した. 絵画的迷路問題から発展して, カラー画像もしくは灰色などの中間色を用いたモノクロ 画像を入力すると迷路を解きながら経路を塗りつぶすことでモザイク画のように入力画像 の絵が浮かび上がるモザイク絵画的迷路構成問題という問題を新たに定義した. その解決 手法としてまず各ピクセルの RGB 値からピクセル群がどのくらいの密度で線を描画する べきかを決定するための濃度という各ピクセル固有の数値を定義したそして絵画的迷路構 成問題で提案した手法に濃度の概念を取り入れた手法を考えた. また, その提案手法には 絵の複雑性が高まると同時に計算時間が増える手順というものが存在し, その手順を行う か否かで複雑性と計算時間がどのように変化するのか確認するために, 3 種類の画像を用 いて数値実験を行った. 本論文の構成は以下のようになる. 第 2 章 絵画的迷路構成問題 始めに閉路を持たない普通の迷路作成の手法について紹介し, 絵と地の構成問題を 別々に考える. 絵の部分の構成問題に対しては, 絵画的迷路構成問題に対する既存手 法を紹介し, 提案手法の手順についての説明と, そこから派生するハミルトン経路の 生成問題を考える. 地の部分の構成問題に対しては, 絵と地の質を近づけるために既 存研究でどのような手法が用いられたかを紹介し, 全域木の枝の伸ばし方を工夫し て地を作る提案手法の説明を行う. 第 3 章 絵画的迷路構成問題の数値実験 絵の部分の構成問題について, 提案手法と既存手法の焼きなまし法に対して評価値を 設定して実験を行い, 提案手法が高速に良解を得ることができているかを考察する. 第 4 章 モザイク絵画的迷路構成問題 モザイク絵画的迷路構成問題を定義する. 次に濃度の定義とそれを用いた提案手法 を紹介し, 実装結果として入力画像と出力画像を載せる. 第 5 章 モザイク絵画的迷路構成問題の数値実験 2 モザイク絵画的迷路構成問題の提案手法について手順の違いで出力結果がどのよう に変わるのか第 3 章と同様に評価値を用いて実験を行い, 考察を行う. 3 第2章 2.1 絵画的迷路構成問題 定義 岡本・上原 [10] は絵画的迷路構成問題を以下のように定義した. 絵画的迷路構成問題 入力 縦 m ピクセル × 横 n ピクセルの白黒 2 値画像 出力 その解となる通路を隙間なく塗ることで入力画像が目に見えてくる迷路 本論文では迷路の定義を以下のように定める. • 縦 m マス, 横 n マスの長方形格子迷路 • 始点と終点のマスは 1 つずつ存在する • 迷路の解となる通路は一意に存在する • 解となる通路の迷路部分を「絵」と呼ぶ • それ以外の迷路部分を「地」と呼ぶ • 迷路内に閉路は存在しない はじめに閉路を持たない普通の迷路の構成法を復習する. 縦 m マス, 横 n マスの長方形 格子が得られたとする. その各マスを頂点とみなし縦横に隣接する頂点同士に辺が存在す る格子グラフを考える. 各辺にランダムな重みを与えて Kruskal 法などを用いて格子グラ フから最小全域木を構成する. 得られた全域木を見て, 各頂点を迷路のマスと見立て, 隣接 する頂点同士の間に辺があるとき対応するマス同士の壁を取り除く. 辺がないときは対応 するマス同士に壁を取り付ける. こうして閉路を持たない縦 m マス, 横 n マスの長方形格 子迷路が作成される. 任意のマスを始点と終点とすると, 正解路は必ず一意となる. 始点と終点の指定 格子グラフの構成 全域木の生成 迷路の生成 4 次に絵画的迷路構成問題の構成方法について考える. 入力画像に対して普通の迷路の構 成方法を用いるとする. 正解路で黒ピクセル部分を全て通過してくれるような全域木を構 成することができれば問題は解決するが, 格子グラフ上にハミルトン経路が存在するかど うかの判定は NP 完全である [1]. 問題を簡単にするために全域木の構成から題意を満たす ような迷路全体を構成するのではなく, 絵の部分と地の部分の構成法についてそれぞれ問 題を分けて考えることとする. また入力画像が連結でないときは, 画像を変形させない限 りどのような手段を用いても絵と画像の食い違いを避けることができない. このことから 前提として入力画像に対して黒ピクセル全体が連結であることを要求する. 既存手法 (絵の部分) 2.2 絵の部分が入力画像の黒ピクセルを多く含んでいればいるほど, また入力画像の白ピク セルの部分を含んでいなければいないほど, 正解路を塗りつぶした時に入力画像に近い絵 が浮かび上がる. 問題はそのような経路をどのように生成するかという点である. 絵の部 分の構成法についての既存手法はいくつかあり, その中で主に 2 種類の方針が存在する. 次小節で岡本・上原 [10] が提案した縮尺を変えることにより完全な迷路を出力する手法, 次々小節で池田・橋本 [4] が提案した完成度を犠牲にして縮尺を変えず迷路を出力する手 法について紹介する. 2.2.1 縮尺変更による完全な迷路の出力 縦mピクセル, 横 n ピクセルの白黒 2 値画像が与えられたとき各マスを頂点とみなして 縦 m マス × 横 n マスの隣接するマスの組を辺とする格子グラフを構成する. 入力画像の 黒ピクセル部分の頂点を黒マス, 白ピクセル部分の頂点を白マスと呼ぶ. 岡本・上原はハミルトン経路が存在するように画像の縮尺を変換した [10] . このアルゴ リズムでは他の手法とは異なり出力迷路を縦 2m マス, 横 2n マスの長方形格子迷路とする. 手順は以下のとおりである. 岡本・上原が提案した絵の構成方法 1. 与えられた格子グラフの黒マス全体から得られるグラフの全域木をランダムに 生成する. 2. 得られた全域木を平面的に走査する. 3. 走査した経路に従い格子グラフの各マスを 2 マス ×2 マスに分ける. 4. 得られた縦 2m マス × 横 2n マスの格子グラフを用いてハミルトン閉路を構成 する. 5 入力 (5x5) 格子グラフ 全域木 走査 出力 (10x10) この手法には以下の特徴がある. • 出力迷路の正解路を塗りつぶして浮かび上がる絵と入力画像は完全に一致する (利点) • 非常にシンプルであり, 実装も容易である (利点) • 浮かび上がる絵はギザギザが目立つ (欠点) • 始点と終点のマスが隣り合っていなければならない (欠点) 前者の欠点は手順の中で格子グラフの各マスを 2 マス ×2 マスに分割するため, 浮かび 上がる絵の縮尺は元画像の 2 倍となってしまうことが原因である. また後者の欠点から, この手法で出力された迷路は左手法を用いれば簡単に解けてしまうといった問題が発生す る. この問題を解決するために始点と終点を指定した迷路を出力する手法についていくつ か提案がなされている. 池田は得られた格子グラフの各マスを 3×3 マスに分けることで 始点と終点を指定できるようにした [5]. しかしこの手法だと浮かび上がる絵と入力画像 が食い違う場合がある. 中井・岡本は各マスを 4×4 マスにすることで始点と終点を指定 できる上に, 食い違いも発生しない手法を提案した [8]. しかし前者の欠点より浮かび上が る画像は元画像の 4 倍となるため, さらにギザギザが目立ってしまい正解路が容易に想像 できてしまうといった問題が発生した. 前者の欠点を解決するためには始めから縮尺を変更せずに絵を構成する方法を考える必 要がある. しかしハミルトン経路の存在について考えてしまうと前述の通り NP 完全な問 題を解かなければならなくなってしまう. それを避けるために考えられたのが次の手法で ある. 2.2.2 完成度を犠牲にして縮尺を変えない迷路の出力 池田・橋本は浮かび上がる絵と入力画像の食い違いを許容し, かわりに縮尺を変えずに始 点と終点を指定できる迷路を出力する手法を提案した [4] . 始めに以下の集合とパラメー タを定義する. 迷路の正解路の配列 : P = {p1 , ..., pq } 正解路以外の部分 : P̄ 黒マス部分の集合 : B 白マス部分の集合 : B̄ 食い違うマスの集合 : MP = (P ∩ B̄) ∪ (P̄ ∩ B) 各マス p が持つ重み : wp 6 これらを用いて絵画的迷路構成問題を次のような最適化問題に定式化する. ここで始点に 相当するマスを ps 終点に相当するマスを pg とする. ∑ minimize : f (P ) = wp p∈MP subject to : p1 = ps pq = pg pi ̸= pj (i ̸= j) 1 つ目と 2 つ目の制約は P の端子頂点が始点と終点であること, 3 つ目の制約は P に同じ 頂点がふくまれてないことを意味する. 目的関数は正解路に含まれていない黒マスと正解 路に含まれている白マスに対しての重みの合計であり, 小さければ小さいほど食い違いが 少ないことを意味している. このように定式化することで黒マス全てを通過するハミルト ン閉路を発見できなくても, 最適解を求めることでそれに近い経路を近似的に生成するこ とが可能となる. また, きっちり描き分けてほしいピクセル部分やできるだけ避けてほし いピクセル部分の調節を行うため wp をパラメータとして設定する. 入力 出力 食い違いマス Mp 次に上の問題にたいして, 開始温度 Tstart , 減衰率 Tdecay < 1, 最終温度 Tend の 3 つのパ ラメータを定め以下の手順で焼きなまし法を用いることを考える. 池田・橋本が提案した絵の構成方法 (焼きなまし法) 1. 制約を満たした初期解 P を1つ作成する. 2. 温度を T = Tstart に設定する. 3. 解 P から得られる近傍解 P ′ を生成する. 4. 評価値の改善量 gain = f (P ) − f (P ′ ) を計算する. 5. gain ≥ 0 のとき, すなわち改悪していないとき, P を P ′ に置き換え 7. に進む. 6. gain < 0 のとき, egain/T の確率で P を P ′ に置き換える. 7. T を Tdecay 倍して T > Tend なら 3. にもどり, そうでないなら終了する. 7 ここで焼きなまし法に用いられている初期解と近傍解の生成法について説明する. 初期解は端子頂点に始点と終点が一意に存在しなければならない. しかしそれは先ほど 述べた始点から終点への経路が一意な迷路を構成する方法を使えば実現する. 池田・橋本 は全域木を構成する方法と似たアルゴリズムで初期解を生成した. 近傍解は得られた解に対して, (1) ずらす操作 (2) 増減させる操作 (3) 訪問順を変更する 操作の 3 通りの操作のうちどれか 1 つをランダムに行った解とする. 各操作の具体的な方 法は以下の通りである. ずらす操作 解の中で連続する 3 つのマス pi , pi+1 , pi+2 が 2×2 マスの中にあり, 残り 1 つのマス p′ が解に含まれていないとき pi+1 と p′ を置き換える. 増減させる操作 減らす操作は解の中で連続する 4 つのマス pi , pi+1 , pi+2 , pi+3 が 2×2 マスの中にあるとき pi+1 , pi+2 を解から削除する. 増やす操作は減らす操作の逆を 行う. 訪問順を変更する操作 それぞれ解の中で連続していない 4 つのマス pa , pb , pc , pd (a < b < c < d とする) に対して pa , pa+1 , pc , pc+1 と pb , pb+1 , pd , pd+1 がそ れぞれ 2×2 マスの中にあるとき pa の次が pc+1 , pc の次が pa+1 , pd の次が pb+1 , pb の次が pd+1 となるように解の順番の変更する. (1) ずらす操作 (2) 増減させる操作 (3) 訪問順を変更する操作 これが池田・橋本の手法である. ちなみにこの手法では白マスも解として含めることが可能なので, 他の手法とは異なり 入力画像に対して黒ピクセル全体が連結でなくても解を求めることができる. 実際に実装した結果が以下の図である. 元論文を参考にして各ピクセルの重みは, 白ピク セルを 100, 白ピクセルと接する黒ピクセルを 2, それ以外の黒ピクセルを 1 とし, 開始温度 Tstart = 10, 最終温度 Tend = 0.1, 減衰率 Tdecay = 0.99995 とした. 計算時間は 13356ms で解を得るまで 126386 個の近傍解を生成した. 8 入力画像 (100x112) 出力迷路 この手法で解の質を左右するのは, 近傍解を生成する回数に最も影響を及ぼす減衰率 Tdecay であると考えられる. 良い解を求めるためには Tdecay を大きくしなければならない が, それと同時に近傍解を生成する回数は増えてしまう. そのため, 近傍解を求める操作を 高速処理させても計算時間は増えてしまう. また, 計算時間を短くするためには Tdecay を 小さくしなければならないが, 満足するような近傍解を求める操作が十分行えないので良 い解が得られない. 実際に 100×120 スケールの画像に対し, 前述のパラメータを用いて Tdecay = 0.99999 の場合と Tdecay = 0.999 の場合の焼きなまし法を実行したところ, 所要 時間について前者はおよそ 2 万ミリ秒, 後者はおよそ 200 ミリ秒かかり, 100 倍の違いが出 た. しかし目的関数値について前者はおよそ 60, 後者はおよそ 300 であった. 約 2700 の黒 ピクセルを持つ入力画像に対して, 後者は全体の 1 割以上を取りこぼしていることから満 足に解を得ることができていないことがわかる. 2.3 提案手法 (絵の部分) 池田・橋本の手法の問題点は計算時間と解の質を同時に良いものにすることが困難であ ることだった. それに対して提案手法では絵画的迷路構成問題を以下のような最適化問題 として定式化し, 縮尺を変えずに高速で良い解を求める方法をとった. minimize : f (P ) = |B| − |P | subject to : p1 = ps pq = pg pi ̸= pj (i ̸= j) p ∈ B (∀ i ∈ {1, 2, ..., q}) i 1 つ目から 3 つ目の制約は焼きなまし法のときと同様であり, P は端子頂点が始点と終点 であり, 同じ頂点がふくまれてないことを意味する. また, 4 つ目の制約は任意の正解路内 のマスが黒マスであることを意味している. 目的関数は入力画像の黒ピクセルの数から正 解路の要素の数の差であり, 小さければ小さいほど食い違いが少ないことを意味していて, 正解路に含める黒ピクセル部分を増やすことで目的関数値を最小化させる最適化問題とし て考える. 池田・橋本の定めた最適化問題では正解路に含めてしまった白ピクセルと正解 路に含まれなかった黒ピクセルの重みを目的関数にしていた. 提案手法では, 正解路に白 9 ピクセルを含めないことを前提としているので, 正解路に含まれなかった黒ピクセルの個 数を目的関数として扱い高速化を図る. この最適化問題に対して以下のような手順で解を生成する. 絵の構成方法に対しての提案手法 1. 始点と終点を端子頂点にもつ初期解 P を生成する. 2. P に対して終了条件を満たすまでハミルトン閉路つめこみを行い新たな P を生 成する. 3. P に対して終了条件を満たすまで単純な解の拡張を行い新たな P を生成する. この提案手法にはハミルトン閉路つめこみと単純な解の拡張という 2 種類の解の拡張方 法が存在する. ハミルトン閉路つめこみは一度の拡張で最低 4 マス以上の経路を解に加え ることが可能だが終了条件が簡単に満たされてしまうので得られる解の完成度は低くなる. 単純な解の拡張は一度の拡張で 2 マスの経路を解に加え, 終了条件は簡単に満たされない ので得られる解の完成度は高くなる. そのため手順 1. で初期解を生成し, 手順 2. で完成 度の低い解を生成し, 手順 3. で解の完成度を高めていく. 手順 2. は必要ないように思わ れるが重要な役割を果たしていることを後述する. 手順 1 手順 2 手順 3 次節以降で初期解の生成法, 単純な解の拡張, ハミルトン閉路つめこみの方法について 具体的な説明を行う. 2.3.1 初期解の生成 入力画像の輪郭部分, つまり格子グラフ上の白マスと隣接する黒マスは浮かび上がる絵 と入力画像がどれだけ近いかを人の目で見て判定するのに重要な箇所である. また前述の 10 提案手法の解の生成方法は不可逆であるので, 初期解生成の段階で輪郭部分を多く含んだ 経路になるよう工夫する. 生成法は始点と終点が隣同士であり, ともに輪郭部分に位置するときとそうでないとき によって異なる. 始点と終点が隣同士であるときは簡単で, 右手法を応用した以下の手順 で黒マスの上を走査し, 得られる始点から終点までの経路を初期解とする. 始点と終点が隣同士かつ輪郭部分のときの初期解の生成法 1. P を始点のマスのみを要素にもつ配列とする. 2. P の一番最後の要素のマス p を取り出す. 3. マス p から白ピクセルを壁に見立てた右手法で次に進むマスを選択し, そのマ スを p′ とする. 4. マス p′ が始点のマスである時 p を終点マスと定め, 初期解は P として, 操作を 終了する. 5. P の i 番目のマス pi と p′ が同じマスである時, P の i 番目以上のマスを全て 削除する. 6. P の一番最後の要素に p′ を加え, 2. に戻る. この手法は白マスに隣接する始点を出発して, 同じく白マスに隣接する終点へ右手法を 使って到着し, その経路を初期解としているだけだが, 手順 5. が重要である. 手順 5. の 「 P の i 番目のマス pi と p′ が同じマスである 」 場合とは入力画像から p′ マス部分を除去したとき黒ピクセル全体の連結性が失われることを意味している. 本問題 では白ピクセルを解に含めることと, 解の重複は許されないので pi と p′ の間の経路は解 に含めることができず解から外す必要がある. そのため手順 5. の操作が必要となる. 次にそれ以外の場合, つまり始点と終点が隣同士でないとき, もしくは始点と終点のど ちらかが白マスに隣接していないときの初期解は, 以下の手順で生成される. 11 それ以外の場合の初期解の生成法 1. 入力画像の黒ピクセル部分から得られる格子グラフより全域木を構成する. 2. 得られた全域木から始点と終点の経路を示す配列 P を作成する. 3. 格 子 グ ラ フ か ら P を 取 り 除 い て 得 ら れ る 連 結 な 頂 点 の 集 合 を D ={D1 , D2 , ..., Dn } とする. 4. P の中で連続する 2 つのマス pj , pj+1 が 2×2 マスの中にあり, 残り 2 つの輪 郭部分のマス pis と pig が Di に含まれているとき Di に対して始点を pis 終点 を pig として前述の方法を用いて初期解を生成し, pj と pj+1 の間に挿入すると いう操作を行う. 全域木の構成方法は普通の迷路を生成するときに用いた Kruskal 法を用いれば良い. 以 上の手順を行えば, 始点と終点の位置関係によらず入力画像の輪郭を大部分なぞる初期解 が得られる. また提案手法の手順 2. と手順 3. の解の拡張では輪郭の内側の黒マスを経路 に加えていくことを考えるだけなので, どちらの初期解の生成法を行っても解の拡張時に 差異はない. これ以降は始点と終点が隣同士かつ輪郭部分であることを仮定して話を進め ていく. 2.3.2 単純な解の拡張 単純な解の拡張とは 解の中で連続する 2 つのマス pi , pi+1 が 2×2 マスの中にあり, 残り 2 つのマスが解に含まれていないとき, pi と pi+1 の間にその 2 マスを挿入する操作 である. 終了条件は下線部をみたすマスが解に存在しないことである. この操作は非常に単 純かつ高速に実行することが可能である. 前述の初期解の生成とこの拡張方法を用いるだ けでも絵画的迷路構成問題を解くことができる. しかしこの方法で得られる迷路の絵は非 常に単純な見た目になる傾向がある. それについては節末の実装結果で触れることとする. 単純な解の拡張 12 2.3.3 ハミルトン閉路つめこみ ハミルトン閉路つめこみとは以下の手順で行われる操作である. 解の中で連続する 2 つのマス pi , pi+1 が 2×2 マスの中にあり, 残り 2 つのマス ps と pg が解に含まれておらず, ps と pg を 左上, 左下 , 右下 , 右上 のどれかに持つ 10×10 , 8×8 , 6×6 , 4×4 , 2×2 の格子グラフの中で全頂点が黒ピクセル部分かつ解に含まれてい ないものが存在するとき 行う操作である. 条件を満たすもので最も頂点数が多い k×k 格 子グラフに対して始点を ps 終点を pg とするハミルトン経路を生成し, その経路を pi と pi+1 の間に挿入する操作である. 終了条件は下線部をみたすマスが解に存在しないことで ある. この時解の中で連続する 2 つのマス pi , pi+1 が隣り合っているため ps と pg も隣 り合っていることがわかる. この操作は単純な解の拡張に比べて計算速度は劣るが, この 方法で得られる迷路の絵は複雑になる傾向がある. それについても節末の実装結果で触れ ることとする. ハミルトン閉路つめこみ → → → → → 次に pi と pi+1 の間に挿入するための始点を ps 終点を pg とするハミルトン経路を k×k 格子グラフ D(V, A) (頂点 : V ={v1 , v2 , ..., vk2 }) から生成する方法について考える. ここ で始点を ps 終点を pg とするハミルトン経路から, 始点と終点が隣り合っていることを利 用して, 終点 pg から始点 ps への有向辺 a が必ず存在するハミルトン閉路グラフ D(V, A′ ) を発見する問題に帰着させる. この問題は探索変数と制約を以下のように定め, 全ての制 約を充足する変数を発見すれば解決する. 13 { 探索変数 : xij 制約 : ∑ = 1 ((vi , vj ) ∈ A′ ) 0 (else) xij = 1 (∀ i ∈ {1, 2, ..., k 2 }) xij = 1 (∀ j ∈ {1, 2, ..., k 2 }) xij = 1 (vi = pg , vj = ps ) (vi ,vj )∈A ∑ (vi ,vj )∈A xij・xji = 0 (∀ (vi , vj ) ∈ A) 探索変数はハミルトン閉路グラフでの辺 A′ に (vi , vj ) が含まれているとき xij は 1 で あり, そうでないときは 0 とする. 1 番目と 2 番目の制約は, ハミルトングラフにおいて各 頂点間の入次数と出次数が 1 であること, 3 番目の制約は終点から始点への有向辺が必ず 存在すること, 4 番目の制約は 2 頂点間による閉路が発生しないことを意味する. この制約 を満たす探索変数の組み合わせを発見するときは制約ソルバーを用いる. この操作の一番の問題は閉路が複数発生してしまうということである. 巡回セールスマ ン問題を扱うときにもこの問題は発生し, その対策として閉路を取らないよう上の制約群 に新たな制約を加えて子問題を作成する分枝限定法が一般的である. この問題にも同様の 手法を用いてよいが, 分枝限定法で得られる子問題に対しても制約ソルバーを何度も実行 する必要があり時間がかかる. しかし格子グラフの頂点間の辺が単純である特徴を生かし て制約ソルバーを何度も実行せずに 1 つのハミルトン閉路を生成する閉路結合法を提案す る. その手順を以下に示す. 閉路結合法 1. 隣り合っている閉路 P1 , P2 をランダムに選択する. 2. P1 の中で連続する 2 つのマス pi , pi+1 と P2 の中で連続する 2 つのマス pj , pj+1 が同じ 2×2 マスの中にあるとき 4. に進む. 3. 2. のような 4 つのマスが存在しないとき 5. に進む. 4. pi , pi+1 , pj , pj+1 の訪問順を変更することで P1 , P2 を 1 つの閉路として結 合する. この時に閉路の数が 1 つになるならば解はその閉路として停止する. 5. 1. にて 2 つ隣り合っている閉路の全組み合わせに対して閉路の結合ができない ときは解なしとして停止する. そうでないなら 1. に戻る. 手順 2. と手順 4. では 2 つの閉路の間に存在している平行で隣同士の辺を結合させてい る. この手法では結合操作ができなくなるまで閉路を結合させ続けるというものである. 手順 5. の解なしとなる場合は閉路がこの手法で結合させることができないことを意味す 14 るが, 10×10 , 8×8 , 6×6 , 4×4 , 2×2 の格子グラフに対して, それは滅多に発生しない. 万一発生したとしても, もう一度制約ソルバーを実行して得られた複数の閉路に新しく閉 路結合を行えばよい. そのため分枝限定法と異なり制約ソルバーを実行する回数はほぼ 1 回で済む. こうして得られたハミルトン閉路から, 終点 pg から 始点 ps への有効辺を取り 除いたグラフが求めたかったハミルトン閉経路であり, その経路を pi と pi+1 の間に挿入 すれば良いことになる. 閉路結合法 → → → → 以上が初期解の探索法, 2 種類の解の拡張方法, そしてハミルトン経路の生成法であった. 実際にこの提案手法を実装すると次の図のようになる. 左がハミルトン閉路つめこみを行 わずに初期解と単純な解の拡張のみで得られた絵である. 右がハミルトン閉路つめこみを 含めた手順で得られた絵である. 見てのとおり左の絵は非常に単純に構成されていて, 簡 単に解けてしまうことがわかる. それに対して右の絵は複雑性が加味されていて, 解とな る経路を容易に想像しにくくなっていると思われる. ハミルトン閉路つめこみ無しの出力 ハミルトン閉路つめこみ有りの出力 15 2.4 既存手法 (地の部分) 次に地の部分の構成方法について考える. 地を考えるときは入力画像から絵の構成で得られた解の経路部分を取り除いたグラフに ついて, 全域木を構成し迷路を抽出するというのが一般的な手法である. しかしただ全域 木を構成するだけだと問題が発生する. 絵の構成方法と地の構成方法が独立であるため, 迷路の質が異なって見えてしまい, 絵と地の見分けがつきやすくなってしまうからである. これに対して既存研究では一度完成した地の迷路にヒューリスティックな改善を行って地 の質の改善を図る. 岡本・池田は全域木で構成された地の迷路に行き止まりが多いと細か くなってしまい絵と見た目が分離してしまうということに着眼した. 全域木の中で次数 3 以上の枝分かれから発生した行き止まりの経路同士を結合することで迷路内の行き止まり を減らすことで改善を線形時間で試みた [10] . このように全域木を使って地を構成した後 に迷路の変形を行って地の質を絵に近づけるという方法がある [4] . 他にも中井は中井・ 岡本が提案した各マスを 4×4 マスに分割する絵の構成方法に特化して, 4×4 マスで絵の 部分によく表れる形のブロックを地に組み込んでいくという手法を提案した [9] . この手 法は中井・岡本が提案した絵の構成方法でしか使えないが, 絵の部分と地の部分を似せる という手段は工夫次第で役に立つと考えた. 2.5 提案手法 (地の部分) 提案手法では絵の部分に似せた地を作ることで, 地の迷路の改善を試みる. 絵と地を似 せる方法として絵の構成方法と同じ手法を地にも行うというアイデアがある. それならば 当然絵と地は似ることが期待できるが, これは絵の構成と同じだけの時間をかけて地を構 成することを意味している. いくら絵の構成方法が高速化されたといっても画像サイズが 大きくなったとき地も同様な構成を行ってしまうと計算時間が増えてしまうので別の方法 について考えることにした. ここで全域木の作り方に工夫を施せばよいのではないかと考 えた. 2.5.1 絵の経路に似た枝を伸ばす全域木 本来全域木の枝は上下左右ランダムに伸びる. しかしこの枝の伸ばし方を絵に似せて, 地が絵に似ることを狙う. 以下がその手順である. 16 絵の経路に似た枝を伸ばす全域木 1. 構成された絵を経路とする木 T を生成. 2. T の外周部と接するマス w をランダムに選択. 3. 絵の中でランダムなマス p を選択する. 4. p の絵の中の経路で次に進むマスの向きと同じ向きに w から隣のマスへ移動. 5. p が終点に到達するか w を出発して移動した先が行き止まりになるまで 4. を 繰り返し, w から進んだ経路を w と隣り合う T のマスと連結させる. 6. 1. から 5. を T でないマスが存在しなくなるまで繰り返す. → → → 絵の経路に似た枝を伸ばす全域木の構成方法 以上が地の構成に対しての提案手法である. これはただ絵に似せた全域木の構成を行っ ているだけなので, 提案手法以外の絵の構成方法, たとえば岡本・上原, 池田・橋本などの 既存手法で得られた絵に対しても実装が可能である. そのためこれより先にさらにすぐれ た絵の構成方法が現れた時, 地の構成方法として実装できることも期待できる. 下の図が提 案手法の実装結果である. 上が普通の全域木で構成された出力迷路と正解路を塗りつぶし た迷路, 下が絵に似せた全域木で構成された出力迷路と正解路を塗りつぶした迷路である. 上の迷路は絵と地の質の違いが明らかで絵の部分が浮かび上がってしまう. 対して下の迷 路は絵と地の質にあまり違いは見られず見ただけで解を予想するのは難しいと思われる. 17 普通の全域木で得た絵と地 左は出力迷路 右は正解路を塗りつぶした迷路 絵に似せた全域木で得た絵と地 左は出力迷路 右は正解路を塗りつぶした迷路 18 第3章 絵画的迷路構成問題の数値実験 この章では絵画的迷路構成問題の絵の部分の構成についての数値実験を行う. ここで新 たに数値実験の評価値の一つとして複雑度という絵の経路の複雑さを表す数値を扱う. 3.1 複雑度の定義 ここで絵の複雑度の定義を行う. 迷路の複雑さといえば分かれ道の多さなども考えられ るが, 一本道である解の経路に対して複雑度の評価を行うので枝分かれ等の考慮はしない こととする. Michael Scott McClendon は迷路の複雑さを定める数値を提案した [6] . 本 論文ではその定義を格子迷路の形に適用する. 一本道である絵の経路 : h h の経路の長さ : D(h) h 内での曲がり角を表すマスの集合 : Wh = {w0 , w1 , ..., wn } wi−1 から wi までの経路の長さ : d(wi ) n ∑ h の複雑度 : r(h) = D(h)・( 1/(2・d(wi ))) i=1 r(h) が得られた絵の複雑度を表している. この式は経路 h が長いければ長いほど, そして 曲がり角の間隔 d(wi ) が短ければ短いほど, 迷路は複雑になることを意味している. (例) この迷路について始点から終点までの経路の複雑度 : 3.345 複雑度の定義は以上である. 次節以降でさっそく複雑度を用いて数値実験に移ることに する. 19 3.2 実験準備 絵の部分の構成に関する提案手法は, 池田・橋本による焼きなまし法の計算時間と解の 質を同時に良いものにできない欠点を補うことを目的としている. よって比較対象は焼き なまし法とする. 提案手法に関しては, 絵の構成方法に対して手順 1.∼手順 3. まですべての手順を行う場 合と, 手順 2. を行わない (ハミルトン閉路つめこみを行わない) 場合の 2 通りを試す. 焼きなまし法も実装し, 各ピクセルの重みについて, 白ピクセルを 100, 白ピクセルと接 する黒ピクセルを 2, それ以外の黒ピクセルを 1, 開始温度 Tstart =10, 最終温度 Tend =0.1 で固定し, 減衰率 Tdecay を調節して 0.9 , 0.99 , 0.999 , 0.9999 , 0.99999 の 5 通りとした. また, この実験で考察したいのは焼きなまし法と提案手法が, 解を拡張させて停止するま での時間とそれから得られる解の質であるので, 初期解の取り方に差異を与える必要はな い. そのため初期解の生成は両者とも同じ手法 (提案手法による初期解の生成) を用いて, 始点と終点は隣同士で白マスに接しているものとする. 評価値は時間と完成度と複雑度の 3 つとする. • 時間 (ms) は入力画像を受け取ってからどのくらいの時間で解を得ることができたか を基準とし, 小さければ小さいほど優れているとする. • 完成度は (解の中の黒ピクセル部分) - (解の中の白ピクセル部分) で表し, 大きけれ ば大きいほど食い違いの少ない優れた解であることを意味する. • 複雑度は解経路の複雑さを表しており, 大きければ大きいほど複雑で優れた解であ ることを意味しており, 導出法は前述されている. 絵画的迷路構成問題の入力画像は以下の 2 つである. swallow kuma 画像 swallow と kuma のサイズはそれぞれ 20×24, 60×72, 100×120 の 3 種類に拡大縮 小したものを用意するので, 合わせて 6 つの画像に対して実験を行う. 各画像に対しての試行回数は 50 回とし, 各評価値の平均を表し, 提案手法が望ましい成果 を上げているかどうかを考察する. 20 3.3 実験結果 実験を行った計算機環境は次の通りである. プログラミング言語 : Java コンパイラ : JDK 1.7 プロセッサ : Intel Celeron CPU 1000M 1.80GHz メモリ 4.00GB 制約ソルバーには Cream を使用した [11] . Cream は JavaT M 2 SDK. Standard Edition が操作可能な環境で利用できる Java 上の制約解消プログラミング用クラスライブラリで ある. オープンソースで Java 構文での自然な制約記述ができて制約記述が容易といった 特徴を持つ. http://bach.istc.kobe-u.ac.jp/cream/ からソフトウェアおよびマニュアルのダウンロードが可能である. 実験結果は以下のとおりである. 表は入力画像とサイズと黒ピクセル数に対してのそれ ぞれの手法を 50 回試行した各評価値の平均である. 左側の表は提案手法の中でハミルトン 閉路つめこみが手順に有る手法と無い手法の比較, 右側の表は既存手法の焼きなまし法の パラメータ Tdecay ごとの比較を行っている. また, 表下の図は左から順に, 時間, 完成度, 複雑度の箱ひげ図であり, 表中の各評価値平均で下線が引かれている数値の手法から得ら れた 50 個のデータを左から順に用いた. 表 3.1: 画像:kuma サイズ:20x24 黒ピクセル数:222 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 57.2 217.84 3.737085 1.88 218 3.68951 時間 完成度 複雑度 3.44 88.36 2.92392 14.06 194.72 3.65739 17.2 215.4 3.74434 187.22 218.52 3.70332 時間 完成度 複雑度 21 2139.52 219.52 3.68941 表 3.2: 画像:kuma サイズ:60x72 黒ピクセル数:1912 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 378.78 1886.12 5.58600 40.66 1896 5.41377 時間 完成度 複雑度 36.92 252 3.69785 43.46 366.44 4.18381 95.04 1636.04 5.50640 1268.66 1879.8 5.60351 15595.22 1892.76 5.54147 時間 完成度 複雑度 表 3.3: 画像:kuma サイズ:100x120 黒ピクセル数:5261 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 2851.08 5210.04 6.46678 698.52 5230 6.29222 時間 完成度 複雑度 332.84 418.32 4.11786 371.6 526.8 4.46667 561.3 1963 5.66205 4508.68 5159 6.50070 時間 完成度 複雑度 22 51982.88 5207.52 6.43607 表 3.4: 画像:swallow サイズ:20x24 黒ピクセル数:170 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 31.44 168 3.66445 0.3 164 3.77720 時間 完成度 複雑度 5.04 146.6 3.51889 8.6 165.16 3.70879 15.4 167.52 3.7262 132.8 168.12 3.74489 1339.3 168 3.73041 時間 完成度 複雑度 表 3.5: 画像:swallow サイズ:60x72 黒ピクセル数:1089 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 163.04 1063.44 5.41750 8.94 1068 5.46032 時間 完成度 複雑度 15.3 446 4.53899 17.04 588.44 4.91316 79.96 1047.88 5.43910 759.68 1060.76 5.46303 時間 完成度 複雑度 23 7465.02 1063.36 5.46435 表 3.6: 画像:swallow サイズ:100x120 黒ピクセル数:2714 に対しての各手法と評価値の平均 詰込 有り 無し Tdecay 0.9 0.99 0.999 0.9999 0.99999 時間 完成度 複雑度 579.66 2654.96 6.20011 68.6 2664 6.18242 時間 完成度 複雑度 88.4 743.52 4.97982 96 922.76 5.28831 209.84 2371.12 6.14626 1903.02 2643.7 6.25370 19255.66 2653.6 6.25839 時間 完成度 複雑度 提案手法の閉路つめこみ有りと, 既存手法の焼きなまし法について比較を行う. 殆どの 入力画像において提案手法の閉路つめこみ有りの手法は, 自身の完成度と複雑度の平均値 が近い既存手法の焼きなまし法に対して, 時間の評価値が優れていることが表から読み取 れる. このことから提案手法は計算時間と解の質を同時に良いものにする手法であること がわかる. 次に提案手法の閉路つめこみ無しと閉路つめこみ有りについての比較を行う. 提案手法 の閉路つめこみ無しの手法は, 非常に高速に解を得るが, 解の拡張方法は単純な解の拡張 のみである. また, 与えられた正解路に対して終了条件を満たすまでに繰り返す解の拡張 の様子は一意であるため, そこから得られる正解路はどれも同じものとなり, 箱ひげ図を 見ての通り複雑度の分散値は 0 となる. つまりこの手順だと解のバリエーションが少ない ことがわかる. それに対して提案手法の閉路つめこみ有りの手法は箱ひげ図を見て分かる 通り複雑度の分散が閉路つめこみ無しより大きい, つまり解にバリエーションがあること がわかる. 以上より提案手法の閉路つめこみ有りは既存手法の焼きなまし法より高速に良い解を生 成し, 閉路つめこみ無しで得られる解よりもさまざまな見た目の正解路を見つけてくれる ことがわかった. また, 閉路つめこみ無しと閉路つめこみ有りの時間の差はハミルトン閉 路つめこみの操作にかかった時間であり, これをさらに短くすることが今後の課題となる. 24 第4章 4.1 モザイク絵画的迷路構成問題 定義 モザイク絵画的迷路構成問題 入力 縦 m ピクセル × 横 n ピクセルの画像 出力 その解となる通路を単色で隙間なく塗ることで遠くから見ると入力画像に見え てくるモザイク画となる迷路 入力画像は白黒二値画像である必要はなく, カラー画像や灰色などの中間色を用いたモ ノクロ画像が対象となる. この問題に対しての出力迷路について考察する. 迷路の解とな る経路は単色で塗りつぶすので, 赤青黄などの複数の色を使い分けてモザイク画を描くな どといったことは許されないとする. 4.2 提案手法 この問題は絵画的迷路構成問題と違い, 白でも黒でもない色が入力画像中に存在する. そ のため塗りつぶし方にも工夫が必要である. 単色を用いて複数の色があるように描く方法 として, 塗りつぶす線の間隔で絵の濃淡を表現する技法が存在する. ここで各ピクセルに 対してどの程度の濃さで塗りつぶすべきなのかを判断するための基準となる数値があれば モザイク画として描けるのではないかと考えた. 4.2.1 濃度の定義 あるピクセル群 G を特定の濃度で描画すると仮定する. G の中は n マスに 1 つが塗り つぶされていればよいとき, G のピクセルの濃度は n であるとする. このように各ピクセ ルに対して塗りつぶす密度を判断させるための固有の値を濃度と定義する. 濃度の定義は 単純で, 各ピクセル内の R 値, G 値, B 値を読み取って適当な不等式に当てはめて濃度を設 定すればよい. R 値,G 値,B 値はそれぞれ赤, 緑, 青の濃さを表す数値であり, それぞれ 0 か ら 255 までの値をとる. たとえばあるピクセルの R 値 , G 値, B 値が 255, 0, 0 のとき, そ のピクセルの色は赤色を指しており, それぞれの値が大きければ大きいほどそのピクセル は原色に近いことがわかる. そこで RGB 値の和をとることでピクセルの明るさが決まる と考えた. 提案手法では, 各ピクセルの R 値,G 値,B 値の和から 120 を除算し, 得られた値 に 1 を加えた値を濃度と定める. このようにして 7 段階の濃度を設定した. この問題の解 決手法では白ピクセルと黒ピクセルの区別はあえて行わず, 得られた各ピクセル内の濃度 25 について描画するべき部分とそうでない部分の判断のみを行う. 単純な解の拡張とハミル トン閉路つめこみを行うときにこの濃度を参考にして拡張を行っていく. 4.2.2 絵画的迷路構成問題での提案手法の拡張 以上のように濃度の定義を行い, モザイク絵画的迷路構成問題に対する提案手法は絵画 的迷路構成問題の提案手法を拡張して以下のようになる. モザイク絵画的迷路構成問題に対しての提案手法 1. 各ピクセルに対して濃度の定義を行う. 2. 始点と終点を端子頂点にもつ初期解 P を生成する. 3. P に対して終了条件を満たすまで濃度を考慮したハミルトン閉路つめこみを行 い新たな P を生成する. 4. P に対して終了条件を満たすまで濃度を考慮した単純な解の拡張を行い新たな P を生成する. 初期解の生成法は絵画的迷路構成問題での提案手法と同様のものを用いる. 手順 3. と 4. は濃度の考慮を行いつつ拡張を行っていく. 拡張の挙動については次小々節で説明する. 4.2.3 解の拡張方法 本問題で単純な解の拡張とハミルトン閉路つめこみを行うときの挙動は提案手法の手順 1. で定められた各ピクセルの濃度に依存する. まずは単純な解の拡張について説明する. 濃度を考慮した単純な解の拡張は以下の手順である. 濃度を考慮した単純な解の拡張 1. 解の中のマス pi を選択する. 2. pi からそのマスに対応する濃度 k を受け取る. 3. pi と pi+k のマスの間に曲がり角があるときは 1. に戻る. 4. pi から pi+k までの経路を p と定める. 5. 格子グラフ中から pi と pi+k を一辺とする正方形 Q を構成し, Q の周上から p 以外の部分に解に含まれるマスが存在しないか確認する. 存在するときは 1. に 戻る. 6. 正方形 Q の周上から p 以外の部分を p′ と呼び, 新しい経路として p と置き換 えたら, 新しい解を返し, 停止する. 26 濃度を考慮した単純な解の拡張の挙動 各マスの数値は濃度を指す → → → 終了条件は解の中の全てのマスに対してこの手法を行っても解の変化が起こらない場合 である. この操作も比較的単純で高速に実行することが可能である. 前述の初期解の生成 とこの拡張方法を用いるだけでもモザイク絵画的迷路構成問題を解くことができる. しか しこの方法で得られる迷路の絵は非常に単純な見た目になる傾向がある. それについては 次章の実装結果で示すこととする. 次に濃度を考慮したハミルトン閉路つめこみの手順を示す. 濃度を考慮したハミルトン閉路つめこみ 1. 解の中のマス pi を選択する. 2. pi からそのマスに対応する濃度 k を受け取る. 3. pi と pi+k のマスの間に曲がり角があるときは 1. に戻る. 4. pi から pi+k までの経路を p と定める. 5. 格子グラフ中から pi と pi+k を一辺とする正方形 Q を構成し, Q の周上から p 以外の部分に解に含まれるマスが存在しないか確認する. 存在するときは 1. に 戻る. 6. Q の残りの 2 頂点を ps と pg とし, その 2 点を左上, 左下, 右下, 右上のどれか に持つ (9k+1)×(9k+1) , (7k+1)×(7k+1) , (5k+1)×(5k+1) , (3k+1)×(3k+1) , (k+1)×(k+1) の格子グラフの中で全頂点が解に含まれているものが存在して いれば 1. に戻る 7. 6. の条件を満たすもので最も頂点数が多い m×m 格子グラフに対して, 縦横そ れぞれ k 個間隔で頂点を選択して新たなグラフを構成すると, ((m-1)/k)×((m1)/k) の格子グラフで ps と pg が隣り合ったものが得られる. このグラフにお いて, 始点を ps , 終点を pg にもつハミルトン経路を生成し, その経路を m×m 格子グラフでの経路に置き換えて, pi と pi+k の間に挿入する. 絵画的迷路構成問題におけるハミルトン閉路つめこみの手法と同様に, 条件を満たすも ので最も頂点数が多い m×m 格子グラフに対して始点を ps 終点を pg とする経路を生成 し, その経路を pi と pi+1 の間に挿入する操作である. 終了条件は濃度を考慮した単純な解の拡張と同様に, 解の中の全てのマスに対してこの 手法を行っても解の変化が起こらない場合である. 27 7. で ((m-1)/k)×((m-1)/k) の格子グラフを構成したが, サイズは必ず 10×10 , 8×8 , 6×6 , 4×4 , 2×2 のどれかとなる. それに対して始点を ps , 終点を pg に持つハミルトン 閉路を生成する方法は絵画的迷路構成問題で用いた手法をそのまま使うことができる. この操作は濃度を考慮した単純な解の拡張に対して計算速度は劣るが, この方法で得ら れる迷路の絵は複雑になる傾向がある. 濃度を考慮したハミルトン閉路つめこみの挙動 各マスの数値は濃度を指す → → → → → 以上が提案手法である. 実装した結果が次ページ以降の絵である. 入力画像は下の 250×250 サイズのモナリザの絵とする. また正解路の描画は本手法を用いたが, 正解路以 外の地の部分は前述の地の構成方法の提案手法を用いて生成した. 28 出力迷路 29 正解路を塗りつぶした迷路 30 第5章 モザイク絵画的迷路構成問題の数値 実験 この章では, モザイク絵画的迷路構成問題に対して提案した手法を用いて, 数値実験によ る比較・考察を行う. モザイク絵画的迷路構成問題に対して, 提案手法の手順 1.∼手順 4. まですべてを行った場合と, 手順 3. を行わない (ハミルトン閉路つめこみを行わない) 場 合の 2 通りを試す. 評価値は 3 章での数値実験に用いた時間と複雑度を使う. 完成度 (正解 路の要素数) は濃度を考慮して解経路を構成するこの問題の場合, 迷路の質を知るための 参考にならないので評価値から外した. 使用する入力画像は以下のものである. モナリザ この画像の縮尺を 200×200, 150×150, 100×100, の 3 種類のサイズに拡大縮小したもの を用意するので, 3 つの画像に対して実験を行う. 各画像に対して試行回数は 10 回とし, 各 評価値の平均を表し, 提案手法の性能を評価する. 実験を行った計算機環境は第 3 章と同 様である. 実験結果は以下の通りである. 表は入力画像と各サイズに対してのそれぞれの手法を 10 回試行した各評価値の平均で, 提案手法の中でハミルトン閉路つめこみが手順に有る手法 と無い手法ごとの比較を行っている. また, 表下の箱ひげ図は左から順に, 時間, 複雑度を 比較しており, それぞれの手法から得られた各 10 個のデータを左から順に用いた. 31 表 5.1: 画像:モナリザ サイズ:100x100 に対しての各手法と評価値の平均 詰込 有り 無し 時間 複雑度 23511.8 6.94274 7601.0 6.84639 時間 複雑度 表 5.2: 画像:モナリザ サイズ:150x150 に対しての各手法と評価値の平均 詰込 有り 無し 時間 複雑度 111600.2 7.61533 39665.4 7.52567 時間 複雑度 32 表 5.3: 画像:モナリザ サイズ:200x200 に対しての各手法と評価値の平均 詰込 有り 無し 時間 複雑度 661333.6 8.11590 195472.1 8.02812 時間 複雑度 全ての表を見たところ, ハミルトン閉路つめこみ有りのほうがハミルトン閉路つめこみ 無しよりも複雑な正解路を返すことが言える. それに対して, ハミルトン閉路つめこみ有 りとハミルトン閉路つめこみ無しの間で時間の差が 3∼4 倍近く存在する. これは明らか にハミルトン閉路つめこみの操作で多くの計算時間を消費しているからだと考えられる. 33 第6章 まとめと今後の課題 始めに絵画的迷路構成問題についてまとめる. 絵の構成問題に対して, 提案手法で正解路を求める際に問題となる点は「ハミルトン閉路 を生成するため安直に制約ソルバーを用いても複数の閉路が発生してしまう」ことであっ た. この問題に対して格子グラフの縦横隣り合った頂点が辺で結ばれているという特性を 生かして閉路が複数できてしまったとしても隣接して平行な辺をもつ閉路同士を結合させ ることで, 最終的に複数の閉路から 1 つの閉路を作り出す方法を考案した. 閉路が複数発 生しないように分枝限定法を駆使して制約ソルバーを実行させてしまうと, 非常に多くの 子問題を解くばかりでなくその都度制約ソルバーを使用してしまう. それに対しこの手法 を用いると, 複数の閉路が発生してしまうことを許容するため, ごくまれに閉路結合法で 閉路が結合できず複数の閉路が残ってしまう場合を除いて殆ど 1 回制約ソルバーを実行す るだけですむ. つまり閉路結合法を用いることで正解路の探索を高速化することができた. そして得られた解について, 数値実験の表と図から明らかであるように, 提案手法を用い ることによって既存研究の焼きなまし法よりも高速で質の高い解を得ることができた. 地 の構成問題に対して, 既存手法とは全く異なる方法で全域木の枝ののばし方に工夫を施す ことで, 絵と地の見た目を近づけることに成功した. 今後の課題としてはハミルトン閉路つめこみの実行時間をさらに短縮させることがある. 今回は制約ソルバーの Cream だけしか使用しなかったが, 制約問題を別の形に帰着しその 解法を高速化することによって改善することが考えられる. また, 質の高い解を得ること はできたが既存研究の質を大きく超える解とはなりえなかったので, 解の質をさらに上げ る手法について新しく考える必要もある. そして地の構成問題に対しては, 絵と地の見た 目が近いことを示す指標を用いることができなかった. これから新しく考えられていく地 の構成方法に対しても適用できる絵と地の質の類似度を示す数値を定義することも今後の 課題となる. 次にモザイク絵画的迷路構成問題についてまとめる. この問題に対して, 各ピクセルにどの程度の密度で描画するべきかを考慮するための濃 度という数値を定義し, 解の拡張方法にも用いることで, 薄く描くべきところは薄く描き, 濃く描くべきところは濃く描くことができるように正解路を設定することができた. しかし, 入力画像が完全に再現されたモザイク画が描けていたとは言えない. これは濃 度の設定だけでは模様のバリエーションが足りないことが原因である. そのため濃度の設 定以外に, 青色の部分は横縞, 赤色の部分は縦縞のように, 特定の色に対して濃度が同じで も模様を描きわけることができればさらにモザイク画に近くなると考えられるため, 今後 の課題としていく. 34 謝辞 本論文を作成するにあたり, たくさんの方々にご協力いただきました. 指導教員である 福田光浩准教授には, お忙しい中でも研究の進捗を気にかけていただき, ゼミでの指導, 問 題解決のアドバイス, 論文の書き方など大変お世話になりました. 父親からは, 文章を書く ときの基本的な言葉づかいを指導していただき, 勉強になりました. 同じ学生室の友人た ちからは, 自分の知らなかった計算機の使い方などを教えていただき, 卒論を進める手助 けになりました. 福田光浩研究室や山下真研究室の先輩方, その他同じ階の先輩方にもお 世話になりましたことを合わせて, この場をお借りして皆様にお礼を申し上げます. 35 参考文献 [1] Alon Itai, Christos H. Papadimitriou, and Jayme Luiz Szwarcfiter, Hamilton Paths in Grid Graphs, SIAM Journal on Computing vol. 11, 1982, pp. 676-686. [2] Conceptis Puzzles: Picture This! Mazes, Sterling, New York , 2005. [3] 濱田浩気, 始点と終点を指定した絵画的迷路の作り方, 組み合わせゲーム・パズル ミ ニプロジェクト 第 5 回ミニ研究集会, 2010. [4] 池田心, 橋本準一, 確率最適化を用いた絵画的迷路作成, 情報処理学会論文誌 vol. 53, 2012, pp. 1625-1634. [5] 池田心, 絵画的迷路生成のある拡張, 組合せゲーム・パズルミニプロジェクト第 5 回 ミニ研究集会, 2012. [6] Michael Scott McClendon, The Complexity and Difficulty of a Maze, Bridges: Mathematical Connections in Art, Music, and Science, Conference Proceedings 2001, pp. 213-222. [7] 望月士郎 : 浮き出し迷路, Vol. 1, 学研, 2006. [8] 中井亮平, 岡本吉央, 絵画的迷路作成アルゴリズムの改善, 2009 年度冬の LA シンポ ジウム, 2009, pp S5-1-S5-5. [9] 中井亮平, パズル的画像処理問題に対する離散最適化手法の応用, 東京工業大学大学 院情報理工学研究科数理・計算科学専攻修士論文 (未公刊), 2011. [10] 岡本吉央, 上原隆平, 絵画的迷路の作り方, 2008 年度冬の LA シンポジウム, 2008, pp 10-1-10-8. [11] Shuji Ohnishi, Hiroaki Tasaka, and Naoyuki Tamura. Efficient representation and operations of descrete sets for constrains programming. In Ninth International Conference on Principles and Practice of Constraint Programming (CP 2003), LNCS 2833, 2003, pp. 920-924. [12] Taisuke Funakoshi, Mutsunori Banhara, and Naoyuki Tamura, Study of a Sat Encoding of Hamilton Cycle Problem: The 26th Annual Conference of the Japanese Society for Artificial Intelligence (JSAI 2012), 1E3-OS-4-1, 2012. [13] Walter D. Pullen. Think Labyrinth! http://www.astrolog.org/labyrnth.htm, Accessed on February 1, 2014. 36
© Copyright 2024 Paperzz