『純粋関数型データ構造』
https://gyazo.com/db94ffae1b1329ff4071ddd80e77e602
2017/4/28
Chris Okasaki 著
稲葉一浩 翻訳
遠藤侑介 翻訳
KADOKAWA
元になった論文
原著
『Purely Functional Data Structures』
/mrsekut-book-4048930567
主なコードはStandard MLだが、付録にHaskellのコードが載っている
SML知らんけど雰囲気で読めるなmrsekut.icon
昔(2019)読んだ時めちゃくちゃ難しい印象があったが、今(2023)読んだら全然読めるようになってた
この本で学んだことを実践する場がほしい
アルゴ式あたりがちょうどよいか
あるいは競プロ系の本の例題を解くか
「このデータ構造を使って解く」というのが予めわかっている状態で解きたい
競プロがしたいわけではないので
1章
/mrsekut-book-4048930567/011 (第1章 はじめに)
関数型データ構造の設計と実装が命令形データ構造より難しい理由
破壊的代入の制限があるから
破壊的代入の制限は安全に寄与するが、破壊的代入がある方が効率がいい
データの永続的な柔軟性が求められているから
永続的データ構造
刹那的データ構造
正格評価の方が漸近的計算量の推論が容易
データ構造という用語について
/mrsekut-book-4048930567/014 (1.3 用語)
抽象データ型
抽象データ型を具体的に実現したもの
データ型のインスタンス
オブジェクト、スタックとかキューとか
Standard MLの値
永続的同一性
更新操作によって得られる様々なバージョンを同一視した概念
今のスタックの状態と2個前のスタックの状態は異なるものだが、同一の概念のように呼ぶ感じ
第1部
関数型データ構造の入門
第2章 永続性
/mrsekut-book-4048930567/019 (第2章 永続性)
2.1 リスト
図のおかげでリスト操作の永続性がわかりやすい
++
xs ++ ysの操作は、ysはそのままで、xs分のデータが全てコピーされる
なのでO(n)かかる
update xs i yの操作は、xsの前方i個の要素がコピーされる
なのでO(n)かかる
2.2 二分探索木
二分木のinsertも、前後で大部分が共有される
第3章 古典的なデータ構造を関数型プログラミングで
/mrsekut-book-4048930567/032 (第3章 古典的なデータ構造を関数型プログラミングで)
3.1 左偏ヒープ
3.2 二項ヒープ
3.3 赤黒木
Red-Black Tree
3.4 注記
第2部
遅延評価と償却の関係性
第4章 遅延評価
/mrsekut-book-4048930567/052 (第4章 遅延評価)
4.1 $-記法
4.2 ストリーム
4.3 注記
第5章 償却の基礎
/mrsekut-book-4048930567/063 (第5章 償却の基礎)
5.1 償却解析の技法
5.2 キュー
queue
5.3 二項ヒープ
5.4 スプレーヒープ
5.5 ペアリングヒープ
5.6 残念なお知らせ
5.7 注記
第6章 遅延評価を介した償却と永続性
/mrsekut-book-4048930567/088 (第6章 遅延評価を介した償却と永続性)
6.1 実行トレースと論理時間
6.2 償却と永続性の両立
6.3 銀行家法
6.4 物理学者法
6.5 遅延ペアリングヒープ
6.6 注記
第7章 償却の除去
/mrsekut-book-4048930567/127 (第7章 償却の除去)
7.1 スケジュール化
7.2 実時間キュー
7.3 二項ヒープ
7.4 共有に対応したボトムアップマージソート
7.5 注記
第3部
関数型データ構造を設計する汎用的な技法
第8章 遅延再構築
/mrsekut-book-4048930567/152 (第8章 遅延再構築)
8.1 一括再構築
8.2 全域再構築
8.3 遅延再構築
8.4 両端キュー
8.5 注記
第9章 記数法表現
/mrsekut-book-4048930567/176 (第9章 記数法表現)
9.1 位取り記数法
9.2 二進法表記
9.3 ねじれ二進数
9.4 三進数と四進数
9.5 注記
第10章 データ構造ブートストラップ
10.1 構造的分解
10.2 構造的抽象
10.3 集成的型へのブートストラップ
10.4 注記
第11章 暗黙再帰減速
11.1 キューと両端キュー
11.2 結合可能両端キュー
11.3 注記
付録A Haskell版ソースコード
/mrsekut-book-4048930567/286 (付録A Haskell版ソースコード)
訳者あとがき
著者・訳者プロフィール
索引
#スクボ読書化した本