置换列表
处理置换的一个可能途径是把它们与一个列表的元素的重新排列相联系. 这是用于置换的组合方法中的一个标准观点,该观点将着眼点转向被置换的表达式,而不是置换本身. 这一向是 Mathematica 中对置换列表(permutation lists) 的隐性解释,即是对 Range[n] 的重新排列,其中,n 是某非负整数. Mathematica 中的一些函数可以对置换列表进行基本的操作. 现在又增加了另外一些函数应用于置换列表,并把它们转化到它们的不相交轮换的形式.
| PermutationListQ | 激活一个整数的列表,作为 |
| PermutationSupport | 被一个置换移动了的点 |
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
置换列表可以和不相交轮换形式相互转换. 这和改进形式的 Combinatorica 程序包中的函数 ToCycles 和 FromCycles 相似.
| PermutationCycles | 将置换转换为不相交轮换形式 |
| PermutationList | 将置换转换为置换列表 |
| In[5]:= |
| Out[5]= |
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| In[9]:= |
| Out[9]= |
| In[10]:= |
| Out[10]= |
| In[11]:= |
| Out[11]= |
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
应用函数 Part 和 Permute,置换列表可以用来置换一个表达式的某些部分. 这两个函数有两点不同:首先,根据置换列表的长度,Part 可能会改变表达式参数的个数,而 Permute 永远不会该变个数. 第二,Part 和 Permute 对置换的诠释方法不同.
| Part | 返回一个子表达式,并有可能对其元素重新排序 |
| Permute | 按照一个置换所给顺序对一个表达式的元素进行置换 |
| FindPermutation | 计算把第一个列表挪到第二的置换 |
| In[14]:= |
Permute 对元素进行重新排序:第一个元素进到第四个元素的位置,以此类推. 元素的数目不改.
| In[15]:= |
| Out[15]= |
Part 提取子表达式,可能改变结果的长度. 为了获取等价结果,需要逆转置换列.
| In[16]:= |
| Out[16]= |
Permute 的第二个参量也可以采用轮换式标记.
| In[17]:= |
| Out[17]= |
| 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]:= |
| Out[24]= |
可以应用 Mathematica 的标准命令,用置换列表进行置换运算.
| Part | 置换列表积 |
| Ordering | 置换列表逆 |
| Range | 恒等置换列表 |
| RandomSample | 置换列表的准随机生成 |
| In[25]:= |
| In[26]:= |
| Out[26]= |
用 Part,逆转参数的顺序,可以获得相同的结果.
| In[27]:= |
| Out[27]= |
| In[28]:= |
| Out[28]= |
| In[29]:= |
| Out[29]= |
| In[30]:= |
| Out[30]= |
任何长度的恒等置换列表都可以用 Range 来表示.
| In[31]:= |
| Out[31]= |
| In[32]:= |
| Out[32]= |
置换列表中的另一个重要用途是使用 Transpose 对数组进行转置,这一般会导致一个不同置换尺寸的数组.
| In[33]:= |
| Out[33]= | ![]() |
| In[34]:= |
| Out[34]= |
| In[35]:= |
| Out[35]= |
| In[36]:= |
| Out[36]= |



