On the Enumeration of Colored Trees

Slides:



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

平面三角分割グラフを列挙す るアルゴリズムの改良 中野 眞一 ( 群馬大学 ) 宇野 毅明 ( 情報学研究 所 ) 2002 年 6 月 24 日 コンピューテーション研究会.
A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
4.3 マージソート.
Bipartite Permutation Graphの ランダム生成と列挙
極小集合被覆を列挙する 実用的高速アルゴリズム
簡潔データ構造 国立情報学研究所 定兼 邦彦.
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
ヒープソートの演習 第13回.
2 分探索木 Binary Search Tree 実行可能な操作 計算量 木の高さは,最悪 O(n) n = |A| : 要素の個数
アルゴリズムとデータ構造 第8回 ソート(3).
2分探索.
情報生命科学特別講義III (8)木構造の比較: 順序木
アルゴリズムとデータ構造 2013年6月18日
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
Problem G : Entangled Tree
An Algorithm for Enumerating Maximal Matchings of a Graph
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(3) + 数理談話会 木構造および画像データの文法圧縮
アルゴリズムとデータ構造 補足資料13-4 「2分探索木の追加・削除(ダイジェスト)」
アルゴリズムとデータ構造 2012年6月14日
宇野 毅明 国立情報学研究所 2002年3月 東北大大学院 情報科学研究科ワークショップ
疑似頻出アイテム集合の 多項式遅延列挙アルゴリズム
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す.
Proper Interval Graphsの ランダム生成と列挙
ヒープソートの復習.
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
アルゴリズムとデータ構造 2011年6月14日
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
決定木とランダムフォレスト 和田 俊和.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
頻出集合発見問題に対する アルゴリズム技術
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
第9回 優先度つき待ち行列,ヒープ,二分探索木
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
Cプログラミング演習 第10回 二分探索木.
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
プログラミング 4 木構造とヒープ.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
15.cons と種々のデータ構造.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第16章 動的計画法 アルゴリズムイントロダクション.
第9回 優先度つき待ち行列,ヒープ,二分探索木
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
アルゴリズムとデータ構造 2012年7月2日
アルゴリズムとデータ構造 2011年6月28日
アルゴリズムとデータ構造 2011年6月16日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
ヒープソートの復習 第12回.
情報工学概論 (アルゴリズムとデータ構造)
Advanced Data Structure 第3回
アルゴリズムとデータ構造 2013年7月2日
平面走査法を使った 一般線分の 交点列挙アルゴリズム
情報生命科学特別講義III (14) グラフの比較と列挙
ヒープソート.
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
Presentation transcript:

On the Enumeration of Colored Trees 中野 眞一    宇野 毅明  群馬大学     情報学研究所             (総合研究大学院大学) 2004年5月21日 アルゴリズム研究会

モチベーション ・あるグラフクラスに属するグラフを全部見つけたい ・ テスト問題用のカタログを作りたい (全部、は大変なので、ある程度以内の大きさのものに制限) ・ テスト問題用のカタログを作りたい ・ データマイニングや最適化問題の解候補を作りたい ・ 単純かつ高速な列挙方法を見つけたい

結果 - 根無し木は、根が与えられていない木 - 色付き木は、各頂点に色(整数)が与えられた木 頂点数が k+1 ~ n、 直径が k である色付き根無し木を  1つあたり 定数時間 で出力するアルゴリズムを構築した - 根無し木は、根が与えられていない木 - 色付き木は、各頂点に色(整数)が与えられた木 ・ 同型かつ頂点の色が等しい木を2回出力しない (重複を(効率良く)なくすのが難しい)

関連研究 家系図法 有機化合物 根付き順序木 三角形分割 マトロイド 色付き根付き 順序木 根付き 無順序木 フロアプラン グラフ 2分木 根無し木 色付き根無し木

基本アルゴリズム ・ 頂点数 1 の木から出発 ・ 頂点数 n の木に頂点を加え、頂点数が1つ大きな木を作る ・ この操作を用いて、バックトラック的に、重複なく木を生成する -根付き順序木ならば、 「最右パスの右に葉をつける」ことで、 重複なく列挙できる

無順序木の列挙 ・ 順序木と同じ方法だと、同型な木が大量に出てくる ←複数の異なる順序木が、同一な無順序木に対応するから  ←複数の異なる順序木が、同一な無順序木に対応するから ・深さ列を用いて、それらの代表を定義 ・ 代表になっているの順序木のみを列挙

深さ列 (順序木の)深さ列: 左を優先して深さ優先探索し、訪れた頂点の深さをpre-orderで並べたもの ・2つの順序木が順番も含めて同型 ⇔ 深さ列が等しい ・子供の順序を入れ替えていろいろな木が作れる。その中で最大の深さ列を持つものを left heavy embedding と呼ぶ (これが代表)   (各頂点の子供を子孫の深さ列の大きさでソート) ・2つの無順序木が同型 ⇔ 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

left heavy embedding の親 left-heavy embedding T の親 : T の最も右の葉を取った木   ⇒ 親も left-heavy embedding T 親 親の親 0,1,2,3,3,2,1,2,3,2,1 0,1,2,3,3,2,1,2,3,2 0,1,2,3,3,2,1,2,3 ・Left heavy embedding の子は、最右パスの右に、コピー深さ以浅に葉を付けたものになる  ⇒ 各頂点の子の深さ列の重みが逆転しない  ⇒ コピー深さは O(1) で更新できる

Left-heavy embedding の親子関係のグラフ Family tree Left-heavy embedding の親子関係のグラフ

根無し木の列挙 ・ 根がないので、深さ列で代表を決められない ⇒ センターを根と定義する(2つある場合は1つとして扱う)   ⇒ センターを根と定義する(2つある場合は1つとして扱う) センター: 最も遠い頂点までの距離が最も短い頂点 ・ 直径が偶数だと1つ、奇数だと2つ存在

left heavy embedding の親 直径 k のleft-heavy embedding T の親 :   T の最も右の葉を取った木。ただし、直径が変化する場合は、右から2番目を取る   ⇒ 親も 直径 k のleft-heavy embedding T 親 親の親 0,1,2,3,3,2,1,2,3,2,1 0,1,2,3,3,2,1,2,3,2 0,1,2,3,3,2,1,2,3

Family tree ・Tの右端パスの右に、コピー深さより 浅い位置に葉をつけると子供ができる ・根の子供が2人で、2番目の 子供の子孫がパスであるなら、 1番目の子供の木の 最右パスの右につけても良い 直径 4 の場合

色深さ列 (順序木の)色深さ列: 左を優先して深さ優先探索し、訪れた頂点の色と深さをpre-orderで並べたもの left heavy embedding も同様に定義 ・2つの色付き根無し木が同型  ⇔ センターを根とした left heavy embedding が等しい a b c 0,b,1,b,2,c,2,c,1,a,1,a,2,

left heavy embedding の親 しかたがないので、その木のleft-heavy embedding で T の親を定める a b c 0,b,1,b,2,c,3,a,2,c,1,a,2,c,1,a,2,b,3,c

left heavy embedding でない場合 ・ 取り除く葉が、直径を達成するパスの直左にあるパスの葉であるときのみ (そうでないときは、それより左側で、深さ列の大小が決まっている) a b c 0,b,1,b,2,c,3,a,2,c,1,a,2,c,1,a,2,b,3,c

左右の子供の深さ列の大小の変化 ・ 大小が変化する場所は、高々一箇所

子供の一覧 ・ 追加後に、「取り除いても直径が変わらない最も右の葉」になるように頂点を追加 ・ コピー深さよりも浅い位置に追加 ・ 直径を達成するパスの左側につける  かつ、そのパスから始まるパスの末尾に追加する  かつ 追加するパスの深さ列が 直径を達成するパスのprefix になっている 場合に、左右の子の逆転を考慮 ・ 全ての子供は、1つあたり 定数時間で生成できる ⇒全ての木を1つあたり定数時間で列挙できる

まとめと今後の展開 ・頂点数 1~n 、直径 k の色付き根無し木を列挙する、1つあたり定数時間のアルゴリズムを提案した ・ 順序木の列挙 ⇒ 無順序木 ⇒ 根無し木 ⇒ 色付き根無し木、と拡張した 今後は: ・ 木より大きなクラスのグラフの列挙がしたい