Open Data Structures
プロジェクトの概要
Open Data Structures は Pat Morin 氏が執筆した、データ構造の入門書です。本プロジェクトでは、この本の和訳を作成し、PDF ファイルおよびそのソースコードを公開しています。
PDF ファイルはこのページの下部にあります。書籍のソースコードは GitHub のリポジトリ https://github.com/spinute/ods で公開しています。
また、本プロジェクトの校正・校閲をプロに依頼するための資金をクラウドファンディングで募りました。ご支援頂いた皆様には心より感謝を申し上げます。
スポンサー企業・団体
書籍情報
ラムダノート社より、本書の書籍版(紙書籍、電子書籍)を販売しています。https://www.lambdanote.com/products/opendatastructures
ラムダノート社は、本書の校正・校閲を担当してくださった技術出版社です。成果物をオープンソースライセンスで公開し続けることを了承した上で、出版の提案を持ちかけてくださいました。
書籍版とオープンソース版の主な違いは見た目で、内容はほぼ同じです。フォントや組版の調整により、読みやすさがこれほども違うのかと訳者一同感動しました。
書籍版を一部公開する許可を頂いたので、ぜひ見比べてみて、興味を持った方は購入をご検討いただければと思います!
オープンソース版 PDF ファイル
オープンソース版 Open Data Structures 日本語訳の PDF ファイルを以下で公開しています。最新のソースコードは GitHub のリポジトリ https://github.com/spinute にあり、適宜こちらの PDF ファイルに反映しています。
本書の内容
目次
訳者まえがき
本書の読み方
訳者謝辞
なぜこの本を書いたのか
謝辞
第1章 イントロダクション
効率の必要性
インターフェース
数学的背景
計算モデル
正しさ、時間計算量、空間計算量
コードサンプル
データ構造の一覧
ディスカッションと練習問題
第2章 配列を使ったリスト
ArrayStack:配列を使った高速なスタック操作
FastArrayStack:最適化された ArrayStack
ArrayQueue:配列を使ったキュー
ArrayDeque:配列を使った高速な双方向キュー
DualArrayDeque:2つのスタックから作った双方向キュー
RootishArrayStack:メモリ効率に優れた配列スタック
ディスカッションと練習問題
第3章 連結リスト
SLList:単方向連結リスト
DLList: 双方向連結リスト
SEList:空間効率の良い連結リスト
ディスカッションと練習問題
第4章 スキップリスト
基本的な構造
SkiplistSSet:効率的な SSet
SkiplistList:効率的なランダムアクセス List
スキップリストの解析
ディスカッションと練習問題
第5章 ハッシュテーブル
ChainedHashTable: チェイン法を使ったハッシュテーブル
LinearHashTable:線形探索法
ハッシュ値
ディスカッションと練習問題
第6章 二分木
BinaryTree:基本的な二分木
BinarySearchTree:バランスされていない二分探索木
ディスカッションと練習問題
第7章 ランダム二分探索木
ランダム二分探索木
Treap: 動的ランダム二分探索木の一種
ディスカッションと練習問題
第8章 スケープゴート木
ScapegoatTree:部分的に再構築する二分探索木
ディスカッションと練習問題
第9章 赤黒木
2-4 木
RedBlackTree:2-4 木をシミュレートする二分木
要約
ディスカッションと練習問題
第10章 ヒープ
BinaryHeap:二分木を間接的に表現する
MeldableHeap:つなぎ合わせられるランダムなヒープ
ディスカッションと練習問題
第11章 整列アルゴリズム
比較に基づく整列
計数ソートと基数ソート
ディスカッションと練習問題
第12章 グラフ
AdjacencyMatrix:行列によるグラフの表現
AdjacencyLists:リストの集まりとしてのグラフ
グラフの走査
ディスカッションと練習問題
第13章 整数を扱うデータ構造
BinaryTrie:二分トライ木
XFastTrie:O(log(logn)) 時間での検索
YFastTrie:O(log(logn)) 時間の SSet
ディスカッションと練習問題
第14章 外部メモリの探索
BlockStore
B木
ディスカッションと練習問題