我的抽象代數系列課程先從一個智力遊戲說起,可能有的人玩過這個遊戲,這是節數學科普課,默認讀者沒有學過群論,這個遊戲中包含的置換的思想也就是群論的雛形,人們在研究了置換之後于是發明了群這個結構。這個遊戲就是數字華容道,有一個正方形的外框,裡面有十五個小正方形滑塊,下圖中#井号表示的是空。由于有了這個空,滑塊就可以滑動,遊戲的目标是讓打亂的數字通過滑塊移動最終按順序排列起來。很多人小時候玩過滑塊拼圖遊戲,原理跟這個是一樣的,有人通過摸索會掌握這個遊戲的竅門,現在我從數學上來探究這個數字華容道,當你掌握了數學原理,你甚至可以自己創造讓某個滑塊從A點移動到B點而其他保持不變的公式。
可以看到,如果按圖表所示,讓3和1交換,15和2交換...,這樣能夠複原數字華容道,可是按照規則,滑塊隻能滑動,把這個規則抽象出來就是,隻能#和相鄰的數字交換,每一個步驟必定是有#參與。其實圖表所示的就是一個置換。我們中學就學過函數,置換可以看作特殊的函數,定義域的元素和值域元素相同,而且都是有限的。
3和1交換用置換的寫法就是(1 3),隻有兩個元素位置改變稱作對換。玩遊戲的時候每一步相當于井号和相鄰的數字交換,如(# a1),(# a2),完成兩步相當于兩個對換相乘,置換乘法的定義本質是函數的複合。
例如第一步(# a1),第二步(# a2),兩步之後的結果,就是(# a2)(# a1),假如将(# a1)看作f(x),(# a2)看作g(x),(# a2)(# a1)的意思就是g[f(x)],也就是函數的合成。考慮(# a2)(# a1)中元素的變化,#在第一步變成a1,在第二步沒有變;a1在第一步中變成#,第二步中由#變成a2;a2在第一步中沒變,在第二步中變成#。所以
(# a2)(# a1)=(# a1 a2),這是一個三階循環置換。所以上面的置換不能寫成(3 1)(15 2)(4 3)(12 4)(10 5)(11 6)(1 7)(2 8)(8 9)(5 10)(13 11)(9 12)(6 13)(7 14)(14 15),那上表的置換應該怎麼表示呢?
置換的完全分解是指将置換分解為不相交的循環置換,并且含有每個1-循環置換。這個置換完全分解就是(1 7 14 15 2 9 12 4 3)(5 10)(6 13 11)(8)(#)
要赢得這個遊戲,就是要找到(# a(n))(# a(n-1))...(# a2)(# a1)這樣的序列,使得(# a(n))(# a(n-1))...(# a2)(# a1)=(1 7 14 15 2 9 12 4 3)(5 10)(6 13 11)(8)(#)
在置換理論裡有個定理,是說若一個置換能夠表示成偶數個對換的乘積,那麼它隻能被表示成偶數個對換的乘積;若一個置換能夠表示成奇數個對換的乘積,那麼它隻能被表示成奇數個對換的乘積。這個定理的證明此文就不涉及了,因為需要很多定義和定理的鋪墊。後面講抽象代數課程時會循序漸進地把重要的定理依次證明。這個遊戲的起始狀态和複原的狀态相比#位置沒有發生變化,遊戲的每一步#都在和相鄰數字交換,可以肯定的是隻有經過偶數步#才能位置不變,假如向上有N步,一定向下也會有N,才能保證#位置不變,向下向左向右同理。(1 7 14 15 2 9 12 4 3)(5 10)(6 13 11)(8)(#)這個置換,符号=(-1)^(16-5)=-1是一個奇置換,所以這個圖示的這種初始狀态,要複原是不可能,别再傻傻的移動滑塊了,縱使嘗試億萬次還是不可能成功。這就是數學的力量,它能讓你真正地玩透這個遊戲。
,