Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Out of "Order" ~計算量の普通は気にしない部分の話

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 14 Anzeige

Weitere Verwandte Inhalte

Anzeige

Aktuellste (20)

Out of "Order" ~計算量の普通は気にしない部分の話

  1. 1. 第一回 日曜数学会 Lightning Talk Out of “Order” ~計算量の普通は気にしない部分の話~ 綾塚 祐二 第一回 日曜数学会 Lightning Talk 2015.6.20
  2. 2. 第一回 日曜数学会 Lightning Talk 自己紹介 • 名前: 綾塚 祐二 (@ayatsuka_yuji) • 出身: 理学部情報科学科 • 専門(本業): ユーザインタフェース、HCI • 専門(趣味): 大気光象 • その他: SF読み、紅茶飲み
  3. 3. 第一回 日曜数学会 Lightning Talk 計算量 • 何かを計算(広い意味で)するのにどれくらい時間 (やメモリ)が要るかをざっくり表す • 問題の難しさやアルゴリズムの良し悪しを考 えるのに使う • 「ざっくり」なので、対象となるデータの数 を n として「n の二乗に比例する」「n log n に比例する」というような議論をする • それを O(n2 ), O(n log n) のように書く おーだーえぬじじょう おーだーえぬろぐえぬ
  4. 4. 第一回 日曜数学会 Lightning Talk たとえば… • n 個の数列から特定の数字を見つける – 端から一個一個探す → O(n) – 二分探索 → O(log n) nが大きくなったときの時間の増え方が小さいのでこちらのほうがよい (でも、小さい or 大きい順に並んでいる必要あり)
  5. 5. 第一回 日曜数学会 Lightning Talk 他には… • n 個の数列を小さい順に並べ替える – バブルソート → O(n2 ) – シェルソート→ O(n1.25 ) くらい – クイックソート→ O(n log n) – ビンソート → O(n) (範囲の判っている整数のみのときだけ使える)
  6. 6. 第一回 日曜数学会 Lightning Talk バブルソート: O(n2)
  7. 7. 第一回 日曜数学会 Lightning Talk クイックソート: O(n log n)
  8. 8. 第一回 日曜数学会 Lightning Talk ちょっと待て。
  9. 9. 第一回 日曜数学会 Lightning Talk さらっと流してるけど… その操作の実行時間、n とかに依存しないの?
  10. 10. 第一回 日曜数学会 Lightning Talk 暗黙の仮定 実用上、普通は気にしない • 「定数時間 (O(1)) でできる計算や操作」 のセットが暗に仮定されている • 厳密に言うと比較や足し算は数の大きさ を k として O(log k) (桁数に比例) だが、実感と いうか実用上の議論から乖離してしまう • ただし、多倍長計算とかが絡むと顔を出す • そして…
  11. 11. 第一回 日曜数学会 Lightning Talk 「計算機」の根本が変わると… • 量子計算機が実用化されると、今まで O(n2 ) だった計算が O(n) で済んだりしうる • 素因数分解の計算量が下がり、暗号が解 かれやすくなったりしてまずいことに • 「『計算』って本質的にエントロピー変化するのかなぁ」 とか考えだすとまた別の話に… (笑)
  12. 12. 第一回 日曜数学会 Lightning Talk まとめ • 普通の「計算量」の議論には意外と暗黙 の仮定が入ってる • その「仮定」が成り立たない場合も けっこうあるので忘れてるとまずい • 「おやつは300円以内」問題 (aka ナップサック問題) も簡単になるかも…?
  13. 13. 第一回 日曜数学会 Lightning Talk 頭の体操? スリープソートの計算量 • コンセプト的にはビンソートと同等なの で O(n) • OS まで含めた動作で考えると…? • CPU が n 個あると…? 1. sleep(a[i]); println(a[i]); を n まで並列実行 2. 後は寝て待つ
  14. 14. 第一回 日曜数学会 Lightning Talk Out of “Order” ~計算量の普通は気にしない部分の話~ 綾塚 祐二 Fin.

×