写像 関数 定義域 値域 全射 単射
写像とは
写像(mapping)または関数(function)とは、ある集合の各要素に対して、別の集合の要素を一意に対応させる規則である。
写像の定義
f: A → B
集合Aの各要素aに対して、集合Bの要素f(a)がただ一つ定まる。
・A:定義域(domain)
・B:終域(codomain)
・f(A):値域(range, image)= 実際に出力される値の集合
プログラミングの関数と数学の関数の違い:数学では同じ入力には必ず同じ出力(純粋関数)。プログラミングでは副作用があり得る。
写像の種類
単射(Injection)
単射(one-to-one)
異なる入力には異なる出力が対応する。
f(a₁) = f(a₂) ならば a₁ = a₂
例:f(x) = 2x は単射。f(x) = x² は単射でない(f(2) = f(-2) = 4)
全射(Surjection)
全射(onto)
終域のすべての要素が、少なくとも1つの入力から到達可能。
値域 = 終域
例:f: ℝ → ℝ, f(x) = x³ は全射。f(x) = x² は全射でない(負の数に到達不可)
全単射(Bijection)
全単射(one-to-one correspondence)
単射かつ全射。1対1の完全な対応。
逆写像が存在する。
例:f(x) = 2x + 1 は全単射。逆関数 f⁻¹(y) = (y-1)/2
図解
| 種類 | 特徴 | 逆関数 |
|---|---|---|
| 単射 | 重複なし(異なる入力→異なる出力) | 部分的に可能 |
| 全射 | 漏れなし(すべての出力に到達) | 不定(複数の入力から同じ出力) |
| 全単射 | 重複なし+漏れなし | 完全に存在 |
実務での応用
WEB開発での応用
ハッシュ関数:多対1の写像(単射でない)。異なる入力が同じ出力になりうる(衝突)。
エンコーディング:Base64は全単射。デコードで元に戻せる。
ID採番:データベースのシーケンスは単射。重複しない。
URLルーティング:パス→コントローラの対応は関数。
AI/MLでの応用
活性化関数:ReLU、Sigmoid、tanh などは写像。入出力の性質が重要。
エンベディング:高次元空間への写像。単語→ベクトル。
次元削減:高次元→低次元の写像。全射でないことが多い(情報の損失)。
深掘りリンク
- Wikipedia: 写像
- Wikipedia: 全単射
- 関連:圏論、関数型プログラミング
- 次のステップ:合成関数、逆関数