t69 episteme

29
わわわわわわ わわわわわ #69 わわわわわわわわわ わわわわわわわわわわわ わわわわわわわわわわわ episthmh [email protected]

Upload: -

Post on 27-May-2015

270 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: T69 episteme

わんくま同盟 東京勉強会 #69

計算機科学基礎講座「計算量とメトリクス」

わんくま同盟茶藝部顧問

[email protected]

Page 2: T69 episteme

わんくま同盟 東京勉強会 #69

プログラムは

• 「使うひと目線」では– 速い– 小さい

  … に越したことはないよね。

Page 3: T69 episteme

わんくま同盟 東京勉強会 #69

アルゴリズムの性能を示す目安

• 「速さ」の指標– 時間計算量 : どんだけ時間を食うか

• 「小ささ」の指標– 空間計算量 : どんだけ記憶域を食うか

Page 4: T69 episteme

わんくま同盟 東京勉強会 #69

O 記法 (O-notation)

• ある計算 / 処理に要する時間 / 空間が T に比例するとき、その時間 / 空間計算量を

O(T) と表記し、

計算量は「 T のオーダー」という。

※ いつも一定の計算量であるなら O(1)

大文字のオミクロン

Page 5: T69 episteme

わんくま同盟 東京勉強会 #69

データ構造と計算量

• データ構造– 可変長配列 : vector– リスト : list– 二分木 : set – ハッシュ表 : unordered_set

それぞれの要素アクセス、挿入 / 削除、検索に要する時間計算量は…

Page 6: T69 episteme

わんくま同盟 東京勉強会 #69

データ構造と時間計算量

N番目の参照 要素の追加 /削除

検索

可変長配列 Ο(1) Ο(N) Ο(N)

リスト Ο(N) Ο(1) Ο(N)

二分木 N/A Ο(logN) Ο(logN)

ハッシュ表 N/A Ο(1) Ο(1)

※ ただし、要素ひとつを格納するのに必要な領域は一般に

可変長配列 < リスト < 二分木 < ハッシュ表

なので、「時間と空間のトレードオフ」

Page 7: T69 episteme

わんくま同盟 東京勉強会 #69

プログラムは

• 「作るひと目線」では– 短い– 単純

  … に越したことはないよね。

「長いプログラムは間違っている」「難しいプログラムは間違っている」

Page 8: T69 episteme

わんくま同盟 東京勉強会 #69

作るひと目線でのプログラムの複雑さ

• メトリクス : 「複雑さ / ややこしさ」の指標– 行数 LOC(Lines Of Code)– サイクロマティック複雑度– ネストの深さ– 分岐数 / パス数– etc

Page 9: T69 episteme

わんくま同盟 東京勉強会 #69

サイクロマティック複雑度

Page 10: T69 episteme

わんくま同盟 東京勉強会 #69

サイクロマティック複雑度

Page 11: T69 episteme

わんくま同盟 東京勉強会 #69

Page 12: T69 episteme

わんくま同盟 東京勉強会 #69

Page 13: T69 episteme

わんくま同盟 東京勉強会 #69

Page 14: T69 episteme

わんくま同盟 東京勉強会 #69

Page 15: T69 episteme

わんくま同盟 東京勉強会 #69

Page 16: T69 episteme

わんくま同盟 東京勉強会 #69

Page 17: T69 episteme

わんくま同盟 東京勉強会 #69

Page 18: T69 episteme

わんくま同盟 東京勉強会 #69

Page 19: T69 episteme

わんくま同盟 東京勉強会 #69

Page 20: T69 episteme

わんくま同盟 東京勉強会 #69

Page 21: T69 episteme

わんくま同盟 東京勉強会 #69

Page 22: T69 episteme

わんくま同盟 東京勉強会 #69

Page 23: T69 episteme

わんくま同盟 東京勉強会 #69

Page 24: T69 episteme

わんくま同盟 東京勉強会 #69

Page 25: T69 episteme

わんくま同盟 東京勉強会 #69

コンポーネント間の結合

• 理解性• テスト容易性• 再利用性

を阻害する

Page 26: T69 episteme

わんくま同盟 東京勉強会 #69

Page 27: T69 episteme

わんくま同盟 東京勉強会 #69

Page 28: T69 episteme

わんくま同盟 東京勉強会 #69

60%

10%

Page 29: T69 episteme

わんくま同盟 東京勉強会 #69

Thank you !