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

Weitere ähnliche Inhalte

Andere mochten auch

nichiyo-math vol.2
nichiyo-math vol.2nichiyo-math vol.2
nichiyo-math vol.2tsu nuts
 
Amortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackAmortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackKen Ogura
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
野良ビッグデータへのお誘い
野良ビッグデータへのお誘い野良ビッグデータへのお誘い
野良ビッグデータへのお誘いMasanori Takano
 

Andere mochten auch (7)

nichiyo-math vol.2
nichiyo-math vol.2nichiyo-math vol.2
nichiyo-math vol.2
 
Float is Legacy
Float is LegacyFloat is Legacy
Float is Legacy
 
計算量とオーダー
計算量とオーダー計算量とオーダー
計算量とオーダー
 
Amortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 StackAmortize analysis of Deque with 2 Stack
Amortize analysis of Deque with 2 Stack
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
計算量
計算量計算量
計算量
 
野良ビッグデータへのお誘い
野良ビッグデータへのお誘い野良ビッグデータへのお誘い
野良ビッグデータへのお誘い
 

Mehr von ayatsuka

いろいろな暈 (Variety of Ice Halos)
いろいろな暈 (Variety of Ice Halos)いろいろな暈 (Variety of Ice Halos)
いろいろな暈 (Variety of Ice Halos)ayatsuka
 
主虹と副虹の色の順序について ver.2
主虹と副虹の色の順序について ver.2主虹と副虹の色の順序について ver.2
主虹と副虹の色の順序について ver.2ayatsuka
 
主虹と副虹の色の順序について
主虹と副虹の色の順序について主虹と副虹の色の順序について
主虹と副虹の色の順序についてayatsuka
 
天球に42度の円を描く
天球に42度の円を描く天球に42度の円を描く
天球に42度の円を描くayatsuka
 
感度・特異度・再現率など
感度・特異度・再現率など感度・特異度・再現率など
感度・特異度・再現率などayatsuka
 
プレゼンテーション=主題✕情報デザイン
プレゼンテーション=主題✕情報デザインプレゼンテーション=主題✕情報デザイン
プレゼンテーション=主題✕情報デザインayatsuka
 
Bad UI ハンティング
Bad UI ハンティングBad UI ハンティング
Bad UI ハンティングayatsuka
 
これもあれ? - 2D Moire Patterns
これもあれ? - 2D Moire Patternsこれもあれ? - 2D Moire Patterns
これもあれ? - 2D Moire Patternsayatsuka
 
GhostTweet
GhostTweetGhostTweet
GhostTweetayatsuka
 
The Cheshire Cat
The Cheshire CatThe Cheshire Cat
The Cheshire Catayatsuka
 

Mehr von ayatsuka (10)

いろいろな暈 (Variety of Ice Halos)
いろいろな暈 (Variety of Ice Halos)いろいろな暈 (Variety of Ice Halos)
いろいろな暈 (Variety of Ice Halos)
 
主虹と副虹の色の順序について ver.2
主虹と副虹の色の順序について ver.2主虹と副虹の色の順序について ver.2
主虹と副虹の色の順序について ver.2
 
主虹と副虹の色の順序について
主虹と副虹の色の順序について主虹と副虹の色の順序について
主虹と副虹の色の順序について
 
天球に42度の円を描く
天球に42度の円を描く天球に42度の円を描く
天球に42度の円を描く
 
感度・特異度・再現率など
感度・特異度・再現率など感度・特異度・再現率など
感度・特異度・再現率など
 
プレゼンテーション=主題✕情報デザイン
プレゼンテーション=主題✕情報デザインプレゼンテーション=主題✕情報デザイン
プレゼンテーション=主題✕情報デザイン
 
Bad UI ハンティング
Bad UI ハンティングBad UI ハンティング
Bad UI ハンティング
 
これもあれ? - 2D Moire Patterns
これもあれ? - 2D Moire Patternsこれもあれ? - 2D Moire Patterns
これもあれ? - 2D Moire Patterns
 
GhostTweet
GhostTweetGhostTweet
GhostTweet
 
The Cheshire Cat
The Cheshire CatThe Cheshire Cat
The Cheshire Cat
 

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

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