A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.

Slides:



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

平面三角分割グラフを列挙す るアルゴリズムの改良 中野 眞一 ( 群馬大学 ) 宇野 毅明 ( 情報学研究 所 ) 2002 年 6 月 24 日 コンピューテーション研究会.
論理回路 第 11 回
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
Bipartite Permutation Graphの ランダム生成と列挙
極小集合被覆を列挙する 実用的高速アルゴリズム
簡潔データ構造 国立情報学研究所 定兼 邦彦.
動的計画法 表の作成 制約の追加 練習問題.
動的計画法 表の作成 制約の追加 練習問題.
ラベル付き区間グラフを列挙するBDDとその応用
2分探索.
    有限幾何学        第8回.
On the Enumeration of Colored Trees
Problem G : Entangled Tree
5.チューリングマシンと計算.
5.チューリングマシンと計算.
An Algorithm for Enumerating Maximal Matchings of a Graph
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(3) + 数理談話会 木構造および画像データの文法圧縮
Reed-Solomon 符号と擬似ランダム性
データ構造とアルゴリズム 第7回 木 ~ データ構造(3)~.
 Combinations(2)        古川 勇輔.
宇野 毅明 国立情報学研究所 2002年3月 東北大大学院 情報科学研究科ワークショップ
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
Proper Interval Graphsの ランダム生成と列挙
最短路問題のための LMS(Levelwise Mesh Sparsification)
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造 2012年6月28日
アルゴリズムとデータ構造 2011年6月27日
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
決定木とランダムフォレスト 和田 俊和.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
離散数学 08. グラフの探索 五島.
二分木のメソッド(続き).
データ構造とアルゴリズム (第3回) ー木構造ー.
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
計算量理論輪講 chap5-3 M1 高井唯史.
データ構造と アルゴリズム 第七回 知能情報学部 新田直也.
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
決定木 Decision Tree DT 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
Cプログラミング演習 第10回 二分探索木.
情報生命科学特別講義III (13) 固定パラメータアルゴリズムと 部分k木
アルゴリズムとデータ構造 2010年7月26日
プログラミング 4 木構造とヒープ.
九州大学大学院 情報学専攻特別講義 (6) 固定パラメータアルゴリズムと 部分k木
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
第16章 動的計画法 アルゴリズムイントロダクション.
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
アルゴリズムとデータ構造 2012年7月2日
5.チューリングマシンと計算.
アルゴリズムとデータ構造1 2008年7月24日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
アルゴリズムとデータ構造 2013年7月1日
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造 2013年7月2日
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
ヒープソート.
生命情報学特論 (6) 固定パラメータアルゴリズムと 部分k木
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Presentation transcript:

A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会

結果 頂点数が n 、 直径が k である根無し木を 1つあたり 定数時間 で出力するアルゴリズムを構築した 1つあたり 定数時間 で出力するアルゴリズムを構築した ・ ・ 同型な木を 2 回出力することはない ・ ・ 1つ出力してから次を出力するまで、定数時間 「 free tree 」 は、「根の無い木」のことです

研究背景 列挙の研究は面白い ・ ・ キレイな結果の出る問題が残っている (アルゴリズム的な研究がされつくしていない) ・ ・ 近年、工学的な応用が増えた (計算機パワーの増大&アルゴリズムの進展で、 列挙という手法を使ったモデルを解けるように なった) - - データの生成、解候補の作成、ものの特徴付け、な ど

問題:根無し木の列挙 問題: 頂点数が n 、直径が k の根無し木を列挙せよ ただし、同型なものは同一視せよ。

根無し木の列挙 既存研究: ・ ・ 1 つあたり定数時間。 ・ ・ ただし、複雑でよく分からない ・ ・ Delay (次の出力までの時間)は定数でない

問題の難しさ ・ バックトラック法 ・ 通常、この手の列挙問題にはバックトラック法が使 われる ・ ・ 例えば、 1 頂点から子供を付け足していき、 n 頂点、 直径 k になったら出力して引き返し、他の位置に子供を 付け足す。 ⇒ ⇒ 木をメモリに蓄える際に、どうしても根(のような もの)と兄弟の順番が決まる。 ⇒ ⇒ 同型なものが たくさん出てしまう

難しさを避ける 作戦: 根無し木に対して、ある標準的な「根の与え方」「子供 の順序の与え方」を定める(標準形) - - 根無し木と標準形は 1 対 1 対応する ・ ・ あとは、標準形を列挙しましょう (※) (※ 以後、直径 k を偶数とする)

根の与え方 センター 木のセンターを根とする センター センター: 最も遠い頂点までの距離が最も短い頂点 (つまりは真ん中) 直径が偶数だと、唯一的に定まる

順番を与える: depth sequence depth sequence : 左を優先して深さ優先探索し、訪れた頂点の深さを pre-order で並べたもの 2つの木が順番も含めて同型 ⇔ depth sequence が等しい 0,1,2,3,3,2,2,1,2,3 0,1,2,2,3,3,2,1,2,3 0,1,2,3,1,2,3,3,2,2

left heavy embedding L(v) : v から下の部分木の depth sequence bro(v ) : v の左隣の兄弟 T が Left-heavy embedding : ⇔ 任意の頂点 v について、 L(bro(v)) ≧ L(v) ・ left heavy embedding で、子供の順番を与える 0,1,2,3,3,2,2,1,2,3 0,1,2,2,3,3,2,1,2,3 0,1,2,3,1,2,3,3,2,2 辞書順: 長いほうが大きい

標準形ができました ・ ・ 根無し木に対して (1) センターを根にする (2) Left-heavy embedding になるように順番をつける として標準形(根付き順序木)が得られる ・ あとは、頂点数が n 、直径が k である、標準形( left- heavy embedding )を列挙しましょう

left heavy embedding の親 left-heavy embedding T の親 : T の(根の子供でない)最も右の葉を取り、 根の子供にした木 ⇒ 親も left-heavy embedding ただし、直径が変わってしまう場合は、右から 2 番目をと る ,1,2,3,3,2,1,2,3, 2,1 0,1,2,3,3, 2,1,2,3,1, 1 0,1,2,3, 3,1,2,3,1,1, 1 T 親親の親

Family tree Left-heavy embedding の親子関係をグラフで表現 ・これを深さ優先探索する ・標準形 T の子供が作れれば 探索できる 頂点数 7 、 直径 4 の場合

left heavy embedding の子 ・ T の子供 S は T の根の子供を 1 つとり、(深さ 2 以上 の)最も右の葉になるように付けたもの ・逆は、成り立つとは限らない。しかし、 「ある頂点 v の深さ以下であれば子供になる」 という性質が成り立つ v v しかも、子供の v は、親の v の次か、加えた頂点の直左 T 子供 O(1) 時間で 更新できる O(1) 時間で 作れる 1つ定数時間 で列挙できる

Delay を定数にする ・ 「深さが奇数の反復は、再帰呼び出しの前に出力」 「深さが偶数の反復は、再帰呼び出しの後に出力」 とすると、次の出力までの計算時間が定数(3反復以下) になる 再帰構造

2 つのセンターを1つの頂点のように扱い、同様の議論をする (根の子供の順番付けに関して例外処理が必要) 直径が奇数の場合 ・ センター ・ センターが2つになる

まとめと今後の展開 ・頂点数 n 、直径 k の根無し木を列挙する、次の出力 まで定数時間であるアルゴリズムを提案した ・ まず直径が偶数の場合のアルゴリズムを作り、直径 が奇数の場合は、それを拡張した今後は: ・ 平面に埋め込んだ木や、木以外のグラフオブジェク トも(簡単なアイディアで)列挙したい