SlideShare a Scribd company logo
1 of 18
アルゴリズムとデータ構
造
5.「ツリー(木)」
2011 年 4 月 19 日(火)
服部 健太
2011/4/19 アルゴリズムとデータ構造 5 2
概要
 データ構造としてのツリーの基礎的な事柄を
説明する
 木を応用したアルゴリズムは別途説明する.
2011/4/19 アルゴリズムとデータ構造 5 3
Tree (木)構造
 以下に示すようなデータ構造
 循環構造を含まないことに注意
 一般的には右下図の根付き木の
  ことを木と呼ぶことが多い
root (根)
edge (辺)
node (節点)
rooted tree (根付き木)free tree (自由木)
2011/4/19 アルゴリズムとデータ構造 5 4
Tree に関する用語
 親( parent )
 辺の上側(根に近い方)のノード
 子( child )
 辺の下側のノード
 祖先( ancestor )
 あるノードからみた親,親の親,親の親の親,・・・など
 子孫( descendant )
 あるノードからみた子,子の子,・・・など
 葉( leaf )
 子を持たないノード
 内部ノード( internal node )
 子を持つノード
 深さ( depth )
 根からあるノードに至るまでに通る辺の数
 高さ( height )
 根からもっとも遠いノードの深さ
2011/4/19 アルゴリズムとデータ構造 5 5
確認問題
 右の木について
 ノード d の親は?
 ノード d の子は?
 ノード e の祖先は?
 ノード b の子孫は?
 葉を全て列挙せよ
 ノード f の深さは?
 高さは?
a
b c d
g he f
root (根)
li j k
2011/4/19 アルゴリズムとデータ構造 5 6
実世界における木構造の例
 会社の組織構造
 生物の分類
 問題:他にも木構造の例を挙げよ
社長
重役 重役
部長 部長 部長 部長 部長
課長 課長 課長
・・・
生物
植物界 動物界
無脊椎動物 脊椎動物・・・
2011/4/19 アルゴリズムとデータ構造 5 7
木のバリエーション
 順序木( ordered tree )
 1つの頂点が複数の子を持つとき,これらの子の
順序に意味があるような木
 例:人間の親族関係では,長男と次男の順序に意味があ
るから,順序木とみなせる
 2分木( binary tree )
 各節点の子の数がたかだか2であるような順序木
 もっともよく使われる木
2011/4/19 アルゴリズムとデータ構造 5 8
2分木の表現方法
 2分木 T
 根となるノードへのポインタ
を保持する root フィールド
を持つ
 空の木は T.root = None とな
る
 2 分木のノードは,要素を保
持するフィード elem に加え
て,左の子と右の子のそれぞ
れのノードを示す left と right
の2つのフィールドを持つ
 子がいない場合, None とな
る
 親ノードへのポインタを含め
る場合もある
T.root
left elem
right
2011/4/19 アルゴリズムとデータ構造 5 9
一般の木の表現方法
 各ノードは,子のリストの先頭を指すポインタと自
分が属するリストの次の要素を指すポインタを保持
するフィールドを持つ.
T.root
child sibling
2011/4/19 アルゴリズムとデータ構造 5 10
木の走査( traversal )
 行きがけ順走査( pre-order traversal )
 親の節点を調べてから子供を順に調べていく
 間順走査( in-order traversal )
 最初の子を調べてから,親を調べ,その後で残り
の子を順に調べる
 もっぱら2分木に対して使われる
 帰りがけ順走査( post-order traversal )
 子供を全部調べてから親を調べる
2011/4/19 アルゴリズムとデータ構造 5 11
練習問題
 右の二分木について
各要素( elem )の文字を
 行きがけ順に表示
 間順に表示
 帰りがけ順に表示
した場合,それぞれどのよ
うな結果になるか?
T.root
left elem
a
right
b c
d e f
g h
2011/4/19 アルゴリズムとデータ構造 5 12
2分木の走査
 行きがけ順走査
 再帰呼び出しを使う
def preorder(n):
if n != None:
# do_somthing(n.elem)
preorder(n.left)
preorder(n.right)
 最初の呼び出しには木の根をパラメータとして渡す
>>> preorder(T.root)
2011/4/19 アルゴリズムとデータ構造 5 13
練習問題
 スライド「一般の木の表現方法」で示した木
に対する行きがけ順走査を書け
2011/4/19 アルゴリズムとデータ構造 5 14
解答例
 補足資料( lecture5.py )参照
2011/4/19 アルゴリズムとデータ構造 5 15
2分木の走査(2)
 間順走査
def inorder(n):
if n != None:
inorder (n.left)
# do_something(n.elem)
inorder(n.right)
 帰りがけ順走査
def postorder (n):
if n != None:
postorder(n.left)
postorder(n.right)
# do_something (n.elem)
2011/4/19 アルゴリズムとデータ構造 5 16
その他の手続き
 ノードの深さを求める
 # parent フィールド付きのノードの場合
def depth(n):
d = 0
while n.parent != None:
d = d + 1
n = n.parent
return d
 木の高さを求める
def tree_height(n):
if n == None: return -1
return 1 + max(tree_height(n.left),
tree_height(n.right))
2011/4/19 アルゴリズムとデータ構造 5 17
練習問題
 parent フィールドなしの木ノード作成を以下のよう
に定義する
def tnode(x, l, r):
return record({‘elem’: x, ‘left’: l,
‘right’: r})
 2分木は以下のように生成できる
root = tnode(1,tnode(2,tnode(3,None,None),
tnode(4,None,None)),
tnode(5,None,
tnode(6,None, None)))
 上記によって生成される2分木を図示せよ
 ノードの値を print するように preorder, inorder,  
postorder をそれぞれ定義し,実際に確認せよ
2011/4/19 アルゴリズムとデータ構造 5 18
解答例
 補足資料( lecture5.py )参照

More Related Content

What's hot

子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得Yuya Unno
 
ベイズ最適化
ベイズ最適化ベイズ最適化
ベイズ最適化MatsuiRyo
 
ROSでロボット開発中
ROSでロボット開発中ROSでロボット開発中
ROSでロボット開発中ssuser2144b2
 
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...Deep Learning JP
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係についてDeep Learning JP
 
Reservoir computing fast deep learning for sequences
Reservoir computing   fast deep learning for sequencesReservoir computing   fast deep learning for sequences
Reservoir computing fast deep learning for sequencesClaudio Gallicchio
 
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースSql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースOda Shinsuke
 
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
生成系ニューラルネットワークまとめ Summary of  Generative Neural Network生成系ニューラルネットワークまとめ Summary of  Generative Neural Network
生成系ニューラルネットワークまとめ Summary of Generative Neural NetworkYouichiro Miyake
 
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介西岡 賢一郎
 
データ解析14 ナイーブベイズ
データ解析14 ナイーブベイズデータ解析14 ナイーブベイズ
データ解析14 ナイーブベイズHirotaka Hachiya
 
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdf
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdfA Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdf
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdfssuserbaad54
 
画像認識における特徴表現 -SSII技術マップの再考-
画像認識における特徴表現 -SSII技術マップの再考-画像認識における特徴表現 -SSII技術マップの再考-
画像認識における特徴表現 -SSII技術マップの再考-Hironobu Fujiyoshi
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発Morpho, Inc.
 
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural NetworksYosuke Shinya
 
[アルゴリズムイントロダクション勉強会] ハッシュ
[アルゴリズムイントロダクション勉強会] ハッシュ[アルゴリズムイントロダクション勉強会] ハッシュ
[アルゴリズムイントロダクション勉強会] ハッシュRei Takami
 
[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audio[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audioDeep Learning JP
 
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...Masatoshi Yoshida
 
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)[論文紹介] LSTM (LONG SHORT-TERM MEMORY)
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)Tomoyuki Hioki
 

What's hot (20)

子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得
 
ベイズ最適化
ベイズ最適化ベイズ最適化
ベイズ最適化
 
ROSでロボット開発中
ROSでロボット開発中ROSでロボット開発中
ROSでロボット開発中
 
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...
【DL輪読会】Emergent World Representations: Exploring a Sequence ModelTrained on a...
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
 
Reservoir computing fast deep learning for sequences
Reservoir computing   fast deep learning for sequencesReservoir computing   fast deep learning for sequences
Reservoir computing fast deep learning for sequences
 
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースSql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
 
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
生成系ニューラルネットワークまとめ Summary of  Generative Neural Network生成系ニューラルネットワークまとめ Summary of  Generative Neural Network
生成系ニューラルネットワークまとめ Summary of Generative Neural Network
 
A3C解説
A3C解説A3C解説
A3C解説
 
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介
機械学習をこれから始める人が読んでおきたい 特徴選択の有名論文紹介
 
データ解析14 ナイーブベイズ
データ解析14 ナイーブベイズデータ解析14 ナイーブベイズ
データ解析14 ナイーブベイズ
 
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdf
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdfA Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdf
A Mathematical Introduction to Robotic Manipulation 輪講 第二回.pdf
 
画像認識における特徴表現 -SSII技術マップの再考-
画像認識における特徴表現 -SSII技術マップの再考-画像認識における特徴表現 -SSII技術マップの再考-
画像認識における特徴表現 -SSII技術マップの再考-
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発
 
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
 
[アルゴリズムイントロダクション勉強会] ハッシュ
[アルゴリズムイントロダクション勉強会] ハッシュ[アルゴリズムイントロダクション勉強会] ハッシュ
[アルゴリズムイントロダクション勉強会] ハッシュ
 
[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audio[DL輪読会]Wavenet a generative model for raw audio
[DL輪読会]Wavenet a generative model for raw audio
 
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...
感覚運動随伴性、予測符号化、そして自由エネルギー原理 (Sensory-Motor Contingency, Predictive Coding and ...
 
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)[論文紹介] LSTM (LONG SHORT-TERM MEMORY)
[論文紹介] LSTM (LONG SHORT-TERM MEMORY)
 

More from Kenta Hattori

オブジェクト指向入門2
オブジェクト指向入門2オブジェクト指向入門2
オブジェクト指向入門2Kenta Hattori
 
オブジェクト指向入門1
オブジェクト指向入門1オブジェクト指向入門1
オブジェクト指向入門1Kenta Hattori
 
オブジェクト指向入門10
オブジェクト指向入門10オブジェクト指向入門10
オブジェクト指向入門10Kenta Hattori
 
オブジェクト指向入門9
オブジェクト指向入門9オブジェクト指向入門9
オブジェクト指向入門9Kenta Hattori
 
オブジェクト指向入門8
オブジェクト指向入門8オブジェクト指向入門8
オブジェクト指向入門8Kenta Hattori
 
オブジェクト指向入門7
オブジェクト指向入門7オブジェクト指向入門7
オブジェクト指向入門7Kenta Hattori
 
オブジェクト指向入門6
オブジェクト指向入門6オブジェクト指向入門6
オブジェクト指向入門6Kenta Hattori
 
オブジェクト指向入門5
オブジェクト指向入門5オブジェクト指向入門5
オブジェクト指向入門5Kenta Hattori
 
オブジェクト指向入門4
オブジェクト指向入門4オブジェクト指向入門4
オブジェクト指向入門4Kenta Hattori
 
オブジェクト指向入門3
オブジェクト指向入門3オブジェクト指向入門3
オブジェクト指向入門3Kenta Hattori
 
ソフトウェア・テスト入門2
ソフトウェア・テスト入門2ソフトウェア・テスト入門2
ソフトウェア・テスト入門2Kenta Hattori
 
ソフトウェア・テスト入門1
ソフトウェア・テスト入門1ソフトウェア・テスト入門1
ソフトウェア・テスト入門1Kenta Hattori
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8Kenta Hattori
 
ソフトウェア・テスト入門7
ソフトウェア・テスト入門7ソフトウェア・テスト入門7
ソフトウェア・テスト入門7Kenta Hattori
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6Kenta Hattori
 
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5ソフトウェア・テスト入門5
ソフトウェア・テスト入門5Kenta Hattori
 
ソフトウェア・テスト入門4
ソフトウェア・テスト入門4ソフトウェア・テスト入門4
ソフトウェア・テスト入門4Kenta Hattori
 
ソフトウェア・テスト入門3
ソフトウェア・テスト入門3ソフトウェア・テスト入門3
ソフトウェア・テスト入門3Kenta Hattori
 
アルゴリズムとデータ構造15
アルゴリズムとデータ構造15アルゴリズムとデータ構造15
アルゴリズムとデータ構造15Kenta Hattori
 
アルゴリズムとデータ構造14
アルゴリズムとデータ構造14アルゴリズムとデータ構造14
アルゴリズムとデータ構造14Kenta Hattori
 

More from Kenta Hattori (20)

オブジェクト指向入門2
オブジェクト指向入門2オブジェクト指向入門2
オブジェクト指向入門2
 
オブジェクト指向入門1
オブジェクト指向入門1オブジェクト指向入門1
オブジェクト指向入門1
 
オブジェクト指向入門10
オブジェクト指向入門10オブジェクト指向入門10
オブジェクト指向入門10
 
オブジェクト指向入門9
オブジェクト指向入門9オブジェクト指向入門9
オブジェクト指向入門9
 
オブジェクト指向入門8
オブジェクト指向入門8オブジェクト指向入門8
オブジェクト指向入門8
 
オブジェクト指向入門7
オブジェクト指向入門7オブジェクト指向入門7
オブジェクト指向入門7
 
オブジェクト指向入門6
オブジェクト指向入門6オブジェクト指向入門6
オブジェクト指向入門6
 
オブジェクト指向入門5
オブジェクト指向入門5オブジェクト指向入門5
オブジェクト指向入門5
 
オブジェクト指向入門4
オブジェクト指向入門4オブジェクト指向入門4
オブジェクト指向入門4
 
オブジェクト指向入門3
オブジェクト指向入門3オブジェクト指向入門3
オブジェクト指向入門3
 
ソフトウェア・テスト入門2
ソフトウェア・テスト入門2ソフトウェア・テスト入門2
ソフトウェア・テスト入門2
 
ソフトウェア・テスト入門1
ソフトウェア・テスト入門1ソフトウェア・テスト入門1
ソフトウェア・テスト入門1
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
 
ソフトウェア・テスト入門7
ソフトウェア・テスト入門7ソフトウェア・テスト入門7
ソフトウェア・テスト入門7
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6
 
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5ソフトウェア・テスト入門5
ソフトウェア・テスト入門5
 
ソフトウェア・テスト入門4
ソフトウェア・テスト入門4ソフトウェア・テスト入門4
ソフトウェア・テスト入門4
 
ソフトウェア・テスト入門3
ソフトウェア・テスト入門3ソフトウェア・テスト入門3
ソフトウェア・テスト入門3
 
アルゴリズムとデータ構造15
アルゴリズムとデータ構造15アルゴリズムとデータ構造15
アルゴリズムとデータ構造15
 
アルゴリズムとデータ構造14
アルゴリズムとデータ構造14アルゴリズムとデータ構造14
アルゴリズムとデータ構造14
 

Recently uploaded

リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 

Recently uploaded (20)

リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 

アルゴリズムとデータ構造5

  • 2. 2011/4/19 アルゴリズムとデータ構造 5 2 概要  データ構造としてのツリーの基礎的な事柄を 説明する  木を応用したアルゴリズムは別途説明する.
  • 3. 2011/4/19 アルゴリズムとデータ構造 5 3 Tree (木)構造  以下に示すようなデータ構造  循環構造を含まないことに注意  一般的には右下図の根付き木の   ことを木と呼ぶことが多い root (根) edge (辺) node (節点) rooted tree (根付き木)free tree (自由木)
  • 4. 2011/4/19 アルゴリズムとデータ構造 5 4 Tree に関する用語  親( parent )  辺の上側(根に近い方)のノード  子( child )  辺の下側のノード  祖先( ancestor )  あるノードからみた親,親の親,親の親の親,・・・など  子孫( descendant )  あるノードからみた子,子の子,・・・など  葉( leaf )  子を持たないノード  内部ノード( internal node )  子を持つノード  深さ( depth )  根からあるノードに至るまでに通る辺の数  高さ( height )  根からもっとも遠いノードの深さ
  • 5. 2011/4/19 アルゴリズムとデータ構造 5 5 確認問題  右の木について  ノード d の親は?  ノード d の子は?  ノード e の祖先は?  ノード b の子孫は?  葉を全て列挙せよ  ノード f の深さは?  高さは? a b c d g he f root (根) li j k
  • 6. 2011/4/19 アルゴリズムとデータ構造 5 6 実世界における木構造の例  会社の組織構造  生物の分類  問題:他にも木構造の例を挙げよ 社長 重役 重役 部長 部長 部長 部長 部長 課長 課長 課長 ・・・ 生物 植物界 動物界 無脊椎動物 脊椎動物・・・
  • 7. 2011/4/19 アルゴリズムとデータ構造 5 7 木のバリエーション  順序木( ordered tree )  1つの頂点が複数の子を持つとき,これらの子の 順序に意味があるような木  例:人間の親族関係では,長男と次男の順序に意味があ るから,順序木とみなせる  2分木( binary tree )  各節点の子の数がたかだか2であるような順序木  もっともよく使われる木
  • 8. 2011/4/19 アルゴリズムとデータ構造 5 8 2分木の表現方法  2分木 T  根となるノードへのポインタ を保持する root フィールド を持つ  空の木は T.root = None とな る  2 分木のノードは,要素を保 持するフィード elem に加え て,左の子と右の子のそれぞ れのノードを示す left と right の2つのフィールドを持つ  子がいない場合, None とな る  親ノードへのポインタを含め る場合もある T.root left elem right
  • 9. 2011/4/19 アルゴリズムとデータ構造 5 9 一般の木の表現方法  各ノードは,子のリストの先頭を指すポインタと自 分が属するリストの次の要素を指すポインタを保持 するフィールドを持つ. T.root child sibling
  • 10. 2011/4/19 アルゴリズムとデータ構造 5 10 木の走査( traversal )  行きがけ順走査( pre-order traversal )  親の節点を調べてから子供を順に調べていく  間順走査( in-order traversal )  最初の子を調べてから,親を調べ,その後で残り の子を順に調べる  もっぱら2分木に対して使われる  帰りがけ順走査( post-order traversal )  子供を全部調べてから親を調べる
  • 11. 2011/4/19 アルゴリズムとデータ構造 5 11 練習問題  右の二分木について 各要素( elem )の文字を  行きがけ順に表示  間順に表示  帰りがけ順に表示 した場合,それぞれどのよ うな結果になるか? T.root left elem a right b c d e f g h
  • 12. 2011/4/19 アルゴリズムとデータ構造 5 12 2分木の走査  行きがけ順走査  再帰呼び出しを使う def preorder(n): if n != None: # do_somthing(n.elem) preorder(n.left) preorder(n.right)  最初の呼び出しには木の根をパラメータとして渡す >>> preorder(T.root)
  • 13. 2011/4/19 アルゴリズムとデータ構造 5 13 練習問題  スライド「一般の木の表現方法」で示した木 に対する行きがけ順走査を書け
  • 14. 2011/4/19 アルゴリズムとデータ構造 5 14 解答例  補足資料( lecture5.py )参照
  • 15. 2011/4/19 アルゴリズムとデータ構造 5 15 2分木の走査(2)  間順走査 def inorder(n): if n != None: inorder (n.left) # do_something(n.elem) inorder(n.right)  帰りがけ順走査 def postorder (n): if n != None: postorder(n.left) postorder(n.right) # do_something (n.elem)
  • 16. 2011/4/19 アルゴリズムとデータ構造 5 16 その他の手続き  ノードの深さを求める  # parent フィールド付きのノードの場合 def depth(n): d = 0 while n.parent != None: d = d + 1 n = n.parent return d  木の高さを求める def tree_height(n): if n == None: return -1 return 1 + max(tree_height(n.left), tree_height(n.right))
  • 17. 2011/4/19 アルゴリズムとデータ構造 5 17 練習問題  parent フィールドなしの木ノード作成を以下のよう に定義する def tnode(x, l, r): return record({‘elem’: x, ‘left’: l, ‘right’: r})  2分木は以下のように生成できる root = tnode(1,tnode(2,tnode(3,None,None), tnode(4,None,None)), tnode(5,None, tnode(6,None, None)))  上記によって生成される2分木を図示せよ  ノードの値を print するように preorder, inorder,   postorder をそれぞれ定義し,実際に確認せよ
  • 18. 2011/4/19 アルゴリズムとデータ構造 5 18 解答例  補足資料( lecture5.py )参照