如果两个群之间存在 保结构映射 (structure preserving map),那么这两个群之间就存在同态。

假设我们有两个代数数据结构 $(A,\square)$ 和 $(B, \blacksquare)$ ,其中 $A$ 的二元运算符是 $\square$ , $B$ 的二元运算符是 $\blacksquare$ 。

从 $A$ 到 $B$ 的同态存在,当且仅当存在一个函数 $\phi: A\rightarrow B$ ,使得:

$$ \phi(a_i \square a_j)=\phi(a_i)\blacksquare\phi(a_j)\space\space\forall a_i,a_j\in A $$

<aside> 💡 💡 一句话理解:同态就是一座『保持规矩的桥』。$A$ 和 $B$ 是两个世界,各有自己的运算方式($\square$ 和 $\blacksquare$)。这个等式是说:先在 $A$ 世界里把两个东西算好,再过桥;和先各自过桥、再到 $B$ 世界里算——结果必须一模一样。打个比方:把人民币换成美元。你可以先把 100 元和 50 元加成 150 元再换汇,也可以分别换好再相加,得到的美元数一定相等。汇率这座桥『不打乱加法这个规矩』,它就是一个同态。

</aside>

换句话说,如果 $a_i \square a_j = a_k$ ,那么 $\phi(a_i) \blacksquare \phi(a_j) = \phi(a_k)$ 。

请注意,同态是单向的。函数 $\phi$ 接受 $A$ 中的元素并将其映射到 $B$ 中的元素。我们对“反向映射”没有任何要求。

<aside> 💡 💡 为什么强调『单向』:同态只保证从 $A$ 到 $B$ 这一个方向守规矩,不保证倒回来也行。就像榨汁机:苹果能榨成苹果汁,但你没法把果汁还原成完整的苹果。后面讲的『同态加密』正是利用这一点——正着算很容易,倒着推回去却极难。

</aside>

我们将首先展示一些简单的示例,进行一些澄清说明,然后提供更复杂的示例。

同态的简单示例

加法运算下的所有整数到加法运算下的所有偶数

设 $A$ 为加法运算下的所有整数的集合,设 $B$ 为加法运算下的所有偶数的集合。很明显, $A$ 和 $B$ 都是群。

设 $\phi(x)=2x$

我们看到 $\phi$ 定义了从 $A$ 到 $B$ 的同态,因为对于任意一对整数 $a_i$ 和 $a_j$ ,以下等式均成立:

$$ \begin{align*} \phi(a_i+a_j)&=\phi(a_i)+\phi(a_j)\\ 2(a_i+a_j)&=2(a_i)+2(a_j) \end{align*} $$

拼接运算下的所有字符串到加法运算下的非负整数

例如,设 $A$ 是在拼接运算下的所有字符串(包括空字符串)构成的幺半群,设 $B$ 是在加法运算下的所有非负整数构成的幺半群。

从 $A$ 到 $B$ 存在同态,因为存在一个函数 $\phi$ ,它将字符串映射为非负整数并保持以下性质:

$$ \phi(a_i+a_j)=\phi(a_i)+\phi(a_j) $$

在这种情况下, $\phi$ 是字符串的 长度 。例如: