SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Downloaden Sie, um offline zu lesen
レポート7 〜2分⽊〜
2016.10.24 アルゴリズムとデータ構造
@清⽔寺(2016.05.22)
課題1
X = A + B (C + D) を2分⽊で表現せよ。
さらに,この2分⽊をpost order で巡回した時
逆ポーランド記法になっていることを⽰せ
@KEK(2016.09.04)
X = A+B(C+D)を2分⽊で表現
A
B(C+D)
+
X = A+B(C+D)を2分⽊で表現
A
B(C+D)
+ A B(C+D)
+
X = A+B(C+D)を2分⽊で表現
B (C+D)×
A
+ A B(C+D)
+
X = A+B(C+D)を2分⽊で表現
B (C+D)×
A
+ A
+
B (C+D)
×
X = A+B(C+D)を2分⽊で表現
B ×
A
+ A
+
B (C+D)
×
C + D
X = A+B(C+D)を2分⽊で表現
B ×
A
+ A
+
B
×
C + D C
+
D
Post orderで巡回
A
+
B
×
C
+
D
Post orderで巡回
A
+
B
×
C
+
D{A, B, C, D, +, ×, +}
逆ポーランド記法?
演算⼦を,被演算⼦の後ろに書く⽅式
後置記法とも呼ぶ
⽇本語に近い表現
中置記法: 1+2
後置記法: 1 2 + (「1と2を⾜す」)
前置記法: + 1 2 ※Lispはこんな感じの⽂法 (* 1 (+ 2 3))
{A, B, C, D, +, ×, +}
逆ポーランド記法をプログラムで使うときは
スタックを考える場合もあるので,
それで検算してみる
B ×A +C +D
{A, B, C, D, +, ×, +}
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
BA C +D × +
{A, B, C, D, +, ×, +}
BA (C+D) × +
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
{A, B, C, D, +, ×, +}
BA (C+D) × +
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
{A, B, C, D, +, ×, +}
A +B(C+D)
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
{A, B, C, D, +, ×, +}
A +B(C+D)
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
{A, B, C, D, +, ×, +}
A+B(C+D)
演算⼦が⼊ったら,
その前の2つの値の演算を⾏ってpushする
課題2
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}で並んだデータを
その並んでいる順番に2 分探索⽊を作成せよ。
@春夏秋冬(渋⾕)(2016.08.30)
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
10
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
10
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
10
5
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
8
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
8
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
8
6
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
8
6
{7, 4, 2, 1, 9, 10, 5, 3, 8, 6}
7
4
2
1
9
105
3
8
6
課題3
課題2で作成した⽊について,
根 (root), 4の親,5 の⼦,9 の兄弟,⽊の⾼さを答えよ。
@コメダ珈琲(2016.04.19)
根(root)
7
4
2
1
9
105
3
8
6
根(root)
7
4
2
1
9
105
3
8
6
頂点が「根」(root)
4の親
7
4
2
1
9
105
3
8
6
4の親
7
4
2
1
9
105
3
8
6
上位に位置するのが親
5の⼦
7
4
2
1
9
105
3
8
6
5の⼦
7
4
2
1
9
105
3
8
6 下位に位置するのが⼦
9の兄弟
7
4
2
1
9
105
3
8
6
9の兄弟
7
4
2
1
9
105
3
8
6
同位に位置するのが兄弟
⽊の⾼さ
根から⼀番遠い葉までの枝の数
根(root)
7
4
2
1
9
105
3
8
6
根から
⼀番遠い葉
までの
根(root)
7
4
2
1
9
105
3
8
6
根から
⼀番遠い葉
までの
枝の数 = 3
課題4
2 で作成した⽊を
preoder, postorder, inorder, level order で巡回したときに
巡ったノードを順番にそれぞれ答えよ
@おかげ横町(伊勢)(2016.10.10)
pre-order (⾏きがけ順)
7
4
2
1
9
105
3
8
6
根から順に,
左のノード→右のノードを
上から順⾒ていく
{7, 4, 2, 1, 3, 5, 6, 9, 8, 10}
post-order (帰りがけ順)
7
4
2
1
9
105
3
8
6
⼀番左の葉から
葉に近い⽅から順に
⾛査していく
{1, 3, 2, 6, 5, 4, 8, 10, 9, 7}
in-order (通りがけ順)
7
4
2
1
9
105
3
8
6
⼀番左の葉から
右に辿りながら
⾏き着いた順に⾛査する
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
level-order (レベル順)
7
4
2
1
9
105
3
8
6
根から順に
同じ深さのノードを探索していく
{7, 4, 9, 2, 5, 8, 10, 1, 3, 6}
課題5
2 で作成した 2 分探索⽊から要素 4 を削除した。
このとき,その位置に別の要素を移動するだけで 2 分探索⽊を再構成したい。
どの要素を移動すればよいか答えよ。
@JR博多駅シティ(2016.03.15)
元の⽊から要素4を削除
7
4
2
1
9
105
3
8
6
元の⽊から要素4を削除
7
2
1
9
105
3
8
6
持っていっても⼤丈夫そうな要素
7
2
1
9
105
3
8
6
持っていっても⼤丈夫そうな要素
7
2
1
9
105
3
8
6
削除したノードの
左側の⽊(?)の最⼤のノードなら
持っていっても⼤丈夫そう
持っていっても⼤丈夫そうな要素
7
2
1
9
105
3
8
6
削除したノードの
左側の⽊(?)の最⼤のノードなら
持っていっても⼤丈夫そう
⇒場所を移しても他に影響なし
課題6
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3} で並んでいる順番に2分探索⽊を作成したが,
その⽊はバランスが悪いものであった。
作成された⽊を回転操作することでバランスの良い⽊を作れ。
@おかげ横町(伊勢)(2016.10.10)
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3}
8
6
4
2
9
107
5
1 3
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3}
8
6
4
2
9
107
5
1 3
左に偏っていて,
右のノードが少ない
⇒ 右に回転してみる
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3}
8
6
4
2
9
107
5
1 3
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3}
8
6
4
2 9
10
75
1 3
ノードの構造を
変えないように!
(8, 9, 10のところとか)
{8, 6, 9, 10, 7, 4, 2, 5, 1, 3}
8
6
4
2 9
10
75
1 3
課題7
N個のデータで構成される2分探索⽊では
⽊の深さが log2N であることが理想的であるとされる。
なぜlog2Nなのか答えよ。
@JAXA(筑波)(2016.09.04)
理想的な⽊(完全⽊)
抜け落ちなく,綺麗に三⾓形を描いている2分⽊が完全⽊
(全ての葉が同じ「深さ(=2)」を持つ2分⽊)
⽊の深さとノードの数の関係
深さ(d) ノードの数(N)
0 1
1 3
2 7
3 15
⽊の深さとノードの数の関係
深さ(d) ノードの数(N)
0 1
1 3
2 7
3 15
ノードの数をN, 深さをdとする
𝑁 = 2$%&
− 1
式変形しまくる
ここでNが⼗分⼤きいとすると,log2(N+1) ≈	log2N
log2N -1 ≈	log2N に近似してもよい(∵log2N>>1)
𝑁 = 2$%&
− 1
𝑑 ≈ log/ 𝑁 − 1
𝑑 ≈ log/ 𝑁
log/ 𝑁 + 1 = 𝑑 + 1
したがって…
N個のデータで構成される2分探索⽊では
⽊の深さdがlog2Nであることが理想的である
𝑑 ≈ log/ 𝑁

Weitere ähnliche Inhalte

Ähnlich wie 2分木の演習問題[アルゴリズムとデータ構造]

Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説kuno4n
 
Operations research yonezawa_no2
Operations research yonezawa_no2Operations research yonezawa_no2
Operations research yonezawa_no2ssuser0bebd2
 
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題Joe Suzuki
 
算数で体感する高度数学
算数で体感する高度数学算数で体感する高度数学
算数で体感する高度数学Arithmer Inc.
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経Yosuke HASEGAWA
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化Kazunori Jo
 
Operations research yonezawa_no1
Operations research yonezawa_no1Operations research yonezawa_no1
Operations research yonezawa_no1ssuser0bebd2
 
20170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.220170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.2Kyohei Unno
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法nitoyon
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2Takayuki Goto
 
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版Tatsuwo Moriyama
 
Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4KazuhiroSato8
 
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半Prunus 1350
 

Ähnlich wie 2分木の演習問題[アルゴリズムとデータ構造] (17)

Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
 
Operations research yonezawa_no2
Operations research yonezawa_no2Operations research yonezawa_no2
Operations research yonezawa_no2
 
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
 
算数で体感する高度数学
算数で体感する高度数学算数で体感する高度数学
算数で体感する高度数学
 
JavaScript難読化読経
JavaScript難読化読経JavaScript難読化読経
JavaScript難読化読経
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
20111107 cvim(shirasy)
20111107 cvim(shirasy)20111107 cvim(shirasy)
20111107 cvim(shirasy)
 
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
 
Operations research yonezawa_no1
Operations research yonezawa_no1Operations research yonezawa_no1
Operations research yonezawa_no1
 
20170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.220170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.2
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2
 
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
 
Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4
 
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 

Mehr von Hagihara Ryosuke

1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質Hagihara Ryosuke
 
2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)Hagihara Ryosuke
 
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発Hagihara Ryosuke
 
高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のりHagihara Ryosuke
 
てくにゃんってどうよ
てくにゃんってどうよてくにゃんってどうよ
てくにゃんってどうよHagihara Ryosuke
 
Grouper -集まりを つながりに-
Grouper -集まりを つながりに-Grouper -集まりを つながりに-
Grouper -集まりを つながりに-Hagihara Ryosuke
 

Mehr von Hagihara Ryosuke (8)

1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
 
2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)
 
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
 
情報システム系
情報システム系情報システム系
情報システム系
 
高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり
 
てくにゃんってどうよ
てくにゃんってどうよてくにゃんってどうよ
てくにゃんってどうよ
 
Grouper -集まりを つながりに-
Grouper -集まりを つながりに-Grouper -集まりを つながりに-
Grouper -集まりを つながりに-
 
サイコロの並べ方
サイコロの並べ方サイコロの並べ方
サイコロの並べ方
 

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Kürzlich hochgeladen (9)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

2分木の演習問題[アルゴリズムとデータ構造]