置换
置换是代数中的基本元素. 它们有自然的非交换乘积(像矩阵那样),因而可以以紧凑的方式为高度非平庸的结构编码. 置换提供了一种可以表示任何有限群的方法,使之成为在数学、科学、工程甚至艺术等领域许多应用中的关键工具. 特别地,置换在离散对称性的描述中起核心作用.
置换,粗略地说,就是对一个集合的元素进行重新排列,更精确地说,是一个集合到它本身的一一对应. 这里仅考虑元素数目有限的集合. 一个
元素的集合的可能置换数是
,所以即使对中等数目
,就已经有
,即差不多
个置换了.
本教程讨论在 Mathematica 中如何用轮换表示法来对置换进行操作. 另一教程 "置换列表" 则描述其与置换列表表示法的关系. 然后,其它的教程 "置换群" 和 "已命名的群" 描述如何处理置换群,"群论算法" 阐明如何在不用列出所有群元的情况下获取有关信息 .
一个置换的表示
| Cycles | 以不相交轮换的形式表示一个置换时的头部 |
| PermutationCyclesQ | 验证一个置换 |
在 Mathematica 中,一个置换的不相交轮换表示具有形式 Cycles[{cyc1, cyc2, ...}],其中,
是正整数的不相交列表. 在置换下,整数被映射到它们的右邻,而最后一个整数被映射到那个轮换的第一个数. 不在轮换内的整数被映射到它们本身,虽然它们也可以以长度为一的轮换的形式出现. 这种轮换称为 singletons(单元集)或 fixed points. 轮换的排序是无关紧要的,单个的轮换可以进行转动而不致引起置换的改变. 置换是自动正规化的,即每个轮换把最小的整数放在第一位,而所有轮换则按照它们的第一个整数的大小排序.
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
对于包含显式的数字列表的置换,句法会自动得到检查. 其它情况下,用户可以用函数 PermutationCyclesQ 来检查句法.
| In[7]:= |
| Out[7]= |
| In[9]:= |
| Out[9]= |
| In[10]:= |
| Out[10]= |
置换作用和支撑
如果一个置换 perm 将整数
映射到整数
,则称
为在置换 perm 下的
像. 像可以用函数 PermutationReplace 来计算.
| PermutationReplace | 一个置换下一个整数的像 |
| In[11]:= |
| Out[11]= |
| In[12]:= |
| Out[12]= |
置换的标准作用也可以扩展到其它对象上,如其它置换或整数数组.
| In[13]:= |
| Out[13]= |
置换并不被看成是属于任何一个特定的有限群,甚至不属于某一次数的特定对称群. 但是有一个称为支撑的概念,它被定义为被置换所移动的整数的集合.
| PermutationSupport | 被置换所移动的整数的集合 |
| PermutationLength | 被置换所移动的整数的数目 |
| PermutationMax | 被置换所移动的最大整数 |
| PermutationMin | 被置换所移动的最小整数 |
| In[14]:= |
| Out[14]= |
| In[15]:= |
| Out[15]= |
| In[16]:= |
| Out[16]= |
| In[17]:= |
| Out[17]= |
| In[18]:= |
| Out[18]= |
| RandomPermutation | 生成准随机置换 |
| In[19]:= |
| Out[19]= |
| In[20]:= |
| Out[20]= |
置换一个表达式的某些部分
通过函数 Permute,置换可以用来置换其他表达式的某些部分. 整数
被映射到整数
这件事被解释为部分
被移动到了部分
. Permute 永远不会改变一个表达式的元素的数目,它只是将它们重新排序.
| Permute | 置换一个表达式的某些部分 |
| FindPermutation | 返回联系两个具有相同元素的表达式的置换 |
| In[21]:= |
| Out[21]= |
| In[22]:= |
| In[24]:= |
| Out[24]= |
| In[25]:= |
| Out[25]= |
| In[26]:= |
| Out[26]= |
| In[27]:= |
| Out[27]= |
| In[28]:= |
| Out[29]= |
| In[30]:= |
| Out[30]= |
| In[31]:= |
| Out[31]= |
| In[32]:= |
| In[34]:= |
| Out[34]= |
| In[35]:= |
| Out[35]= |
| In[36]:= |
| Out[36]= |
| In[37]:= |
| Out[37]= |
| In[38]:= |
| Out[38]= |
置换的积
| PermutationProduct | 置换的乘积(非交换) |
| InversePermutation | 一个置换的逆 |
| PermutationPower | 一个置换的整数幂(与自身或逆的乘积) |
| PermutationOrder | 一个置换产生逆的最低正幂 |
是意味着先用
后用
(叫做从左到右的乘积)还是先用
后用
(从右到左的乘积). 依照在轮换中把像写成右邻的惯例,Mathematica 的 PermutationProduct 实际上是一个从左到右的乘积.
| In[39]:= |
| In[41]:= |
| Out[41]= |
| In[42]:= |
| Out[42]= |
| 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]:= |
| In[56]:= |
| Out[56]= |
| In[57]:= |
| Out[57]= |
| In[58]:= |
| Out[58]= |
置换的相等和排序
作为 Mathematica 中的标准,有两种类型的相等检验:结构上的相等 (SameQ) 和数学上的相等 (Equal). 前者可以比较任何两个表达式,但后者在比较具有相同数据类型的数学表达式的时候,只返回 True 或 False. 在对表达式进行排序时情形也是一样:有结构上的(正规)次序,这是通过 Order 和 OrderedQ 来实现的;也有数学上的次序,由 Less 及相关函数给出.
任何次数的任何两个置换都可以检验其相等与排序. 这是通过按次序比较整数1、2、3 ... 的像来完成的. 较小的置换对应较小的像,所以恒元置换总是排在第一. 这定义了数学上的次序. 正规次序比照标准规则,且有可能与数学上的次序不同.
| In[59]:= |
| In[61]:= |
| Out[61]= |
| In[62]:= |
| Out[62]= |
| In[63]:= |
| Out[63]= |
| In[64]:= |
| Out[64]= |
| In[65]:= |
| Out[65]= |
| In[66]:= |
| Out[66]= |
置换的特殊类型
有一些特殊类型的置换. 在许多情况下,轮换标记允许用简单的构建来检测它们.
| In[67]:= |
| In[68]:= |
| Out[68]= |
| In[69]:= |
| Out[69]= |
| In[70]:= |
| In[71]:= |
| Out[71]= |
| In[72]:= |
| Out[72]= |
| In[73]:= |
| In[74]:= |
| Out[74]= |
| In[75]:= |
| Out[75]= |
从置换的轮换表示法构造一个对换分解也很简单. 对换是仅有一个长度为2的置换.
| In[76]:= |
| In[78]:= |
| In[79]:= |
| Out[79]= |
| In[80]:= |
| Out[80]= |
| In[81]:= |
| In[82]:= |
| Out[82]= |
| In[83]:= |
| Out[83]= |
| In[84]:= |
| Out[84]= |

