平面三角分割グラフを列挙す るアルゴリズムの改良 中野 眞一 ( 群馬大学 ) 宇野 毅明 ( 情報学研究 所 ) 2002 年 6 月 24 日 コンピューテーション研究会.

Slides:



Advertisements
Similar presentations
組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
Advertisements

2015 年度 有限幾何学 期末試験 次の各問に答えよ.( (1), (2), (3), (4), (5), (7), (8), (10) は答えだけでよい) (1) 有向閉路が存在しない位数 4 のトーナメントを描け. (2) 内点の個数が 10 個の正則 2 分木の葉の個数を求めよ. (3) グラフ.
G 問題 コードアート オンライン 原案:西出 ライタ:伊藤 テスタ:西出. 問題概要 0 大きさのさまざまな n 個の円に多角形 m 個を入れら れるか判定する問題 0 ただし、同じ円に複数の多角形を入れることはでき ない 0 もし、入れられる場合は、辞書順最小の入れ方を出 力 ① ② ③ ① ②.
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
2009/12/4 グラフ (2) 第10講: 平成21年12月4日 (金) 4限 E252教室 コンピュータアルゴリズム.
Bipartite Permutation Graphの ランダム生成と列挙
極小集合被覆を列挙する 実用的高速アルゴリズム
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
動的計画法 表の作成 制約の追加 練習問題.
動的計画法 表の作成 制約の追加 練習問題.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
    有限幾何学        第8回.
On the Enumeration of Colored Trees
5.チューリングマシンと計算.
5.チューリングマシンと計算.
An Algorithm for Enumerating Maximal Matchings of a Graph
一般化マクマホン立方体パズルの 問題例生成
列挙問題 列挙問題の定義 アルゴリズムの速度 バックトラッキング 分割法 逆探索.
 Combinations(2)        古川 勇輔.
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
模擬国内予選2014 Problem C 壊れた暗号生成器
宇野 毅明 国立情報学研究所 2002年3月 東北大大学院 情報科学研究科ワークショップ
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
Proper Interval Graphsの ランダム生成と列挙
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
離散数学 08. グラフの探索 五島.
G99P043-4 河邊昌彦 G99p094-1 内藤一兵衛 G99P146-1 八幡淳
b f c a d e g h a b c d e f g 図1 図2 2012年度 有限幾何学 期末試験
First Course in Combinatorial Optimization
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
プログラミング 4 整列アルゴリズム.
5 Recursions 朴大地.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
需要点,供給点,辺容量を持つ木の分割アルゴリズム
第4章 識別部の設計 4-5 識別部の最適化 発表日:2003年5月16日 発表者:時田 陽一
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
列挙問題 列挙問題の定義 アルゴリズムの速度 バックトラッキング 分割法 逆探索.
重み付き投票ゲームにおける 投票力指数の計算の高速化
第16章 動的計画法 アルゴリズムイントロダクション.
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
アルゴリズムとデータ構造 2012年7月2日
5.チューリングマシンと計算.
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造 2013年7月2日
平面走査法を使った 一般線分の 交点列挙アルゴリズム
情報処理Ⅱ 2006年11月24日(金).
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 第7回 2004年11月16日(火).
2017年度 有限幾何学 期末試験 注意:ループと多重辺がないグラフのみを扱う. 問1 次の定理と,その証明の概略を読み,各問に答えよ.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
アルゴリズムとデータ構造 2013年6月20日
参考:大きい要素の処理.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
情報処理Ⅱ 2005年11月25日(金).
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Presentation transcript:

平面三角分割グラフを列挙す るアルゴリズムの改良 中野 眞一 ( 群馬大学 ) 宇野 毅明 ( 情報学研究 所 ) 2002 年 6 月 24 日 コンピューテーション研究会

列挙問題 列挙問題(発生): 与えられた集合の要素を全て、ちょうど 1 度ずつ出力 する問題 ・総数を数えたり、サンプリングをしたり、性質を調 べたりと目的が多様 ・アルゴリズムをツールとして考えると、いろいろな 問題に対して、ともかく速いアルゴリズムを作ってお くと良い

列挙問題、例えば グラフの 全張木・パス・閉路・マッチング・木 多面体の 頂点・面 平面の 三角形分割・アレンジメント 全ての 2 分木・文字列・置換・順列・平面グラフ・連結グラ フ 最適化問題の 最適解・極大解・実行可能解

2 連結平面 3 角グラフ 平面グラフ: 枝が交差させずに平面埋込できるグ ラフ 3 角グラフ: 全ての面が ( 外側の面を除いて) 三角形になる平面グラフ 2 連結 3 角グラフ: 3 角グラフで、カット頂点がないもの 根付き 2 連結 3 角グラフ: 2 連結 3 角グラフの、外周上の辺の 1 つが根に指定されているもの

2 連結 3 角グラフ列挙の研究 根付き: 96 D. Avis 一つあたり O( n 2 ) 01 中野 一つあたり O( 1 ) 根無し 98 B.D.McKay 一つあたり O( n 2 ) ? 01 中野 一つあたり O( r 2 n ) 今回:根無し 一つあたり O( r n )

01 年のアルゴリズム(根付き) 逆探索: 列挙する対象間に親子関係を定義し、導出さ れる木を深さ優先探索して全ての要素を出力する方法 ・ 頂点数 n のグラフの親を、頂点数が n-1 のグラフで定 める ・ 頂点数 3 のグラフ( 3 角形)を根とする木になる

計算量 木の深さ優先探索にかかる時間を算定すればよい ・ ほとんどの内点は子供を 2 人以上持つ  頂点数 ≦ 3 × 頂点数 n のグラフ数 ・ 枝の移動 = O(1) より、 1 つあたり O(1) 時間で列挙できる

根無しの列挙 ・ 根付きではないものを列挙するには、 重複した出力をやめれば良い ・ 今までの出力を保存してチェック ・・・ × メ モリ爆発 ・ 根だけ違うグラフに順序を付け、最小のものだけ 出力 グラフと根が与えられたときに、過去の出力を参照せずに、 そのグラフを出力するかどうかを決める必要がある

文字列を与える 中野 01 では: ・ 根付きグラフに文字列を与える (異なる根・グラフに異なる文字列) ・ 同じグラフの中で、最小文字列を与える根だけを 出力 ・ グラフが出てきたら、他の枝を根としたときの文 字列を計算し、自分が最小なら出力する ・ 対称なグラフは 1 度しか出力されないので、それら に関して異なる文字列を与える必要はない

計算時間 ・ 1 つのグラフ&根に対して、文字列を計算するのに O(n) ・ 全ての根に対して計算すると O(r n) ・ 1 つのグラフは最大で r 回出力される (1つ根無しグラフは、 r 個それぞれの外周辺を根と した根付きグラフになる) つまり、 1 つの根無しグラフのために最大 r 回の計算 ・ 結局、 1 つの根無しグラフあたり O(r 2 n)

高速化をしたい ・根付きの列挙が 1 つあたり O(1) であるのに対して、 根無しの列挙は 1 つあたり O(r 2 n) 根付きのほうが r 倍程度、総数が多いことを考慮して も、少々遅いのではないか? -- 是非高速化を行いたい ・ うまいアイディアが出てくれば、他の平面グラフオ ブジェクト(木とか 2 分木とか 3 角グラフとか)の列挙 も高速化できるかもしれない

今回の方針 ・ 1 つの根無しグラフのために最大 r 回の計算をして いる、というところは、手を付けない ・ 全ての根に対して文字列の計算をすると O(rn) 、と いう、ここを速くしてみよう 結果: ・ 異なる文字列を与える方法を考案した ・ 最小の文字列を与える根を O(n) 時間で求められる (最小でない根の文字列の計算をさぼっている)

見方を変えると 今回扱う問題は、 平面 2 連結グラフ  そのグラフの外周上の辺 という写像を設計したい ただし、高速に求められないと意味がない ( O(r n) より速く ) というものである

外周面 D 0 を定義 ・ 外周上の点に接する面( 3 角形)からなるグラフを D 0 とする ・ D 0 を取り除いて残ったグラフを内部とする ※ 内部は、いくつかの 2 連結 3 角グラフになる

まず、 3 角形のタイプ分け ・ 取り除いた、それぞれの 3 角形を、全ての頂点が外周 に乗っているか、外周に乗っているか、内部と接してい るか、などで 10 通りに分ける それぞれのタイプに文字を割当てる ・ 外周に接する 3 角形に、最小の文字を割当てる

3 角形にパラメータを与える ・ 2 箇所以上の外周に接している面には、外周に再び 自分が現れるまでの ・ 頂点のみで接しているものには、辺をはさんで反 対側の三角形の頂点までの (時計回りでの)外周の辺数をパラメータとして与 える 文字列とパラメータが決まると、 D 0 の形は一通りに定まる

根に文字列を与える 各根に対して、その根(辺)からスタートして、 時計回り順に D 0 の 3 角形の ( 3 角形のタイプ と パラメータ の組) を並べた物を、根の ( D 0 に関する)文字列とする

内部の文字列を与える 内部の 3 角形が作るグラフについても、根に近い連結成 分から順に、根に最も近い辺を根として、同様に文字 列を計算し、再帰的に付け加えて、根の文字列を定義 する

文字列とグラフ&根が対応 ・グラフと根から、文字列が唯一的に決まる ・文字列を与えると、グラフと根が唯一的に決まる 2 つの (グラフと根)に対して、 文字列が同じ  グラフと根が同型 文字列が異なる  グラフか根が異なる

辞書順で最小の根を探す 各根について、その根の文字を計算して、辞書順で最 小のものを見つける ‥‥ O(r n) 時間かかる それぞれの根について、頭から1文字ずつ順に文字列 を計算していき、途中で辞書順最小ではなくなったも のは、候補から除去する

単純に計算すると もしも比較をしている途中で文字列同士が重ならなけ れば、 計算時間は O( n ) 文字列が重なってしまう(オーバーラップする)とき の計算時間を省略する方法を考える

文字列の先頭に反復数を書く 文字列が取り除かれたとき、そのときの反復数を、文 字の先頭に書き込む ※ そこから、その文字数先までは辞書順で最小、とい うことを保障している 12

オーバーラップの処理1 ・ 文字列同士がオーバーラップするときは、前の文字列の 先頭に後ろの文字列の末尾が重なる ・ 外周に接している 3 角形には、最小の文字を与えていた ので、この時点で重なっていない文字列は、候補から外れ る ・文字列が鎖のように重なったときは、各文字列は、末尾 の部分まで、辞書順で最小になる ABCDE ABCDE ABCDE ABCDE Z ○ × × ×

オーバーラップの処理2 ・ 重なった部分に数字 k が書かれている(消去された文字 列)ものは、 その k 文字先まで辞書順最小 ・ 以上から、もっとも長くまで辞書順で最小のもののみが 生き残り、その他は候補からはずれる ※ (生き残りの長さを k とすると) k 文字先まで探索を省け る 5 ABCDE ABCDE Z 2 ABCDE AB Z ○ ×

計算量 文字列に 1 文字付け加えると、 ・ 文字がひとつ新たに探索される、か ・ 重なった場合には候補がひとつ消える ので、根の文字列の中で D 0 に関する部分で最小なもの を求めるのは、 D 0 に含まれる 3 角形数の線形時間でで きる ・内部のグラフについても、 同じことを再帰的にする 計算時間: 3 角形の数の線形= O( n )

まとめ ・ 2 連結 3 角形グラフに対して、その根の一つを決定的 に指定する O( n ) 時間のアルゴリズムを開発した ・ その結果、 2 連結 3 角形グラフの列挙アルゴリズムが の計算時間が、 1つあたり O(r 2 n) から O( r n ) に なった ・ その他のグラフの列挙アルゴリズムにも適用できそ うである ( 2 辺連結 3 角形グラフ、 3 角形グラフは、すぐにで きそう)