置换群
群可以有多种不同的表示. 尤其是,所有有限群都可以表示为置换群. 也就是说它们总是和一个
元素集合的自同构对称群
的一个子群同构 (Cayley 定理). 在过去的40年中,高效的处理置换群技术得到发展,使人们能够用计算机对非常大的群进行处理.
Mathematica 为处理范围在几千以内的中等次数的置换群提供了一套命令与算法,因而适用于元素超过
的置换群.
本教程介绍一些计算有限置换群的基本算法,这些有限群是由一系列以不相交轮换的形式给出的生成置换所确定的. 另外一个教程 "置换" 会解释如何处理轮换形式的置换.
生成集
确定一个群的一个简单而紧凑的方法是通过给出一组元素,它们的反复相乘就产生了整个群. 这些元素称为群的生成元,它们组成的集合叫生成集. 这是确定有限群的一个普遍而有力的方法. 当然,对于大型的群而言,可能很难从中获取有关群的信息.
| PermutationGroup | 由生成元定义的置换群的头部 |
| GroupElements | 群元素列表 |
| GroupMultiplicationTable | 群元素所有乘积对的表格(乘法表) |
| CayleyGraph | 连接群元素的生成元的图(凯莱图) |
| In[1]:= |
| In[4]:= |
| Out[4]= | ![]() |
| In[5]:= |
| Out[5]= |
| In[6]:= |
| Out[6]= | ![]() |
| In[7]:= |
| Out[7]= |
对于小型群,可以构造更好的群表示. 它们是凯莱乘法表和凯莱图,后者既代表了整个群的信息,也代表了所用的生成元的信息.
| In[8]:= |
Out[8]//TableForm= | |
![]() | |
| In[9]:= |
| Out[9]= |
| In[10]:= |
| Out[10]= |
| In[11]:= |
| Out[11]= | ![]() |
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
| In[14]:= |
| Out[14]= |
轨道和稳定子群
给定作用于一些点的一个集合的置换群的任何生成集,就有可能找出其它哪些点可以和给定的一个点相联系. 这被称为那个点的轨道(orbit ).
| GroupOrbits | 计算一个群作用下点的轨道 |
| In[15]:= |
| In[18]:= |
| Out[18]= |
| In[19]:= |
| Out[19]= |
点不能同时属于两条不同的轨道,因而轨道将群所作用的点的集合进行了分区.
| In[20]:= |
| Out[20]= |
| In[21]:= |
| Out[21]= |
| In[22]:= |
| Out[22]= |
| In[23]:= |
| Out[23]= | ![]() |
| In[24]:= |
| In[25]:= |
| Out[25]= |
| In[26]:= |
| In[27]:= |
| Out[27]= |
| In[28]:= |
| Out[28]= | ![]() |
轨道描述点如何运动. 作为对轨道所提供的信息的补充,也可以计算稳定子群,即保持一个或几个点不动的群元组成的子群.
| GroupStabilizer | 保持一个或几个点不动的群元组成的子群 |
| In[29]:= |
| Out[29]= | ![]() |
| In[30]:= |
| Out[30]= | ![]() |
| In[31]:= |
| Out[31]= |
| In[32]:= |
| Out[32]= |
| In[33]:= |
| Out[33]= |
强生成集表示
对于较大的置换群,对所有元素进行列表或画图会变得越来越不方便. 这种情况下,有必要寻求别的方法,以便可以从群的生成集中获取群的信息,而不必去计算所有的置换. 该方法的关键思想是六十年代后期发展起来的,其基础是对同一个群构造一个新的等价的生成集,但从该生成集很容易形成一个子群层级,使得对整个群能够进行快速操作. 这个特殊形式的生成集叫强生成集(strong generating set).
| GroupOrder | 群元数 |
| GroupElementQ | 检验一个置换是否属于一个给定的群 |
| In[34]:= |
| In[37]:= |
| Out[37]= |
| In[38]:= |
| Out[38]= |
| In[39]:= |
| Out[39]= |
| In[40]:= |
| Out[40]= |
| In[41]:= |
| Out[41]= |
| In[42]:= |
| Out[42]= |
现在返回来看看强生成集的性质. 强生成元是根据基(base)来定义的: 这是群作用的区域上的点的一个有序子集,对该子集,恒元是唯一保持其所有点不变的群元. 这意味着,知道置换下一个基中的点的像,就可唯一地确定这个置换. 对于已知一个较短的基的群,操作起来会是很高效的. 基定义了一个非常有用的稳定子群的层级,被称为稳定子群链. 它在置换群操作中起核心的作用,与线性代数中矢量空间的高斯-消去分层非常相似. 最后,使一个生成元的集合对于一个基具有强 (strong)的特征的条件是它包含相应稳定子群链中所有子群的生成子集.
| GroupStabilizerChain | 一个置换群的稳定子群链 |
| GroupActionBase | 指定一个群的一个基的选项 |
| In[43]:= |
| Out[43]= | ![]() |
| In[44]:= |
| Out[44]= | ![]() |
| In[45]:= |
| Out[45]= |
| In[46]:= |
| Out[46]= | ![]() |
| In[47]:= |
| Out[47]= |
| In[48]:= |
| Out[48]= | ![]() |
| In[49]:= |
| Out[49]= |
| In[50]:= |
| Out[50]= | ![]() |
| In[51]:= |
| Out[51]= |
| In[52]:= |
| Out[52]= |
| In[53]:= |
| Out[53]= |
| In[54]:= |
| Out[54]= |
| In[55]:= |
| Out[55]= |
| In[56]:= |
| Out[56]= |
| In[57]:= |
| Out[57]= |
| In[58]:= |
| Out[58]= |
| In[59]:= |
| Out[59]= | ![]() |
示例:Rubik 魔方群
一个最著名的置换群与魔方(Rubik)的转动相关. 在下面的图形中,移动魔块儿用数字1到48表示. 中心的魔块儿不动,分别定义了六个基本转动:
| In[60]:= |
| In[67]:= |
| Out[67]= |
| In[68]:= |
| In[69]:= |
| Out[69]= | ![]() |
| In[70]:= |
| Out[70]= | ![]() |
| In[71]:= |
| Out[71]= |
| In[72]:= |
| Out[72]= |
| In[73]:= |
| Out[73]= |
| In[74]:= |
| Out[74]= |
其它示例
| In[75]:= |
| In[78]:= |
| Out[78]= |
| In[79]:= |
| Out[79]= |
| In[80]:= |
| Out[80]= | ![]() |
| In[81]:= |
| In[84]:= |
| Out[84]= |
| In[85]:= |
| Out[85]= | ![]() |
























