Suche senden
Hochladen
2分木の演習問題[アルゴリズムとデータ構造]
•
0 gefällt mir
•
1,891 views
Hagihara Ryosuke
Folgen
アルゴリズムとデータ構造の授業で使った発表資料です。 2分木にまつわる課題の解答および解説
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 75
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Sparse pca via bipartite matching
Sparse pca via bipartite matching
Kimikazu Kato
プログラマのための線形代数再入門
プログラマのための線形代数再入門
Taketo Sano
津山市オープンデータの活用 ー「津山市財政見守り隊」の作成と津山市オープンデータの課題と展望ー
津山市オープンデータの活用 ー「津山市財政見守り隊」の作成と津山市オープンデータの課題と展望ー
Hagihara Ryosuke
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Sanae Yamashita
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
Sanae Yamashita
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
Sanae Yamashita
高専の今
高専の今
Hagihara Ryosuke
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Taketo Sano
Empfohlen
Sparse pca via bipartite matching
Sparse pca via bipartite matching
Kimikazu Kato
プログラマのための線形代数再入門
プログラマのための線形代数再入門
Taketo Sano
津山市オープンデータの活用 ー「津山市財政見守り隊」の作成と津山市オープンデータの課題と展望ー
津山市オープンデータの活用 ー「津山市財政見守り隊」の作成と津山市オープンデータの課題と展望ー
Hagihara Ryosuke
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Sanae Yamashita
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
Sanae Yamashita
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
Sanae Yamashita
高専の今
高専の今
Hagihara Ryosuke
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Taketo Sano
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
Operations research yonezawa_no2
Operations research yonezawa_no2
ssuser0bebd2
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
Joe Suzuki
算数で体感する高度数学
算数で体感する高度数学
Arithmer Inc.
JavaScript難読化読経
JavaScript難読化読経
Yosuke HASEGAWA
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
20111107 cvim(shirasy)
20111107 cvim(shirasy)
Yoichi Shirasawa
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Kazunori Jo
Operations research yonezawa_no1
Operations research yonezawa_no1
ssuser0bebd2
20170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.2
Kyohei Unno
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2
Takayuki Goto
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
Tatsuwo Moriyama
Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4
KazuhiroSato8
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
Prunus 1350
Tokyo r27
Tokyo r27
Takashi Minoda
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
Hagihara Ryosuke
2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)
Hagihara Ryosuke
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Hagihara Ryosuke
情報システム系
情報システム系
Hagihara Ryosuke
高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり
Hagihara Ryosuke
Weitere ähnliche Inhalte
Ähnlich wie 2分木の演習問題[アルゴリズムとデータ構造]
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
Operations research yonezawa_no2
Operations research yonezawa_no2
ssuser0bebd2
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
Joe Suzuki
算数で体感する高度数学
算数で体感する高度数学
Arithmer Inc.
JavaScript難読化読経
JavaScript難読化読経
Yosuke HASEGAWA
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima
20111107 cvim(shirasy)
20111107 cvim(shirasy)
Yoichi Shirasawa
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Kazunori Jo
Operations research yonezawa_no1
Operations research yonezawa_no1
ssuser0bebd2
20170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.2
Kyohei Unno
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Hiroshi Yamashita
Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2
Takayuki Goto
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
Tatsuwo Moriyama
Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4
KazuhiroSato8
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
Prunus 1350
Tokyo r27
Tokyo r27
Takashi Minoda
Ähnlich wie 2分木の演習問題[アルゴリズムとデータ構造]
(17)
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
Operations research yonezawa_no2
Operations research yonezawa_no2
公開鍵暗号(3): 離散対数問題
公開鍵暗号(3): 離散対数問題
算数で体感する高度数学
算数で体感する高度数学
JavaScript難読化読経
JavaScript難読化読経
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
20111107 cvim(shirasy)
20111107 cvim(shirasy)
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Operations research yonezawa_no1
Operations research yonezawa_no1
20170408 cv geometric_estimation_1-2.2
20170408 cv geometric_estimation_1-2.2
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
充足可能性問題のいろいろ
充足可能性問題のいろいろ
Osaka.Stan #3 Chapter 5-2
Osaka.Stan #3 Chapter 5-2
サムライ広告代理店 詳細資料 2018年4月版
サムライ広告代理店 詳細資料 2018年4月版
Casual learning machine learning with_excel_no4
Casual learning machine learning with_excel_no4
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
Tokyo r27
Tokyo r27
Mehr von Hagihara Ryosuke
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
Hagihara Ryosuke
2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)
Hagihara Ryosuke
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Hagihara Ryosuke
情報システム系
情報システム系
Hagihara Ryosuke
高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり
Hagihara Ryosuke
てくにゃんってどうよ
てくにゃんってどうよ
Hagihara Ryosuke
Grouper -集まりを つながりに-
Grouper -集まりを つながりに-
Hagihara Ryosuke
サイコロの並べ方
サイコロの並べ方
Hagihara Ryosuke
Mehr von Hagihara Ryosuke
(8)
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
1人オブジェクト指向勉強会 第1章 ソフトウェアの品質
2016年度 寮生活動報告会(ネットワーク委員会)
2016年度 寮生活動報告会(ネットワーク委員会)
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
Twitterを用いた効率的なメモ・スケジュール管理のためのシステムの開発
情報システム系
情報システム系
高専カンファレンス in 津山2 開催までの道のり
高専カンファレンス in 津山2 開催までの道のり
てくにゃんってどうよ
てくにゃんってどうよ
Grouper -集まりを つながりに-
Grouper -集まりを つながりに-
サイコロの並べ方
サイコロの並べ方
Kürzlich hochgeladen
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
新人研修のまとめ 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.pptx
Atomu Hidaka
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Kürzlich hochgeladen
(9)
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
新人研修のまとめ 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.pptx
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
2分木の演習問題[アルゴリズムとデータ構造]
1.
レポート7 〜2分⽊〜 2016.10.24 アルゴリズムとデータ構造 @清⽔寺(2016.05.22)
2.
課題1 X = A
+ B (C + D) を2分⽊で表現せよ。 さらに,この2分⽊をpost order で巡回した時 逆ポーランド記法になっていることを⽰せ @KEK(2016.09.04)
3.
X = A+B(C+D)を2分⽊で表現 A B(C+D) +
4.
X = A+B(C+D)を2分⽊で表現 A B(C+D) +
A B(C+D) +
5.
X = A+B(C+D)を2分⽊で表現 B
(C+D)× A + A B(C+D) +
6.
X = A+B(C+D)を2分⽊で表現 B
(C+D)× A + A + B (C+D) ×
7.
X = A+B(C+D)を2分⽊で表現 B
× A + A + B (C+D) × C + D
8.
X = A+B(C+D)を2分⽊で表現 B
× A + A + B × C + D C + D
9.
Post orderで巡回 A + B × C + D
10.
Post orderで巡回 A + B × C + D{A, B,
C, D, +, ×, +}
11.
逆ポーランド記法? 演算⼦を,被演算⼦の後ろに書く⽅式 後置記法とも呼ぶ ⽇本語に近い表現 中置記法: 1+2 後置記法: 1
2 + (「1と2を⾜す」) 前置記法: + 1 2 ※Lispはこんな感じの⽂法 (* 1 (+ 2 3))
12.
{A, B, C,
D, +, ×, +} 逆ポーランド記法をプログラムで使うときは スタックを考える場合もあるので, それで検算してみる B ×A +C +D
13.
{A, B, C,
D, +, ×, +} 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする BA C +D × +
14.
{A, B, C,
D, +, ×, +} BA (C+D) × + 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする
15.
{A, B, C,
D, +, ×, +} BA (C+D) × + 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする
16.
{A, B, C,
D, +, ×, +} A +B(C+D) 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする
17.
{A, B, C,
D, +, ×, +} A +B(C+D) 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする
18.
{A, B, C,
D, +, ×, +} A+B(C+D) 演算⼦が⼊ったら, その前の2つの値の演算を⾏ってpushする
19.
課題2 {7, 4, 2,
1, 9, 10, 5, 3, 8, 6}で並んだデータを その並んでいる順番に2 分探索⽊を作成せよ。 @春夏秋冬(渋⾕)(2016.08.30)
20.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7
21.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7
22.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4
23.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4
24.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2
25.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2
26.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1
27.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1
28.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9
29.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9
30.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 10
31.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 10
32.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 10 5
33.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105
34.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3
35.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3
36.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3 8
37.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3 8
38.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3 8 6
39.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3 8 6
40.
{7, 4, 2,
1, 9, 10, 5, 3, 8, 6} 7 4 2 1 9 105 3 8 6
41.
課題3 課題2で作成した⽊について, 根 (root), 4の親,5
の⼦,9 の兄弟,⽊の⾼さを答えよ。 @コメダ珈琲(2016.04.19)
42.
根(root) 7 4 2 1 9 105 3 8 6
43.
根(root) 7 4 2 1 9 105 3 8 6 頂点が「根」(root)
44.
4の親 7 4 2 1 9 105 3 8 6
45.
4の親 7 4 2 1 9 105 3 8 6 上位に位置するのが親
46.
5の⼦ 7 4 2 1 9 105 3 8 6
47.
5の⼦ 7 4 2 1 9 105 3 8 6 下位に位置するのが⼦
48.
9の兄弟 7 4 2 1 9 105 3 8 6
49.
9の兄弟 7 4 2 1 9 105 3 8 6 同位に位置するのが兄弟
50.
⽊の⾼さ 根から⼀番遠い葉までの枝の数
51.
根(root) 7 4 2 1 9 105 3 8 6 根から ⼀番遠い葉 までの
52.
根(root) 7 4 2 1 9 105 3 8 6 根から ⼀番遠い葉 までの 枝の数 = 3
53.
課題4 2 で作成した⽊を preoder, postorder,
inorder, level order で巡回したときに 巡ったノードを順番にそれぞれ答えよ @おかげ横町(伊勢)(2016.10.10)
54.
pre-order (⾏きがけ順) 7 4 2 1 9 105 3 8 6 根から順に, 左のノード→右のノードを 上から順⾒ていく {7, 4,
2, 1, 3, 5, 6, 9, 8, 10}
55.
post-order (帰りがけ順) 7 4 2 1 9 105 3 8 6 ⼀番左の葉から 葉に近い⽅から順に ⾛査していく {1, 3,
2, 6, 5, 4, 8, 10, 9, 7}
56.
in-order (通りがけ順) 7 4 2 1 9 105 3 8 6 ⼀番左の葉から 右に辿りながら ⾏き着いた順に⾛査する {1, 2,
3, 4, 5, 6, 7, 8, 9, 10}
57.
level-order (レベル順) 7 4 2 1 9 105 3 8 6 根から順に 同じ深さのノードを探索していく {7, 4,
9, 2, 5, 8, 10, 1, 3, 6}
58.
課題5 2 で作成した 2
分探索⽊から要素 4 を削除した。 このとき,その位置に別の要素を移動するだけで 2 分探索⽊を再構成したい。 どの要素を移動すればよいか答えよ。 @JR博多駅シティ(2016.03.15)
59.
元の⽊から要素4を削除 7 4 2 1 9 105 3 8 6
60.
元の⽊から要素4を削除 7 2 1 9 105 3 8 6
61.
持っていっても⼤丈夫そうな要素 7 2 1 9 105 3 8 6
62.
持っていっても⼤丈夫そうな要素 7 2 1 9 105 3 8 6 削除したノードの 左側の⽊(?)の最⼤のノードなら 持っていっても⼤丈夫そう
63.
持っていっても⼤丈夫そうな要素 7 2 1 9 105 3 8 6 削除したノードの 左側の⽊(?)の最⼤のノードなら 持っていっても⼤丈夫そう ⇒場所を移しても他に影響なし
64.
課題6 {8, 6, 9,
10, 7, 4, 2, 5, 1, 3} で並んでいる順番に2分探索⽊を作成したが, その⽊はバランスが悪いものであった。 作成された⽊を回転操作することでバランスの良い⽊を作れ。 @おかげ横町(伊勢)(2016.10.10)
65.
{8, 6, 9,
10, 7, 4, 2, 5, 1, 3} 8 6 4 2 9 107 5 1 3
66.
{8, 6, 9,
10, 7, 4, 2, 5, 1, 3} 8 6 4 2 9 107 5 1 3 左に偏っていて, 右のノードが少ない ⇒ 右に回転してみる
67.
{8, 6, 9,
10, 7, 4, 2, 5, 1, 3} 8 6 4 2 9 107 5 1 3
68.
{8, 6, 9,
10, 7, 4, 2, 5, 1, 3} 8 6 4 2 9 10 75 1 3 ノードの構造を 変えないように! (8, 9, 10のところとか)
69.
{8, 6, 9,
10, 7, 4, 2, 5, 1, 3} 8 6 4 2 9 10 75 1 3
70.
課題7 N個のデータで構成される2分探索⽊では ⽊の深さが log2N であることが理想的であるとされる。 なぜlog2Nなのか答えよ。 @JAXA(筑波)(2016.09.04)
71.
理想的な⽊(完全⽊) 抜け落ちなく,綺麗に三⾓形を描いている2分⽊が完全⽊ (全ての葉が同じ「深さ(=2)」を持つ2分⽊)
72.
⽊の深さとノードの数の関係 深さ(d) ノードの数(N) 0 1 1
3 2 7 3 15
73.
⽊の深さとノードの数の関係 深さ(d) ノードの数(N) 0 1 1
3 2 7 3 15 ノードの数をN, 深さをdとする 𝑁 = 2$%& − 1
74.
式変形しまくる ここでNが⼗分⼤きいとすると,log2(N+1) ≈ log2N log2N -1
≈ log2N に近似してもよい(∵log2N>>1) 𝑁 = 2$%& − 1 𝑑 ≈ log/ 𝑁 − 1 𝑑 ≈ log/ 𝑁 log/ 𝑁 + 1 = 𝑑 + 1
75.
したがって… N個のデータで構成される2分探索⽊では ⽊の深さdがlog2Nであることが理想的である 𝑑 ≈ log/
𝑁
Jetzt herunterladen