抽象代數
代數結構:群與體
然後、老師開始講授一些代數的法則,像是《結合律、交換律、分配律》等等規則。
問題是、教這些規則要幹嘛呢?好像有用又好像沒太多用處。
其實這些規則屬於《抽象代數》的範圍,整個抽象代數就是研究《代數法則》所形成的結構體系,以及在這些結構體系下的定理等等議題。
《代數》建構在《數論》之上,研究《數》的運算,然後擴充到非數字型《元素》的運算上面,形成一整套的《運算體系》。
在《抽象代數》的運算體系中,最基本且重要的體系為《群、體、環》等等結構。
群 (group)
群的定義
所謂的《群》,是具有《封閉性、結合性、單位元素、反元素》的一個《集合+運算》結構。
假如其中的運算用 ● 代表,那麼《群》應該具有下列性質:
- 封閉性:對於所有G中a, b,運算a●b的結果也在G中。
- 結合性:對於所有G中的a, b和c,等式 (a●b)●c = a●(b●c)成立。
- 單位元素:存在G中的一個元素e,使得對於所有G中的元素a,等式e●a = a●e = a成立。
- 反元素:對於每個G中的a,存在G中的一個元素b使得a●b = b●a = e,這裏的e是單位元素。
用數學符號的寫法,群 $(G,\cdot)
$ 應該具有下列特性:
- closability: $
\forall a,b \in G \;a \cdot b \in G
$ - associativity: $
\forall a,b,c \in G\; (a\cdot b) \cdot c = a \cdot (b\cdot c)
$ - identity: $
\forall a \in G\; a \cdot e = e\cdot a=a
$ - inversability: $
\forall a \in G \exists a^{-1}\in G\; a^{-1} \cdot a = a \cdot a^{-1} = e
$
如果在《群》當中加入《交換律》,那麼這個群就稱為一個《交換群》(commutative group),或者稱為《阿貝爾群》(abelian group)。
群的範例
舉例而言、《實數》的加法運算,具有《封閉性、結合性、單位元素 0與反元素 -x》,因此《實數與加法》就形成了一個群。
但是《自然數》(不包含負數)的加法運算,就沒有反元素(因為 -a 不在自然數內,所以《自然數與加法》就不算是一個群。
同理、《實數與乘法》、《有理數與乘法》都可以形成一個群,但是《整數與乘法》卻無法形成一個群 (因為反元素 1/n 不是整數)。
在線性代數當中,矩陣可以相加也可以相乘,其加法單位元素為一個全為 0 的矩陣。而且對於 n*n
矩陣的加法也符合《封閉性、結合性、單位元素、反元素》等等性質,因此 《2*2》的矩陣與加法
形成一個群。
而乘法雖然有單位元素為 I,也就是對角線上全是1,其他部分全是 0 的矩陣。但是卻不一定有反元素,因為有些矩陣 A 不具有反矩陣 $A^{-1}
$,所以《矩陣與矩陣乘法》無法形成一個群。
於是《矩陣與乘法》自然就無法直接套用《群論》裡的那些定理,否則就可能會誤用數學定理,造成錯誤了!
對於更詳細的《群》之描述,請參考下列維基百科的文章:
《抽象代數》當中的元素不一定要是數字,運算也不一定會是數字運算,像是《幾何操作》也可以當成一種《運算》作用在《幾何物體》上。
這種想法讓《代數學》可以連結上《幾何學》!
例如在《歐氏幾何》體系中,《公理與定理》在《平移、旋轉、鏡射》等運算下不會改變,因此這些《元素與運算》就形成了《歐氏幾何》中的一個不變群!
於是我們可以用《不變群》的角度來分類幾何學,像是《歐氏幾何、雙曲幾何、橢圓幾何、微分幾何》等等。
如果一個類似群的結構,但是《沒有反元素》,那麼就稱之為《么半群》(Monoid) ,如果《連單位元素也沒有》,那麼就稱之為《半群》。
體 (Field)
在抽象代數中,體(Field)是一種可進行加、減、乘和除運算的代數結構。體的概念是數體以及四則運算的推廣。
在台灣、Field 翻譯為《體》,在中國則翻譯為《域》,以下我們將《兩者混用》,域和體都是指 Field 。
上述的群包含一個運算,而體則是包含兩個運算,像是《實數和加法與乘法》,就形成了一個《體結構》。
通常我們會將體的兩個運算,用加號與乘號代表,寫為《F, +, *》。
體的定義
一個體《F, +, *》必須滿足下列條件:
其中的 《F,+》形成一個《交換群》,《F-{0},*》也形成一個《交換群》。
而且《乘法對加法》還必須具有《分配律》,也就是 $
a*(b+c)=a*b+a*c
$ 。
這樣的一個《具有分配律的雙重交換群》結構 《F, +, *》,就稱為體 (Field)。
體的範例
《實數與乘法和加法》,也就是《R, +, *》就是一個《體結構》。
同樣的《複數與乘法和加法》,也就是《C, +, *》,也形成一個體結構。
《有理數與乘法和加法》,也就是《Q, +, *》,也同樣是一個體結構。
但是《整數與乘法和加法》,則無法形成一個體結構。
不過如果將《自然數對某質數 p 取 mod 運算後的元素,與乘法和加法》結合起來,就可以形成一個《體結構》。
這種進行 mod 之後的體結構,稱為 《有限體》(finite field)或《伽羅瓦體》(Galois field) ,在密碼學上的 RSA 公開金鑰系統,就是在這種《體結構》上運作的加解密系統。
體結構中的加法單位元素通常寫為 0,乘法單位元素通常寫為 1。但是這不代表他們就一定是 0 或 1。
線性代數當中的向量沒有定義乘法,但是有內積與外積,其中一個原因是《向量的乘法運算無法形成一個群》,關於這點請參考下文:
環
而所謂的 《環結構》 和《體結構》僅僅差一點點,差異是《環結構》的《乘法》,可以沒有反元素 (但是有封閉性、結合性、單位元素),也就是《F, *》是一個《么半群》(monoid),那麼這個《F, +, *》結構就稱為《環》。
舉例而言,像是整數的加法與乘法,就形成一個《環結構》,但是因為整數乘法反元素 1/n 有可能不是整數,所以《無法形成體結構》。
抽象代數的定理
當我們對《代數結構》進行了詳細的區分,那麼就可以對各種結構進行數學推演,推演出來的《定理》就可以一層層的適用。
例如:《半群》的定理當然可以被套用在《群》結構裡面,因為一個群當然是個半群。
同樣的、在《環》當中成立的定理,也可以被套用在《體》上面,因為《體》也符合《環》的所有條件。
這就是為何要將《代數》抽象化的原因之一,因為同樣的定理,不需要證明兩次。
舉例而言、在《群論》裏面,有個 《拉格朗日定理》,證明了群漢子群之間的關係,敘述如下:
敘述:設 H 是有限群 G 的子群,則 H 的階整除 G 的階。
其中的 [《階》代表群裡的元素個數](https://zh.wikipedia.org/wiki/%E9%9A%8E_(%E7%BE%A4%E8%AB%96), 這個定理的證明牽涉到了 陪集 與 子群 的概念。
只要我們知道某個《F, +》是個群,那我們就可以套用拉格朗日定理,而不需要重新證明了!
在《么半群》當中,有個定理稱為 克羅恩-羅德斯定理 (Krohn–Rhodes theorem),這個定理可以套用在任何的《么半群》上面,當然也可以套用在任何的《群》上面。
小結
透過《群、體》等嚴格的數學結構,我們可以建構出對應的程式,雖然程式和數學的表達方式,有些時候不太一樣,但其表達的內容是非常一致的。
程式中比較難處理的,主要是關於《無窮大、不可數與精確度》的部分,所以在上述程式中,我們使用《浮點數》Float 代替實數,用《範圍很大的有限》來代替無限,然後用《電腦內部創建的型態,像是物件類的 Group, Field, Complex, Ratio, IntegerField, FloatField, ComplexField 等物件,來表達這些《代數結構》與對應的《數字結構》,這樣就能《用程式的語言表達數學的概念與運作邏輯》了!