a simple algorithm for generating unordered rooted trees n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
A Simple Algorithm for Generating Unordered Rooted Trees PowerPoint Presentation
Download Presentation
A Simple Algorithm for Generating Unordered Rooted Trees

Loading in 2 Seconds...

play fullscreen
1 / 17

A Simple Algorithm for Generating Unordered Rooted Trees - PowerPoint PPT Presentation


  • 92 Views
  • Uploaded on

A Simple Algorithm for Generating Unordered Rooted Trees. 中野 眞一    宇野 毅明  群馬大学     情報学研究所             ( 総研大の博士課程に入           学したい人募集中 ) 2003年5月23日 アルゴリズム研究会. 研究背景. 列挙の研究は面白い ・ キレイな結果の出る問題が残っている     (アルゴリズム的な研究がされつくしていない)  ・ 近年、工学的な応用が増えた     (計算機パワーの増大&アルゴリズムの進展で、

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'A Simple Algorithm for Generating Unordered Rooted Trees' - adele


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
a simple algorithm for generating unordered rooted trees

A Simple Algorithm for Generating Unordered Rooted Trees

中野 眞一    宇野 毅明

 群馬大学     情報学研究所

            (総研大の博士課程に入           学したい人募集中)

2003年5月23日 アルゴリズム研究会

slide2

研究背景

列挙の研究は面白い

・ キレイな結果の出る問題が残っている

    (アルゴリズム的な研究がされつくしていない)

 ・ 近年、工学的な応用が増えた

    (計算機パワーの増大&アルゴリズムの進展で、

    列挙という手法を使ったモデルを解けるようになった)

slide3

問題:根付き木の列挙

問題: 頂点数が1からnまでの根付き木を列挙せよ。

ただし、根が同一かつ同型なものは同一視せよ。

例えば、1頂点から子供を付け足していくバックトラック法で列挙できるが、同型なものをたくさん出力してしまう

slide4

応用:グラフマイニング

問題: 入力した根付き木の中に頻出する(α回以上現れる)根付き木を列挙せよ

解法: 1頂点からなる木を1つずつ大きくしていき、頻出すれば出力、頻出でなくなったら引き返す、というバックトラック型の探索をする

入力した木

slide5

順序木と無順序木

順序木:各頂点に、その子供の順序が与えられている木

⇒  無順序木:順序が与えられていない木

2つの順序木が同型

⇔  根と、順序を保存する同型写像が存在

これらは無順序木として同型だが、順序木としては異なる

depth sequence

順序木の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

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 embedding1

left heavy embedding の親

left-heavy embeddingTの親 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

family tree

Family tree

Left-heavy embedding の親子関係をグラフで表現

・これを深さ優先探索する

・木Tの子供が作れれば

 探索できる

left heavy embedding2

子供の候補はn個

子供のチェック

多項式時間

多項式時間で列挙可能

もう少しがんばる

left heavy embedding の子

・Tの子供 Sは、 RP(T) の右に葉をつけたもの

・逆は、成り立つとは限らない

RP(S)の任意の頂点 v について、L(v) ≦ L(bro(v))

⇔Sが left heavy embedding

 ⇔S は T の子供

T

S

slide11

子供になる条件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 について

成り立てば、子供

slide12

子供になる条件2

v*

v*: prefix となるものの中で最も浅い頂点

copydepth: v* の深さ

v*について先の条件が成り立てば

任意の vi について成り立つ

深さ1からcopydepthまでの

葉を付けたものが子供

d1

copy depth

copy depth の保持

・ 付け足した頂点 u の深さが d1と同じ

⇒L(v*) が L(bro(v*)) の prefix かつ一番浅い

 ⇒ d1の次の頂点の深さが copy depth

・ d1より浅い

⇒ u はprefix

 その他は prefix でない

⇒ uの深さが copy depth

vi

bro(vi )

d1

slide14

アルゴリズムをまとめると

T: 木, d:copy depth、 L: T の depth sequence,

根付き木( T, v )

1: T を出力 (前の出力との差分)

2: j := Lでの d の次の深さ

3: 根付き木( T+深さが jの葉, j )

4: fori=0toj-1

5:   根付き木( T+深さ i の葉, i )

・ 1反復の計算量 =O(子供の数) ⇒ 1反復あたり O(1)

・ 出力 は1反復あたり差分1 ⇒ 1回あたり O(1)

・ メモリ使用量は O(n)

slide15

n頂点の根付き木の列挙

問題: 頂点数がちょうど nの根付き木を列挙せよ

⇒ 根付き木を列挙し、頂点数が nのもののみ出力

計算量は?

#頂点数nの根付き木

≧α#頂点数n-1の根付き木

ならば、1つあたり定数時間

slide16

( #頂点数nの根付き木)を押さえる

問題: 頂点数n-1 の木から、それ固有の、頂点数nの木を2つ作る

⇒   #頂点数nの根付き木

≧2×#頂点数n-1の根付き木

slide17

まとめと今後の展開

・頂点数が 1 から nの根付き木を列挙する、1つ当たり定数時間のアルゴリズムを提案した

・このアルゴリズムの計算時間が頂点数が nの根付き木にたいしても、1つ当たり定数時間であることを証明した

今後は:

・ グラフマイニングに応用したい

・ 根のついていない木、平面に埋め込んだ木なども、同じように列挙したい