算法——置换与排列【基础】
1. 排列(Permutation)
- 定义:排列是指从一组元素中按照一定顺序选取部分或全部元素的不同方式。排列强调顺序。
- 公式:
- 从n个不同元素中取k个的排列数:( P(n, k) = \frac{n!}{(n-k)!} )
- 全排列(k=n):( P(n, n) = n! )
例子1:从数字 {1, 2, 3} 中取2个的排列
所有可能的排列(顺序不同则视为不同):
(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)
共 ( P(3, 2) = 6 ) 种。
例子2:字母 {A, B, C} 的全排列
所有顺序组合:
ABC, ACB, BAC, BCA, CAB, CBA
共 ( 3! = 6 ) 种。
2. 置换(Permutation in Group Theory)
- 定义:在群论中,置换是指一个集合到自身的双射(一一对应)函数。通常用轮换表示法或排列符号描述。
- 表示方法:
- 两行表示法:第一行写原顺序,第二行写映射后的顺序。
- 轮换表示法:用循环表示元素的映射关系。
例子1:集合 {1, 2, 3} 的一个置换
两行表示法:
( \sigma = \begin{pmatrix} 1 & 2 & 3 \ 2 & 3 & 1 \end{pmatrix} )
轮换表示法:( (1\ 2\ 3) )(表示1→2→3→1)。
例子2:恒等置换(不改变任何元素)
两行表示法:
( \sigma = \begin{pmatrix} 1 & 2 & 3 \ 1 & 2 & 3 \end{pmatrix} )
轮换表示法:( (1)(2)(3) ) 或 ( e )。
3. 区别与联系
特征 | 排列 | 置换 |
---|---|---|
定义 | 有序选取或排列元素的方式 | 集合到自身的双射函数 |
顺序重要性 | 是(顺序不同则排列不同) | 是(映射顺序决定置换) |
表示方法 | 列表(如 (1, 2, 3)) | 两行法或轮换(如 (1 2 3)) |
应用场景 | 组合数学、概率统计 | 群论、对称性研究 |
4. 图示区分
排列图示(以 {1, 2, 3} 的排列为例):
(1, 2) (1, 3) (2, 1)
(2, 3) (3, 1) (3, 2)
强调元素的顺序组合。
置换图示(以 ( \sigma = (1\ 2\ 3) ) 为例):
1 → 2 → 3 → 1
强调元素的映射关系。
5. 用途
-
排列:
- 计算密码的可能性(如4位PIN码)。
- 排序算法中的比较(如快速排序的划分方式)。
-
置换:
- 描述对称操作(如正三角形的旋转对称)。
- 加密算法(如DES中的置换盒)。
总结
- 排列是“有序选择”,关注元素的顺序排列。
- 置换是“重新映射”,关注集合内部元素的对应关系。
- 当排列的对象是集合自身(即全排列)时,排列与置换的概念重合。
通过例子和图示可以清晰看到:排列是置换的一种表现形式,而置换是排列的抽象化。