グラフの列挙 中野 眞一 (群馬大学) 2015/9/28 列挙学校 1 列挙アルゴリズム設計技法 ・(新種発見) ・分割探索 ・辞書(Gray) ・逆探索 ・家系木 ・etc. 2015/9/28 いつ終わる? タイプごとに 順番に 親戚関係で 列挙学校 2 グラフのクラス ・木 ・平面グラフ ・矩形描画 2015/9/28 列挙学校 3 木に関する用語 家系図とみなす 親、子、兄弟、先祖、子孫 根 葉 2015/9/28 点の高さ、深さ 根は深さ0 葉は高さ0 列挙学校 4 木 ・根つき木 or ・順序木 or ・子の個数 自由木 順序なし木 任意 or ちょうど2 or 高々2 or 少なくとも2 対応 2015/9/28 列挙学校 長男 と すぐ下の弟 5 木の列挙(辞書法) ・根つき順序木 ・深さ優先横断(downとupを記録) DUDUDDUDUDUUDU m辺の木を2m文字に符号化 2015/9/28 列挙学校 6 木の列挙(辞書法) ・5辺の順序木の辞書 に最初に掲載されている木は? DDDUDUUU 2015/9/28 列挙学校 DDUDUDUU 7 木の列挙(辞書法) ・5辺の順序木の辞書 に最初に掲載されている木は? DDDDDUUUUU ・2番目の木は? ・3番目の木は? ・次は?次は? 2015/9/28 列挙学校 8 木の列挙(辞書法) ・5辺の順序木の辞書 DDDDDUUUUU DDDDUDUUUU DDDDUUDUUU DDDDUUUDUU DDDDUUUUDU DDDDUUUUUD だめ 2015/9/28 列挙学校 9 木の列挙(辞書法) ・5辺の順序木の辞書 DDDDDUUUUU U??? D DDDDUDUUUU D U DDDDUUDUUU D U U DDDDUUUDUU DDDDUUUUDU DDDDUUUUUD だめ( ( ( ( ) ) ) ) ) ( 2015/9/28 列挙学校 10 演習1 ・5辺の順序木の辞書を完成せよ ・m辺の順序木の辞書を出力する アルゴリズムを設計せよ ・m辺かつL葉の順序木の列挙アルゴ リズムを設計せよ ・m辺かつ高さがhの順序木の列挙ア ルゴリズムを設計せよ 2015/9/28 列挙学校 11 演習2 ・5辺の順序なし木の辞書を完成せよ ・m辺の順序なし木の辞書を出力する アルゴリズムを設計せよ ・m辺かつL葉の順序なし木の列挙ア ルゴリズムを設計せよ ・m辺かつ高さがhの順序なし木の列 挙アルゴリズムを設計せよ 2015/9/28 列挙学校 12 演習3 ・順序木の他の符号化法を設計せよ ・その符号に基づき順序木の辞書 を出力するアルゴリズム を設計せよ ・幅優先横断(子の個数を記録) 11110001110000 2015/9/28 列挙学校 13 もっと学びたい方へ The Art of Computer Programming, Fascicle 4: Generating All Trees -- History of Combinatorial Generation (Art of Computer Programming) Donald E. Knuth (2006/2/14) Addison-Wesley $19.99 ISBN-10: 0321335708 2015/9/28 列挙学校 14 木の列挙(家系木法) ・根つき順序木 2015/9/28 列挙学校 15 木の列挙(家系木法) ・高々m辺の 順序木の 集合には 木の構造 がある 2015/9/28 ・深さk k辺の木 列挙学校 16 木の列挙(家系木法) 指定した 木の子を 再帰的に 列挙する ・深さk k辺の木 2015/9/28 列挙学校 17 順序木の列挙(家系木法) Shin-ichi Nakano "Efficient Generation of Plane Trees“ Information Processing Letters, Vol.84, no. 3, pp.167-172 (2002). 子のリスト 2015/9/28 親 列挙学校 18 順序なし木の列挙(家系木法) Shin-ichi Nakano and Takeaki Uno, “Constant Time Generation of Trees with Specified Diameter”, Proc. of WG 2004 LNCS, 3353, pp.33-45 (2004). Left Heavy のみ列挙 2015/9/28 Left Heavy ? 列挙学校 19 演習4 ・Left Heavyを定式化せよ ・Left Heavyな順序木を列挙するアル ゴリズムを設計せよ (順序なし木の列挙) 2015/9/28 列挙学校 20 (内部)極大平面グラフ ・内面がすべて三角 ・3Dワイヤモデル 外点 r個 内点 v個の グラフをすべて 列挙せよ 2015/9/28 列挙学校 21 極大平面グラフ 2015/9/28 対角スイッチ 列挙学校 22 極大平面グラフ 対角スイッチ ・点vの回りに 4点a,b,c,dがある ・辺vb もしくは vc d は対角スイッチ c できる ・Wagner定理[1936] b v 任意の2つの a 極大平面グラフは 対角スイッチのみで互いに変換可能 2015/9/28 列挙学校 23 極大平面グラフ 対角スイッチ ・外面上の点vが4次以上のとき 対角スイッチでvの次数を減らす d d c v c b v a 2015/9/28 b a 列挙学校 24 極大平面グラフ 対角スイッチ ・外面上の点vが4次以上のとき 対角スイッチでvの次数を減らす 3次 3次 3次 3次 3次 ? 3次 3次 2015/9/28 ?次 ?次 列挙学校 25 極大平面グラフ 対角スイッチ ・外面上の点vが4次以上のとき 対角スイッチでvの次数を減らす 3次 3次 3次 3次 3次 ? 3次 3次 2015/9/28 ?次 ?次 列挙学校 a 26 極大平面グラフ 対角スイッチ ・外面上の点vが4次以上のとき 対角スイッチでvの次数を減らす a 2015/9/28 列挙学校 27 極大平面グラフ 対角スイッチ 最後の処理 2015/9/28 列挙学校 28 極大平面グラフ 対角スイッチ 任意の外点r個 内点v個のグラフ 根 2015/9/28 列挙学校 29 極大平面グラフの列挙 対角スイッチ+Wagner定理 Avis 96 O(n2) 時間/each 2015/9/28 カノニカル順序 Li & Nakano 01 O(1) 時間/each 列挙学校 30 極大平面グラフのカノニカル順序 7 7 6 6 5 6 6 44 5 3 1 2 44 5 3 1 2 1 2015/9/28 1 2 家系木 3 2 3 1 44 3 44 2 列挙学校 31 演習5 直径k 葉L個のキャタピラ (葉をすべて除くとパスになる木) を列挙するアルゴリズムを設計せよ 根なしに注意 (Kikuchi他 COCOON 03) 2015/9/28 列挙学校 32 フロアプラン 90度 回転 ・すべての面が四角形 ・回転 同じ or 異なる ・4次点 あり or なし ・面積関係なし 上と同じ 4次点 左の2つの図は 矩形分割としては同じ フロアプランとしては異なる 2015/9/28 列挙学校 33 フロアプランの左上の面を順次除去 2015/9/28 列挙学校 家系木 34 フロアプランの左上の面を順次除去 親 子のリスト 2015/9/28 列挙学校 35 フロアプランの家系木 2015/9/28 列挙学校 (S.Yoshii 2002 図) 36 演習6 内面の個数がnのフロアプラン を列挙するアルゴリズムを設計せよ O(1)時間/each (Nakano ISAAC 01) 2015/9/28 列挙学校 37 フロアプランの列挙(回転を同じとする場合) 家系木 90度回転で得られる4つフロアプランの内1つのみを出力 2015/9/28 列挙学校 38 演習7 内面の個数がnのフロアプラン を列挙するアルゴリズムを設計せよ ただし、90度回転で得られる 4つのフロアプランは同一とみなす O(n)時間/each (Nakano ISAAC 01) 2015/9/28 列挙学校 39 一様ランダム生成(順序木) 大量メモリ+前処理 なら簡単 一覧辞書+乱数でOK メモリ小かつ前処理なしで 一様ランダム生成したい。。。 2015/9/28 列挙学校 40 一様ランダム生成(順序木) Dyckパス 2015/9/28 列挙学校 41 一様ランダム生成(順序木) サイクルシフト 2015/9/28 ・m辺の順序木はm+1個の Dとm個のUの文字列に対 応する ・各文字列をサイクルシフト して得られる2m+1個の文 字列のうち1個だけが順序 42 列挙学校 木に対応する 順序木 サイクルシフト 3文字シフト 順序木に対応 4文字シフト 1文字シフト 5文字シフト 2文字シフト 6,7,8文字シフト 2015/9/28 列挙学校 43 順序木 サイクルシフト ・m+1個のDとm個のUの文 字列を一様ランダム生成 ・サイクルシフトして得られ る1個を選ぶ ・順序木として出力 ・1,2,…,2m+1の順列を一 様ランダム生成 ・1,2,..m+1をDに, 他をUに 置き換え 2015/9/28 列挙学校 選択 選択 選択 44 演習8 m 辺 かつ L 葉の 順序木を一様ランダムに生成する アルゴリズムを設計せよ (理系への数学 2008年7月号掲載予定 中野) 2015/9/28 列挙学校 45 演習∞ 高速に列挙できる対象を列挙せよ 高速に一様ランダム生成できる対象 を列挙せよ 2015/9/28 列挙学校 46
© Copyright 2024 ExpyDoc