T69 episteme
Transcript of T69 episteme
![Page 2: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/2.jpg)
わんくま同盟 東京勉強会 #69
プログラムは
• 「使うひと目線」では– 速い– 小さい
… に越したことはないよね。
![Page 3: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/3.jpg)
わんくま同盟 東京勉強会 #69
アルゴリズムの性能を示す目安
• 「速さ」の指標– 時間計算量 : どんだけ時間を食うか
• 「小ささ」の指標– 空間計算量 : どんだけ記憶域を食うか
![Page 4: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/4.jpg)
わんくま同盟 東京勉強会 #69
O 記法 (O-notation)
• ある計算 / 処理に要する時間 / 空間が T に比例するとき、その時間 / 空間計算量を
O(T) と表記し、
計算量は「 T のオーダー」という。
※ いつも一定の計算量であるなら O(1)
大文字のオミクロン
![Page 5: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/5.jpg)
わんくま同盟 東京勉強会 #69
データ構造と計算量
• データ構造– 可変長配列 : vector– リスト : list– 二分木 : set – ハッシュ表 : unordered_set
それぞれの要素アクセス、挿入 / 削除、検索に要する時間計算量は…
![Page 6: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/6.jpg)
わんくま同盟 東京勉強会 #69
データ構造と時間計算量
N番目の参照 要素の追加 /削除
検索
可変長配列 Ο(1) Ο(N) Ο(N)
リスト Ο(N) Ο(1) Ο(N)
二分木 N/A Ο(logN) Ο(logN)
ハッシュ表 N/A Ο(1) Ο(1)
※ ただし、要素ひとつを格納するのに必要な領域は一般に
可変長配列 < リスト < 二分木 < ハッシュ表
なので、「時間と空間のトレードオフ」
![Page 7: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/7.jpg)
わんくま同盟 東京勉強会 #69
プログラムは
• 「作るひと目線」では– 短い– 単純
… に越したことはないよね。
「長いプログラムは間違っている」「難しいプログラムは間違っている」
![Page 8: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/8.jpg)
わんくま同盟 東京勉強会 #69
作るひと目線でのプログラムの複雑さ
• メトリクス : 「複雑さ / ややこしさ」の指標– 行数 LOC(Lines Of Code)– サイクロマティック複雑度– ネストの深さ– 分岐数 / パス数– etc
![Page 9: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/9.jpg)
わんくま同盟 東京勉強会 #69
サイクロマティック複雑度
![Page 10: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/10.jpg)
わんくま同盟 東京勉強会 #69
サイクロマティック複雑度
![Page 11: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/11.jpg)
わんくま同盟 東京勉強会 #69
![Page 12: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/12.jpg)
わんくま同盟 東京勉強会 #69
![Page 13: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/13.jpg)
わんくま同盟 東京勉強会 #69
![Page 14: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/14.jpg)
わんくま同盟 東京勉強会 #69
![Page 15: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/15.jpg)
わんくま同盟 東京勉強会 #69
![Page 16: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/16.jpg)
わんくま同盟 東京勉強会 #69
![Page 17: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/17.jpg)
わんくま同盟 東京勉強会 #69
![Page 18: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/18.jpg)
わんくま同盟 東京勉強会 #69
![Page 19: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/19.jpg)
わんくま同盟 東京勉強会 #69
![Page 20: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/20.jpg)
わんくま同盟 東京勉強会 #69
![Page 21: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/21.jpg)
わんくま同盟 東京勉強会 #69
![Page 22: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/22.jpg)
わんくま同盟 東京勉強会 #69
![Page 23: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/23.jpg)
わんくま同盟 東京勉強会 #69
![Page 24: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/24.jpg)
わんくま同盟 東京勉強会 #69
![Page 25: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/25.jpg)
わんくま同盟 東京勉強会 #69
コンポーネント間の結合
• 理解性• テスト容易性• 再利用性
を阻害する
![Page 26: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/26.jpg)
わんくま同盟 東京勉強会 #69
![Page 27: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/27.jpg)
わんくま同盟 東京勉強会 #69
![Page 28: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/28.jpg)
わんくま同盟 東京勉強会 #69
60%
10%
![Page 29: T69 episteme](https://reader038.fdocument.pub/reader038/viewer/2022102716/5564c37ed8b42a3e618b5858/html5/thumbnails/29.jpg)
わんくま同盟 東京勉強会 #69
Thank you !