なっとく!アルゴリズム
https://gyazo.com/5af579e7f225f7ccc6619dc8c94d6581
タイトル
なっとく!アルゴリズム
著者
Aditya Bhargava
年
2017
リソース
https://www.shoeisha.co.jp/book/detail/9784798143354
概要
基本的なalgorithmの説明
図が超豊富
例はPythonで書かれている
内容
ビッグオー記法
第一章
二分探索
入力:ソートされたリスト
半分づつ可能性を消すので、探索にかかるワーストのステップ数は$ \log_2 n(単純探索なら$ n)
循環セールスマン問題は$ O(n!)(とてもおそい)
https://gyazo.com/ac9cc166abaf8c80d4137162f57264a3
p.71
ソート
選択ソート
再帰
ループと再起
ループでかければ再起でかける
再帰を使うと再起が終わるまで未処理の情報を確保したスタックを持ち続ける必要があるのでメモリを食う
末尾再帰だとこの問題は起きないが、本書のカバー範囲よりは高度なので割愛されていた
たくさん再起してメモリがなくなるとStack overflowになる
なぜ再帰を使うのかという説明は「関数型言語で使うから」だった。いまいち腹落ちしない
分割統治法という問題の考え方
分割倒置法を用いたソートクイックソート
単純に先頭をpivotとした場合で基本ケースに帰着できることを帰納法で証明
かなりわかりやすいkadoyau.icon
ハッシュテーブル
幅優先探索
ダイクストラ法
貪欲法
動的計画法
k近傍法
レコメンドシステム
NP完全問題
#読書