Booklog - ワンス・アポン・アン・アルゴリズム 物語で読み解く計算

Martin Erwig, 高島亮祐

随分と前に買って積んでたので読む。 まえがき ~ はじめに。本書は、計算ーシステマティックな問題解決を具体的な例ー本書では物語を通して紹介していく。 計算の基礎で世界の意味や現実世界の問題解決に繋げることを計算論的思考と呼ばれることもある。計算の汎用性、計算機科学の適用可能性の広さを示すのも本書の目的。 本書は計算を支える 2 つの概念、アルゴリズムと言語の二部で構成される。 はじめにでは、本書の章構成でもある、アルゴリズムと計算・表現とデータ構造・問題解決とその限界・言語の意味・制御構造とループ・再帰・型と抽象化、が何故重要かを説明し、それぞれの概念の依存関係を示して読む順序を提案している。 1,2 章は基礎で、 4 章もデータ構造の基礎となってる。 「はじめに」を読む限りは最近読んでたいくつかの本とのつながりもあり、良い感触。今のところ訳も内容も違和感無し。 なんとなく、例えがある程度知ってるヒト向けかもなと思った。全く知らないヒト向けにしてはちょっと基礎力求められるんじゃなかな。

2026-07-30, read count: 1, page: i ~ xii, 1 ~ 12, pages read: 24

起床。アルゴリズムを使うことが計算。起床のルーチンを例えに、アルゴリズムと計算≒順序付けられた部分問題の解決策の集合とその実行についての説明。 章の前のポエム的なので最初に概念に触れられてるのだけど、各章の物語とは関係ない割に概念がつながってるので、重要なパートっぽい。 1 章。はじめに問題の表現が定められ、各部分問題の解決を繰り返して問題の表現を変換していき、最終的に解決された問題の表現にたどり着く。問題の表現は現実のものに対応している。 ただし問題解決は計算と重なる部分はあるが、純粋に計算が何であるかを表現することはできない。 アルゴリズムを言語で表現することは、有限で、個々のステップに実効性がある形でなければならない。正しい結果を返すこと、正しく終了できることも、アルゴリズムでは重要になる。 意外と難しいぞこの本。 1 章から教科書っぽい文章になった。これは計算機科学の思想・概念を論じてる本だ。物語を利用した思考実験。意図せず気を抜けない本を読み始めてしまった。

2026-07-31, read count: 1, page: 13 ~ 29, pages read: 17

2 章。計算の動的な側面。パラメータがアルゴリズムに柔軟さをもたらす。アルゴリズムの違いは実行時間や実行に必要なリソースに影響を与え、アルゴリズムの複雑性・正確性・効率性といった指標で測れる。 汎用計算機と特定のアルゴリズム一式を実行する計算機。計算を実行するもの=計算機がアルゴリズムを記述した言語を読める必要があり、また実行の主体になれる必要がある。 アルゴリズムの空間複雑性は、計算が成功するか、必要な資源が足りているか判断する指標となる。時間効率と空間効率。 この本以前にコレだけヘンゼルのポケットのサイズだとか石の数だとかを真面目に考えた本は中々ないんじゃないかな。ここまで来ると笑える。 子供の足で行ける範囲と考えるとそう遠くなかろうけど、連れ出された先が遠いと仮定したら、さぞかしヘンゼルのポケットが大きく石が小さかったんだろうなと言うのが想像できてコレまた笑える。 なんでそんなにポケットパンパンで親にバレないんだよ。 物語をベースにというか、物語はただ利用されてるだけで、殆どは思考実験じゃないかなこの本。中々難しい。 創作の物語にこのシステムの観点を持ち込んだことはなかったので、個人的には新鮮だ。これからの読書生活に影響及ぼすぞコレ。

2026-08-01, read count: 1, page: 30 ~ 46, pages read: 17

通勤。記号を解釈して意味を導くのは計算である。意味はアルゴリズムであり導かれた意味は計算である。 記号をシステマティックに変換して別の記号に変換するのも計算。 きょうは家の事情で忙し過ぎ&疲労困憊て全然読めなかった。この書き出しだけでも相当メタな話なので、念入りに読むため MP 不足のきょうはここで終える。

2026-08-02, read count: 1, page: 47 ~ 50, pages read: 4

3 章。表現とは何であるか。記号(シーニュ)。知覚・提示されるもの(シニフィアン)と概念(シニフィエ)の関係は、記号と表現する意味の対応。 例えば引用符の有無で表現が変わる。使用と言及の差異。シニフィエのシニフィエのように 2 つのレベルの表現を 1 つにまとめられる。 1 つにシニフィアンが複数にシニフィエ、複数のシニフィアンが 1 つのシニフィエを指すこともある。多義語や同義語。文脈によってシニフィエが変わる。 誤った表現が導かれることは計算の正確性に関わる問題。記号を、対象との同一性や類似性で示されるアイコン・対象と規則的なつながりを持つインデックス・言語のように約束事のみで対象とつながるシンボルの 3 種に分ける。 この分類を使って、いかに記号の表現が変換≒計算されているかを見ることができる。 本書の太字の使い方は不規則なのがちょっと気になる。アイコンは太字なのに他は 2 つは太字でなくて、 3 種に分けたのに 1 つ目だけ特別扱いに見える。太字に意味はありません、てか?

2026-08-03, read count: 1, page: 51 ~ 62, pages read: 12

職場にて ~ 4 章。特定のアクセスパターンを持つ集まりデータ型という。先着順のキュー。到着の逆順に要素を処理するスタック。優先順位付きキューはスタックの last in, first out に対し highest in, firrst out 。 セット(集合)は要素を追加・削除・参照できるデータ型で、その集合に含まれることが問題やアルゴリズムの述語に対応しており、広く利用できる。キーワードに基づき情報を探せる拡張をセットに行ったのがディクショナリ(辞書) パターンに最適な要素の配置をデータ構造という。リストは並んだ列のようなデータ構造。ツリー(木)は先祖・子孫のような関係のデータ構造で、要素数が変動する場合の優先順位を求めるのに向く。 データ構造はアルゴリズムを効率的に実行するうえで重要。リストをつなぐ矢印はポインタと呼ぶ。リストの順序にはそのリスト固有の何らかの意味がる。よってある要素にアクセスするためにはその順序を辿る必要がある。このようなアルゴリズムは線形と呼ばれる。 データ型がデータに対して何をすべきかという要求を説明し、データ構造はその要求を満たす具体的な表現を提供する。データ型をデータ構造が実装するという関係にあり、 1 つのデータ型を複数のデータ構造で実装できる。 なんだかこれまでの章より抽象度が低く具体的で普通のデータ構造の話だった。これまでとの落差がでかい。単に知ってることだから読みやすくなっただけなのかもしれん。

2026-08-04, read count: 1, page: 63 ~ 82, pages read: 20

遺失物取扱所 ~ 5 章。探索空間を効率良く体系化する原則、独立された領域に分割された空間に探索対象の要素を配置し、探索対象の要素をある順番で並べる。本棚、引き出し、バインダー等。 探索空間の分割は、常に正しく探しているもの区別できる状態でなければならない。探索対象が順序付けられている速く見つけることができる。 この点で先頭からしか走査できないリストは探索空間を狭めることができないといえる。手がかりやキーが探索空間の内側と外側を区別する。 ディクショナリを実装するデータ構造にリストを使うより二分探索木による実装の方は対数時間で検索や更新を効率化できる。ただしそれは平衡二分探索木の場合であり、平衡でない場合はコストがかさむ。 トライ木は単語の並びも文字も表現できる。辿った経路が最終的な経路の接頭辞になるためプレフィックス木とも呼ばれる。 この辺も何の変哲もないデータ構造の話で特に気づきはないか。インディ・ジョーンズを本書のような視点で見たことがないのだけは新鮮だが。

2026-08-05, read count: 1, page: 83 ~ 106, pages read: 24

Years (3)

Books (60)