Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Takao Sumitomo
PDF, PPTX
2,481 views
勉強会資料 データ構造とアルゴリズム
データ構造とアルゴリズムの基本的な考え方を解説しています。
Education
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 27
2
/ 27
3
/ 27
4
/ 27
5
/ 27
6
/ 27
7
/ 27
8
/ 27
9
/ 27
10
/ 27
11
/ 27
12
/ 27
13
/ 27
14
/ 27
15
/ 27
16
/ 27
17
/ 27
18
/ 27
19
/ 27
20
/ 27
21
/ 27
22
/ 27
23
/ 27
24
/ 27
25
/ 27
26
/ 27
27
/ 27
More Related Content
PPT
アルゴリズムとデータ構造4
by
Kenta Hattori
PPTX
Java班講義資料第3回
by
XMLProJ2014
ODP
javaによるアルゴリズム入門
by
RabbitFoot141 -kentsu141
PDF
アルゴリズムとデータ構造(初歩)
by
エンジニア勉強会 エスキュービズム
PPTX
基本情報技術者試験 勉強会
by
Yusuke Furuta
PDF
programming camp 2008, introduction of programming, algorithm
by
Hiro Yoshioka
PPT
アルゴリズムとデータ構造1
by
Kenta Hattori
PDF
データ構造と全探索
by
京大 マイコンクラブ
アルゴリズムとデータ構造4
by
Kenta Hattori
Java班講義資料第3回
by
XMLProJ2014
javaによるアルゴリズム入門
by
RabbitFoot141 -kentsu141
アルゴリズムとデータ構造(初歩)
by
エンジニア勉強会 エスキュービズム
基本情報技術者試験 勉強会
by
Yusuke Furuta
programming camp 2008, introduction of programming, algorithm
by
Hiro Yoshioka
アルゴリズムとデータ構造1
by
Kenta Hattori
データ構造と全探索
by
京大 マイコンクラブ
Similar to 勉強会資料 データ構造とアルゴリズム
PPT
アルゴリズムとデータ構造9
by
Kenta Hattori
PPT
アルゴリズムとデータ構造6
by
Kenta Hattori
PPT
アルゴリズムとデータ構造10
by
Kenta Hattori
PPT
アルゴリズムとデータ構造2
by
Kenta Hattori
PDF
プログラミング作法
by
Kota Uchida
PPTX
データとは何か
by
Kenta Suzuki
PPT
アルゴリズムとデータ構造3
by
Kenta Hattori
PDF
Boost Tour 1.50.0 All
by
Akira Takahashi
KEY
Algebraic DP: 動的計画法を書きやすく
by
Hiromi Ishii
PDF
C++0x in programming competition
by
yak1ex
PPT
アルゴリズムとデータ構造15
by
Kenta Hattori
PPT
アルゴリズムとデータ構造11
by
Kenta Hattori
PPT
アルゴリズムとデータ構造8
by
Kenta Hattori
PPTX
よくわかるHopscotch hashing
by
Kumazaki Hiroki
PDF
boost tour 1.48.0 all
by
Akira Takahashi
PPT
アルゴリズムとデータ構造14
by
Kenta Hattori
PDF
[アルゴリズムイントロダクション勉強会] ハッシュ
by
Rei Takami
PDF
アルゴリズムを楽しく!@PiyogrammerConference
by
Kensuke Otsuki
PDF
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
PDF
Data-Intensive Text Processing with MapReduce ch4
by
Sho Shimauchi
アルゴリズムとデータ構造9
by
Kenta Hattori
アルゴリズムとデータ構造6
by
Kenta Hattori
アルゴリズムとデータ構造10
by
Kenta Hattori
アルゴリズムとデータ構造2
by
Kenta Hattori
プログラミング作法
by
Kota Uchida
データとは何か
by
Kenta Suzuki
アルゴリズムとデータ構造3
by
Kenta Hattori
Boost Tour 1.50.0 All
by
Akira Takahashi
Algebraic DP: 動的計画法を書きやすく
by
Hiromi Ishii
C++0x in programming competition
by
yak1ex
アルゴリズムとデータ構造15
by
Kenta Hattori
アルゴリズムとデータ構造11
by
Kenta Hattori
アルゴリズムとデータ構造8
by
Kenta Hattori
よくわかるHopscotch hashing
by
Kumazaki Hiroki
boost tour 1.48.0 all
by
Akira Takahashi
アルゴリズムとデータ構造14
by
Kenta Hattori
[アルゴリズムイントロダクション勉強会] ハッシュ
by
Rei Takami
アルゴリズムを楽しく!@PiyogrammerConference
by
Kensuke Otsuki
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
Data-Intensive Text Processing with MapReduce ch4
by
Sho Shimauchi
More from Takao Sumitomo
PDF
僕は上スワイプでBottomSheetを出したかっただけなんだ
by
Takao Sumitomo
PDF
sharedUserIdを使った俺得開発ツールの作り方
by
Takao Sumitomo
PDF
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
by
Takao Sumitomo
PDF
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
by
Takao Sumitomo
PDF
アプリを成長させるためのログ取りとログ解析に必要なこと
by
Takao Sumitomo
ODP
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
by
Takao Sumitomo
PDF
高速でトライ&エラーを するために気をつけてること
by
Takao Sumitomo
PDF
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
by
Takao Sumitomo
PDF
Viewを動的に変化させるアプローチ
by
Takao Sumitomo
PDF
プロダクトを育てるのにGoogleのサービスが助けてくれること
by
Takao Sumitomo
PDF
AdapterToolboxでRecyclerViewを楽にする
by
Takao Sumitomo
PPTX
エンジニアがプロダクト育成を始めるまでにやったこと
by
Takao Sumitomo
PPTX
Wantedlyのテスト事情
by
Takao Sumitomo
PDF
用途に合わせたアニメーションの実装方法
by
Takao Sumitomo
PPTX
Uml速習会
by
Takao Sumitomo
PDF
potatotips (iOS/Android開発Tips共有会) 第19回 資料
by
Takao Sumitomo
PDF
SQLiteDatabaseを無理矢理覗く
by
Takao Sumitomo
PDF
開発を効率的に進めるられるまでの道程
by
Takao Sumitomo
PDF
テストがあればなんとかなる〜効率化までの道程〜
by
Takao Sumitomo
PDF
勉強会資料 Uml概要
by
Takao Sumitomo
僕は上スワイプでBottomSheetを出したかっただけなんだ
by
Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方
by
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
by
Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
by
Takao Sumitomo
アプリを成長させるためのログ取りとログ解析に必要なこと
by
Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
by
Takao Sumitomo
高速でトライ&エラーを するために気をつけてること
by
Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
by
Takao Sumitomo
Viewを動的に変化させるアプローチ
by
Takao Sumitomo
プロダクトを育てるのにGoogleのサービスが助けてくれること
by
Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にする
by
Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったこと
by
Takao Sumitomo
Wantedlyのテスト事情
by
Takao Sumitomo
用途に合わせたアニメーションの実装方法
by
Takao Sumitomo
Uml速習会
by
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
by
Takao Sumitomo
SQLiteDatabaseを無理矢理覗く
by
Takao Sumitomo
開発を効率的に進めるられるまでの道程
by
Takao Sumitomo
テストがあればなんとかなる〜効率化までの道程〜
by
Takao Sumitomo
勉強会資料 Uml概要
by
Takao Sumitomo
勉強会資料 データ構造とアルゴリズム
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