射影 (projection)

複数の分野に現れるが、共通核は同じ — 全体から一部の成分・次元だけを取り出し、残りを捨てる操作。多くは冪等(2回適用しても結果は変わらない: p(p(x)) = p(x))で、情報を落とす(非可逆)。双対は「埋め込む・注入する(injection)」。分野ごとに姿を整理する。

圏論・型の射影

積(product)A×B からの取り出し π₁ : A×B → A、π₂ : A×B → B(プログラムの fst / snd)。型では A ∧ B → A = ∧除去(カリー=ハワードで「タプルから片方を取る」)。積の普遍性そのものが射影で定義される(任意の対 f:C→A, g:C→B が一意の ⟨f,g⟩:C→A×B を経由し、πで戻る)。

双対は直和(coproduct)A+B への入射 inj₁ : A → A+B(型では A → A∨B = ∨導入)。射影=取り出す / 入射=埋め込むが積↔和の双対をなす。→ 直積/直和型の取り出しと構築。

矢印の向きが対照的(射影は外向き、入射は内向き):

flowchart LR
    subgraph prod["積 A×B(射影 = 外向き)"]
      direction TB
      AB["A × B"]
      AB -->|"π₁"| A1["A"]
      AB -->|"π₂"| B1["B"]
    end
    subgraph cop["直和 A+B(入射 = 内向き)"]
      direction TB
      A2["A"] -->|"inj₁"| AC["A + B"]
      B2["B"] -->|"inj₂"| AC
    end

線形代数の射影

線形写像 P で P² = P(冪等) を満たすもの。空間をある部分空間へ「潰す」。

冪等性(P²=P)を図で:

flowchart LR
    x["x(全空間の点)"] -->|"P"| px["Px(部分空間へ落とす)"]
    px -->|"P をもう一度(変化なし)"| px

関係代数の射影

RDB の π(列の選択)= SQL の SELECT 列…。テーブルから必要な属性(列)だけを残す。

縦(列)に削るのが射影、横(行)に削るのが選択:

flowchart LR
    T["テーブル(行 × 列)"] -->|"π 射影 = 列を選ぶ"| C["必要な列だけの表"]
    T -->|"σ 選択 = 行を絞る"| R["条件に合う行だけの表"]

その他の「射影」

共通する直感(押さえどころ)

関連

Graph