最近在唸代數結構時 一直覺得「結構搭上操作」的形式很物件導向
1. 群
不過就是個集合 搭上操作 GxG → G
(x, y)|→ x+y
且此操作滿足一些條件
2. 環
不過就是個加法交換群 搭上元素的乘法 GxG → G
(x, y)|→ x*y
且此操作滿足一些條件
3. 體
不過就是個 可除交換環
4. 向量空間
不過就是個 加法交換群 搭上 純量(體)乘法 FxV → V
(r, v)|→ r*v
滿足一些條件
5. 李代數
不過就是個 向量空間 搭上 李括號 LxL → L
(x, y)|→ [x,y]
滿足一些條件
───────────────────────────────────
題外話 之前我曾懷疑定義這些東西到底有沒有用啊
我現在的解釋是 這些東西幾乎涵蓋了所有本質上簡潔美麗的規則
所以任何學門
對於探討真理的本質時
只要那個本質夠美麗 層層溯源而上 必定會追溯到這些代數結構
───────────────────────────────────
我最近試圖把這些代數結構看成 c++ 的 class
(聽說是有人真的實做過了)
譬如說(有限)群 可能就是
class group{
public:
int order; // 群中有多少元素
int* element; // 給群中所有元素一個編號
int** op; // op[x][y] 存 群中把x對y的操作丟到哪個元素
// 建構函式
group(int,int*,int**); // 硬填值進去
bool isGroup(); // 檢查填進去的值是否滿足群的運算公理
group(int,int); /* 前者是個元素 後者是該元素 order
生成以該元素生成的 cyclic group */
//一般性質
bool isAbelian();
bool isSolvable();
bool isSimple();
group centralizer(group);
group normalizer(group);
....etc
};
而 環 體 向量空間 李代數便可以一層層疊上去
數學家不斷的發現這些 classes 中的性質函式並且維護程式碼
或是發明新的演算法來降低函式的運算複雜度
譬如說
isSimple() 這個函式在最初我們可能只能用 DFS 去搜所有可能的子集
然後逐個子集判斷它是否 normal in G
但是在有限單群分類定理出來以後 便看看它是否與 交替群、李群或26個例外同構
不過 我們是在替真理寫程式
沒有留言:
張貼留言