你说的非常棒!在群论中,我们不关心动作的过程,只关心动作引发的状态变化。如果转360度和什么都不做导致的结果完全一样,那它们在数学上就是相等的。
用程序员的话说,这有点像两个纯函数虽然内部实现不同,但只要对所有相同的输入都产生相同的输出,我们就认为这两个函数在功能上是等价的。
在我们的正方形旋转集合 { I, R, R², R³ } 中,存在一个特殊的动作 I(什么都不做)。
无论你把 I 和其他什么动作结合,都不会改变那个动作的结果:
R 接着做 I = R
I 接着做 R² = R²
在编程中,这对应着恒等函数 (Identity Function) const I = x => x,或者是数字加法中的 0,乘法中的 1,字符串拼接中的空字符串 ""。
任何一个“群”,都必须拥有一个单位元。
群论研究的不仅仅是单个动作,更是动作的组合。当我们说“组合”时,意思是先执行一个动作,再执行另一个动作。
如果你先转了 90度,接着再转 180度,总共转了 270度。也就是说 R + R² = R³。
如果你先转了 180度,再转 180度,总共转了 360度,也就是回到了起点。所以 R² + R² = I。
你会发现一个神奇的现象:在这个集合里,你任选两个动作进行组合,得到的新动作,依然在这个集合 { I, R, R², R³ } 里面! 你永远不可能通过旋转组合出一个“平移”或者“翻转”来。
这种性质,在数学上被称为封闭性 (Closure)。就像你在强类型语言中,把两个整数相加,结果肯定还是整数,不会突然跑出一个布尔值。
假设我们有一个集合,里面包含了所有的奇数 {..., -3, -1, 1, 3, 5, ...}。
我们的组合操作是“加法”。请问,这个集合在“加法”操作下,满足群论的封闭性吗?