置换列表

处理置换的一个可能途径是把它们与一个列表的元素的重新排列相联系. 这是用于置换的组合方法中的一个标准观点,该观点将着眼点转向被置换的表达式,而不是置换本身. 这一向是 Wolfram 语言中对置换列表(permutation lists) 的隐性解释,即是对 Range[n] 的重新排列,其中,n 是某非负整数. Wolfram 语言中的一些函数可以对置换列表进行基本的操作. 现在又增加了另外一些函数应用于置换列表,并把它们转化到它们的不相交轮换的形式.
PermutationListQ
激活一个整数的列表,作为 {1,,n} 的重新排列
PermutationSupport
被一个置换移动了的点
置换列表的基本功能.
这是一个10个整数的列表:
验证它确实是始于1的相连整数的一个重新排列:
置换列表的支撑是不在其自然位置的点的列表:
如果整数的列表是有序的,则它的支撑是空的:
置换列表可以和不相交轮换形式相互转换. 这和改进形式的 Combinatorica 程序包中的函数 ToCyclesFromCycles 相似.
PermutationCycles
将置换转换为不相交轮换形式
PermutationList
将置换转换为置换列表
与轮换形式的相互转换.
采用一个置换列表:
构建置换列表的轮换形式,默认情况下,单元集被剔除了:
选择任何其它头部将保留单元集:
与以下作一比较:
反过来,也可以将一个轮换对象( cyclic object)转化成任意长度的置换列表:
默认时,长度取轮换中出现的最大整数:
上面这个函数容许改变置换列表的长度而保持它的支撑不变:
应用函数 PartPermute,置换列表可以用来置换一个表达式的某些部分. 这两个函数有两点不同:首先,根据置换列表的长度,Part 可能会改变表达式参数的个数,而 Permute 永远不会该变个数. 第二,PartPermute 对置换的诠释方法不同.
Part
返回一个子表达式,并有可能对其元素重新排序
Permute
按照一个置换所给顺序对一个表达式的元素进行置换
FindPermutation
计算把第一个列表挪到第二的置换
对表达式的置换.
采用一个表达式和一个置换列表:
Permute 对元素进行重新排序:第一个元素进到第四个元素的位置,以此类推. 元素的数目不改:
Part 提取子表达式,可能改变结果的长度. 为了获取等价结果,需要逆转置换列:
Permute 的第二个参量也可以采用轮换式标记:
也可以用一个置换群,它被解释为一个置换的集合:
Permute 的作用能够用 FindPermutation 反过来, FindPermutation 返回轮换式标记:
如果将参量反转,可以得到一个逆置换:
可以应用 Wolfram 语言的标准命令,用置换列表进行置换运算.
Part
置换列表积
Ordering
置换列表逆
Range
恒等置换列表
RandomSample
置换列表的准随机生成
针对置换列表重新解释的标准命令.
采用两个长度相同的置换列表:
这是它们的成绩,从左至右:
Part,逆转参数的顺序,可以获得相同的结果:
置换列表的逆可以通过 InversePermutation 或者 Ordering 计算得到:
这两个置换列表的积给出了恒等置换列表:
任何长度的恒等置换列表都可以用 Range 来表示:
恒等列表的随机重新排序都是有效的置换列表:
置换列表中的另一个重要用途是使用 Transpose 对数组进行转置,这一般会导致一个不同置换尺寸的数组.
以尺寸不等的矩形数组为例:
转置后的数组具有置换尺寸: