Submit Search
Upload
勉強会資料 データ構造とアルゴリズム
•
5 likes
•
2,467 views
Takao Sumitomo
Follow
データ構造とアルゴリズムの基本的な考え方を解説しています。
Read less
Read more
Education
Report
Share
Report
Share
1 of 27
Download now
Download to read offline
Recommended
アルゴリズムとデータ構造4
アルゴリズムとデータ構造4
Kenta Hattori
Java班講義資料第3回
Java班講義資料第3回
XMLProJ2014
javaによるアルゴリズム入門
javaによるアルゴリズム入門
RabbitFoot141 -kentsu141
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
Yusuke Furuta
僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo
Recommended
アルゴリズムとデータ構造4
アルゴリズムとデータ構造4
Kenta Hattori
Java班講義資料第3回
Java班講義資料第3回
XMLProJ2014
javaによるアルゴリズム入門
javaによるアルゴリズム入門
RabbitFoot141 -kentsu141
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
エンジニア勉強会 エスキュービズム
基本情報技術者試験 勉強会
基本情報技術者試験 勉強会
Yusuke Furuta
僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Takao Sumitomo
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Takao Sumitomo
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
Takao Sumitomo
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Takao Sumitomo
Wantedlyのテスト事情
Wantedlyのテスト事情
Takao Sumitomo
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Takao Sumitomo
Uml速習会
Uml速習会
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
Takao Sumitomo
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
Takao Sumitomo
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
勉強会資料 Uml概要
勉強会資料 Uml概要
Takao Sumitomo
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Takao Sumitomo
HTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
Takao Sumitomo
フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
Takao Sumitomo
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
Kochi Eng Camp
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
More Related Content
More from Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Takao Sumitomo
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Takao Sumitomo
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
Takao Sumitomo
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Takao Sumitomo
Wantedlyのテスト事情
Wantedlyのテスト事情
Takao Sumitomo
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Takao Sumitomo
Uml速習会
Uml速習会
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
Takao Sumitomo
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
Takao Sumitomo
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
勉強会資料 Uml概要
勉強会資料 Uml概要
Takao Sumitomo
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Takao Sumitomo
HTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
Takao Sumitomo
フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
Takao Sumitomo
More from Takao Sumitomo
(20)
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Wantedlyのテスト事情
Wantedlyのテスト事情
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
Uml速習会
Uml速習会
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
勉強会資料 Uml概要
勉強会資料 Uml概要
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
HTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
Recently uploaded
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
Kochi Eng Camp
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
Tokyo Institute of Technology
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
Kochi Eng Camp
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
Recently uploaded
(8)
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
勉強会資料 データ構造とアルゴリズム
1.
データ構造とアルゴリズム 住友 孝郎
2.
はじめに データ構造 集合(セット) リスト 連想配列(マップ) 計算量について
3.
目次 データ構造 実装例 考察
4.
1.データ構造 集合(セット) リスト 連想配列(マップ)
5.
1-1.集合(セット) ITATI CAT RACCOON 特徴 ・順序を持たないデータの集まり ・同一のデータは1つしか含まない 用途 ・特定のデータが含まれるかを判断する FOX CAT CATは含まれていますか? はい、含まれています
6.
1-2.リスト 特徴 ・順序を持つデータの集まり ・同一のデータを複数含められる 用途 ・複数のデータを順番に格納する ・特定の番号のデータを取り出す FOXCATRACCOON ITATICATFOX 0 1 2
3 4 5 3番目のものを下さい はい、これです RACCOON
7.
1-3.連想配列(マップ) 特徴 ・添え字に数値以外のデータ型(文字列型等)が使用できる配列 用途 ・ある値をキーに紐付くデータを取り出す RACCOON ITATI CATFOX キツネ ネコ イタチ
アライグマ ネコを下さい はい、これです CAT
8.
2.実装例 前提知識 ハッシュ値 データ構造 集合(セット) リスト 連想配列(マップ)
9.
2-1.ハッシュ値 ハッシュ値とは あるデータが与えられた場合に算出される、 そのデータを代表する数値 以下の条件を満たせば計算方法は自由 条件 同じデータのハッシュ値は常に同じであること 衝突は発生しても構わない (ハッシュ値が同じでも異なるデータの場合がある)
10.
2-1-1.ハッシュ値の例 文字数をハッシュ値として扱う場合 文字列 ハッシュ値 キツネ 3 ネコ
2 イタチ 3 アライグマ 5 キツネとイタチが衝突している
11.
2-1-2.ハッシュ値の例 文字に割り当てる数値 文字 数値 文字
数値 文字 数値 文字 数値 ア 1 ナ 21 ル 41 ド 61 イ 2 ニ 22 レ 42 バ 62 ウ 3 ヌ 23 ロ 43 ビ 63 エ 4 ネ 24 ワ 44 ブ 64 オ 5 ノ 25 ヲ 45 ベ 65 カ 6 ハ 26 ン 46 ボ 66 キ 7 ヒ 27 ガ 47 パ 67 ク 8 フ 28 ギ 48 ピ 68 ケ 9 ヘ 29 グ 49 プ 69 コ 10 ホ 30 ゲ 50 ペ 70 サ 11 マ 31 ゴ 51 ポ 71 シ 12 ミ 32 ザ 52 ァ 72 ス 13 ム 33 ジ 53 ィ 73 セ 14 メ 34 ズ 54 ゥ 74 ソ 15 ノ 35 ゼ 55 ェ 75 タ 16 ヤ 36 ゾ 56 ォ 76 チ 17 ユ 37 ダ 57 ャ 77 ツ 18 ヨ 38 ヂ 58 ュ 78 テ 19 ラ 39 ヅ 59 ョ 79 ト 20 リ 40 デ 60 文字列 計算 ハッシュ値 キツネ 7+18+24 49 ネコ 24+10 34 イタチ 2+16+17 35 アライグマ 1+39+2+49+31 94 文字ごとに数値を割り当て、 その総和をハッシュ値として扱う例
12.
2-1-3.ハッシュ値の例 Javaの実装 文字列をsとし、文字数をnとするとき、 ハッシュ値 = s[0]*31^(n-1)
+ s[1]*31^(n-2) + ... + s[n-1] =∑ i =0 n−1 s[i ]×31 n−i −1
13.
2-2-1.リスト 配列を用いた実装 FOX ITATICAT RACCOON
FOXCAT 連続したメモリの領域 メリット ・アクセスが高速 デメリット ・データの追加と削除のオーバーヘッドが大きい ・連続したメモリの領域を必要とする
14.
2-2-2.リスト 連結リストを用いた実装 FOX ITATI CAT
RACCOON FOXCAT メリット: ・データの追加と削除が容易 ・メモリの領域が連続している必要がない デメリット ・アクセスが低速 ↑先頭
15.
2-3-1.集合(セット) 二分探索木を用いた実装 CAT FOX ITATI RABBIT 小さい 大きい メリット ・データ構造内に順序性が保持されている デメリット ・データの追加と削除のオーバーヘッドが大きい RACCOON ITATI CAT FOX RABBIT RACCOON
16.
2-3-2.集合(セット) ハッシュ値を用いた実装 メリット ・マップが十分に大きい場合、計算時間がO(1)である デメリット ・ハッシュ関数の実装が必須 ・マップがある程度大きくなくてはならずメモリを食う FOX ITATICATRACCOONRABBIT 0 1 2
3 4 5 配列 ハッシュ関数を、[文字数%6]とした例
17.
2-4-1.連想配列(マップ) アライグマ イタチ キツネ ネコ ネコ イタチ キツネ アライグマ 小さい 大きい 二分探索木を用いた実装 FOXITATI CATRACCOON
18.
2-4-2.連想配列(マップ) ハッシュ値を用いた実装 イタチ アライグマキツネ 0 1 2
3 4 5 ハッシュ関数を、[文字数%6]とした例 ネコ FOXITATICAT RACCOON
19.
3.計算量 配列の探索 ハッシュマップの探索 2分探索木の探索
20.
3-1.配列の探索 配列の探索の例(線形探索) 配列から特定の要素を探する場合、先頭から順番に見ていくので 平均すると 回の比較が行われる。 個数 2 FOX ITATICAT RACCOON
FOXCAT
21.
3-2.ハッシュマップの探索 ハッシュマップの例 イタチ アライグマキツネ 0 1 2
3 4 5 ネコという名前から、CATの実体を取得したい場合 ネコ FOXITATICAT RACCOON ネコ 2 ハッシュ値を算出 ハッシュ値が衝突しない限りは常に一定時間で目的の要素を見つける ことができる
22.
3-3-1.二分探索木 完全二分木 要素数:15 最大4回の比較 完全二分木 要素数:7 最大3回の比較完全二分木 要素数:3 最大2回の比較 完全二分探索木の例 15 10 18 21 1 25
39 38 55 64 6 4 8 23 14 34 38 63 57 69 75 72 84 93 51 要素数がn個の最大計算量 = log2n(切り上げ)
23.
3-3-2.二分探索木 二分木 要素数:5 最大4回の比較 63 75 72 51 14 完全二分木で無い場合は大きくなる 完全でない二分探索木の例
24.
3-4-1.計算量のグラフ 配列の探索(線形探索) y =n Θ n 完全二分探索木 y
=log 2 n Θ log 2 n ハッシュマップ y =1 Θ 1 計算量のグラフ
25.
3-4-2.計算量のグラフ 配列の探索(線形探索) y =n 2 Θ n 2 完全二分探索木 y
=n× log 2 n Θ nlog 2 n ハッシュマップ y =n Θ n n×nのデータを紐づける場合の計算量
26.
4.まとめ データ構造の選択によっては計算量を抑えることができる 状況に応じて適切なデータ構造を選択すること 計算量が跳ね上がるものは一定量を超すと 突然動かなくなるので極力避けること 計算量が大きい場合は必ず設計時に見積もりを取り、 運用上の注意に挙げること
27.
データ構造とアルゴリズム ご静聴ありがとうございました 企画・製作 住友
Download now