スライド タイトルなし

データ構造とアルゴリズム
第6回の2
木
~ データ構造(3)~
1
木構造 (tree)
2
内容



グラフ
木構造
木の定義と用語






根,節点,葉
親子,兄弟,先祖,子孫
経路と経路の長さ
深さと高さ
木の走査
代表的な木構造
3
グラフ(graph)




有限個の節点(node, 頂点, vertex)と,エッジ(edge, 辺, 枝)
の集合で構成される
V : 節点の集合
E : 辺の集合
G : グラフ
節点 v1
辺 (枝) e = (v1, v2)
v2
4
無向グラフと有向グラフ
無向グラフ
(undirected graph)
枝に方向を考えないグラフ
(v1, v2) = (v2, v1)
1
 有向グラフ
(directed graph, digraph)
2
枝の方向を考えるグラフ
(v1, v2) ≠ (v2, v1)

v2
v
v
v1
v2
v1
アーク
5
完全グラフ(complete graph)

すべての節点対の間に枝をもつ無向グラフ
6
部分グラフ(subgraph)

グラフG = (V, E)に対し,V’⊆V, E’⊆Eの作る
G’=(V’, E’)がグラフであるとき,G’はGの部
分グラフであるという
7
経路(path)




v1から v3への経路は存在する P: v1, v2,v3
v1から v4への経路は存在しない
経路P: v1, v2,v3は節点がすべて異なる⇒単純路
経路P: v1, v2,v3,v1は始点と終点が等しく、その他の節
点はすべて異なる⇒単純閉路
v4
v2
v1
v3
v5
v6
v7
8
ケーニヒスベルグの橋
陸地が4つ
橋が7本
同じ橋を2度渡らずに
すべての橋を通って
もとの場所に戻れるか
節点が4つ
辺が7本
同じ辺を2度通らずに
すべての辺を通って
もとの節点に戻る経路はあるか
9
連結グラフ(connected graph)


連結グラフ:任意の2つの節点間に経路が存在する
無向グラフ
無向木:閉路を持たない連結無向グラフ
10
木(Tree)
葉 leaf
根 root
12
階層構造(hierarchical structure)

木構造は,階層的な関係を表現するのに適している
A大学
C学部
B学部
D学科 E学科 F学科
G学科
H学科
Iコース
14
階層構造の例

組織図

系図

階層ディレクトリ
(p.39 図2.16)
etc...
15
木の再帰的定義
(p.42)
(1) 単一の節点は,それ自身で一つの木
(1)’ 空集合でも木(空の木(null tree)Λ)
(2) Ti : 木
n
ni : 木Tiの根
n : すべてのniの親
n1
n2
新しい木ができる
Tiは新しい木の部分木
nは新しい木の根
T1
T2
(3) すべての木は,(1)をもとに(2)を有限回
適用して得られる
nk
Tk
16
親子関係
親子関係:
 a は b, f の親(parent)
 b, f は a の子(child)
c
a
a, b, …は各々の
nodeの名前
b
d
f
e
部分木
(subtree)
g
h
i
18
兄弟
a
同じ親を持つ節点を
兄弟(sibling)という



b と f は兄弟
c と d と e は兄弟
g と i は兄弟
c
b
d
f
e
g
h
i
19
経路と経路の長さ

n1,n2,・・・,nk が木の中の
節点の列であって,1≦i<k
に対してni がni+1の親になっ
ているとき,この列のことを
「節点n1から節点nk への経路
(path)」という.

このとき,経路の長さは k -1

節点自身への経路の長さは0
n1
n2
n3
20
先祖と子孫



節点aから節点bへの経路があるとき,aはbの先祖
(ancestor),bはaの子孫(descendant)であるという
どの節点も自分自身の先祖であり子孫である
自分自身以外の先祖や子孫を真の先祖,真の子孫
という
21
例1 経路と子孫
aからhへの経路:
a, f, g, h
 その経路の長さ:
3
 fの子孫:
f, g, h, i
c
 fの真の子孫:
g, h, i
a

b
d
f
e
g
i
h
22
例2 先祖
a


cの先祖
a, b, c
cの真の先祖
a, b
b
c
d
f
e
根(root)
⇒真の先祖を持たない唯一の節点
 葉(leaf)
⇒真の子孫を持たない節点
g
i

h
23
深さと高さ

節点の高さ(height)
ある節点から葉への最長経路長

木の高さ
木の根の高さ

節点の深さ(level, depth)
根からある節点までの経路の長さ
24
例3 深さと高さ

a
節点b
高さ1,深さ1
深さ(レベル)0
b

節点g
高さ1,深さ2
c

f
d
e
g
i
木の高さ
3
h
25
順序木と無順序木


順序木(ordered tree):兄弟間で順序づけを行った木
無順序木(unordered tree):子の順序を無視した木
a
b
無順序木としてみれば,同じ木
c
c
順序木としてみると,異なる木
左: bが兄,cが弟
右: cが兄,bが弟
a
b
26
本日の問題
(問1)スタックSとキューQがあるとする。次の手順で操作を行
うとき,スタックS及びキューQの中身はどのように変化する
か、図を用いて説明せよ. また,xに何が代入されるか?
Push(C, S)⇒Push(A, S)⇒Enq (Pop(S), Q)⇒Enq (E,Q)⇒
Push(Deq (Q),S)⇒Enq (D ,Q) ⇒ x ← Deq (Q)
(問2)以下の3つの式を,ポーランド記法および逆ポーランド
記法で表現せよ.
式
ポーランド記法
逆ポーランド記法
ポーランドの首都は?
A+B+C
A*B-C
A*B-C÷D+E
27