A Simple Algorithm for Generating Unordered Rooted 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を効率よく構成するアルゴリズム
正規表現からのDFA直接構成.
テキストデータベースからの 構文構造のマイニング
Bipartite Permutation Graphの ランダム生成と列挙
極小集合被覆を列挙する 実用的高速アルゴリズム
簡潔データ構造 国立情報学研究所 定兼 邦彦.
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
2分探索.
情報生命科学特別講義III (8)木構造の比較: 順序木
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
    有限幾何学        第8回.
On the Enumeration of Colored Trees
頻出集合列挙アルゴリズムに対する 実用的高速化技術について
Problem G : Entangled Tree
2章 データ構造.
An Algorithm for Enumerating Maximal Matchings of a Graph
Permutationグラフと Distance-Hereditaryグラフの 再構築アルゴリズム
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(3) + 数理談話会 木構造および画像データの文法圧縮
列挙問題 列挙問題の定義 アルゴリズムの速度 バックトラッキング 分割法 逆探索.
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
宇野 毅明 国立情報学研究所 2002年3月 東北大大学院 情報科学研究科ワークショップ
疑似頻出アイテム集合の 多項式遅延列挙アルゴリズム
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す.
Proper Interval Graphsの ランダム生成と列挙
ヒープソートの復習.
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
アルゴリズムとデータ構造 第7回探索のためのデータ構造(1) 2015/11/18 アルゴリズムとデータ構造 2015.
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
離散数学 08. グラフの探索 五島.
頻出集合発見問題に対する アルゴリズム技術
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
データ構造と アルゴリズム 第七回 知能情報学部 新田直也.
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
決定木 Decision Tree DT 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
離散数学 07. 木 五島.
Cプログラミング演習 第10回 二分探索木.
情報生命科学特別講義III (13) 固定パラメータアルゴリズムと 部分k木
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
プログラミング 4 木構造とヒープ.
九州大学大学院 情報学専攻特別講義 (6) 固定パラメータアルゴリズムと 部分k木
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分
アルゴリズムとデータ構造 第3章 ヒープ 5月31日分の復習
列挙問題 列挙問題の定義 アルゴリズムの速度 バックトラッキング 分割法 逆探索.
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
アルゴリズムとデータ構造 2011年6月16日
ヒープソートの復習 第12回.
情報工学概論 (アルゴリズムとデータ構造)
大規模データ処理に対する 列挙アルゴリズムの活用
2009/11/27 グラフ (1) 第9講: 平成21年11月27日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
平面走査法を使った 一般線分の 交点列挙アルゴリズム
情報生命科学特別講義III (14) グラフの比較と列挙
ヒープソート.
生命情報学特論 (6) 固定パラメータアルゴリズムと 部分k木
ヒープソート.
アルゴリズムとデータ構造 2013年6月20日
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
グラフの列挙 中野 眞一    (群馬大学) 2019/9/14 列挙学校.
生物情報ソフトウェア特論 (10)固定パラメータアルゴリズムと 部分k木
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
Presentation transcript:

A Simple Algorithm for Generating Unordered Rooted Trees 中野 眞一    宇野 毅明  群馬大学     情報学研究所             (総研大の博士課程に入           学したい人募集中) 2003年5月23日 アルゴリズム研究会

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

問題:根付き木の列挙 問題: 頂点数が1からnまでの根付き木を列挙せよ。 ただし、根が同一かつ同型なものは同一視せよ。 例えば、1頂点から子供を付け足していくバックトラック法で列挙できるが、同型なものをたくさん出力してしまう

応用:グラフマイニング 問題: 入力した根付き木の中に頻出する(α回以上現れる)根付き木を列挙せよ 問題: 入力した根付き木の中に頻出する(α回以上現れる)根付き木を列挙せよ 解法: 1頂点からなる木を1つずつ大きくしていき、頻出すれば出力、頻出でなくなったら引き返す、というバックトラック型の探索をする 入力した木

順序木と無順序木 順序木:各頂点に、その子供の順序が与えられている木 ⇒ 無順序木:順序が与えられていない木 2つの順序木が同型 ⇒  無順序木:順序が与えられていない木 2つの順序木が同型  ⇔  根と、順序を保存する同型写像が存在 これらは無順序木として同型だが、順序木としては異なる

順序木のdepth sequence 順序木のdepth sequence:   左を優先して深さ優先探索し、訪れた頂点の深さをpre-orderで並べる 2つの順序木が同型 ⇔ depth sequence が等しい 0,1,2,3,3,2,2,1,2 0,1,2,2,3,3,2,1,2 0,1,2,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 と無順序木は1対1対応 ⇒ left… を列挙しましょう 辞書順: 長いほうが大きい 0,1,2,3,3,2,2,1,2 0,1,2,2,3,3,2,1,2 0,1,2,1,2,3,3,2,2

left heavy embedding の親 left-heavy embedding T の親 P(T)    : Tの最も右の葉を取った木 RP(T) : left heavy embedding T の最も右のパス ・ RP(T)の各頂点 v について、 L(v) の末尾が1つ削られる       ⇒  P(T) は left heavy embedding T P(T) 0, 1,2,3,3,2 ,1,2,2 0, 1,2,3,3,2, 1,2

Left-heavy embedding の親子関係をグラフで表現 ・これを深さ優先探索する ・木Tの子供が作れれば 探索できる Family tree Left-heavy embedding の親子関係をグラフで表現 ・これを深さ優先探索する ・木Tの子供が作れれば  探索できる

left heavy embedding の子 ・ Tの子供 S は、 RP(T) の右に葉をつけたもの ・逆は、成り立つとは限らない   RP(S)の任意の頂点 v について、L(v) ≦ L(bro(v)) ⇔   S が left heavy embedding  ⇔  S は T の子供 多項式時間で列挙可能 もう少しがんばる 子供の候補はn個 子供のチェック 多項式時間 T S

子供になる条件1 vi : RP(T) の深さ i の頂点 ■ L(vi ) が L(bro(vi )) の prefix でない    ⇒ L(vi ) に何を付け足しても L(vi ) < L(bro(vi )) ■ L(vi ) が L(bro(vi )) の prefix ( L(bro(vi )) = L(vi ) d1 d2 d3 … ) 付けた葉の深さが d1 以下 ⇔ L(vi ) ≦ L(bro(vi )) vi bro(vi ) ・ 任意の vi について 成り立てば、子供

子供になる条件2 v* : prefix となるものの中で最も浅い頂点 copydepth: v* の深さ v*について先の条件が成り立てば 任意の vi について成り立つ v* 深さ1からcopydepthまでの 葉を付けたものが子供 d1

copy depth の保持 ・ 付け足した頂点 u の深さが d1 と同じ  ⇒ L(v* ) が L(bro(v* )) の prefix かつ一番浅い  ⇒ d1 の次の頂点の深さが copy depth ・ d1より浅い ⇒ u はprefix  その他は prefix でない ⇒ u の深さが copy depth vi bro(vi ) d1

アルゴリズムをまとめると T: 木, d:copy depth、 L: T の depth sequence, 根付き木( T, v ) 2: j := L での d の次の深さ 3: 根付き木( T+深さが j の葉, j ) 4: for i=0 to j-1 5:   根付き木( T+深さ i の葉, i ) ・ 1反復の計算量 = O(子供の数) ⇒ 1反復あたり O(1) ・ 出力 は1反復あたり差分1 ⇒ 1回あたり O(1) ・ メモリ使用量は O(n)

n頂点の根付き木の列挙 問題: 頂点数がちょうど n の根付き木を列挙せよ ⇒ 根付き木を列挙し、頂点数が n のもののみ出力 計算量は? ならば、1つあたり定数時間

問題: 頂点数n-1 の木から、それ固有の、頂点数nの木を2つ作る ⇒ #頂点数nの根付き木 ≧ 2× #頂点数n-1の根付き木

まとめと今後の展開 ・頂点数が 1 から n の根付き木を列挙する、1つ当たり定数時間のアルゴリズムを提案した 今後は: ・ グラフマイニングに応用したい ・ 根のついていない木、平面に埋め込んだ木なども、同じように列挙したい