- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 特殊排列的算法
全排列是集合中全部元素的排列,并且每一个排列中的元素都不会重复。实际应用中,还会遇到各种特殊的排列,例如集合中一部分元素的排列,允许元素重复的排列等。现在来看一看产生各种特殊排列的算法。 递归形式的回溯算法如下://全排列(递归)//输入:排列元素个数n//输出:n个元素的全体排列#include#include using namespace std;
2016-01-13 10:24:03
762
原创 全排列的算法(八)——序数法
全排列的生成算法(八)——序数法 n个元素的全排列有n!个,如果将排列按顺序编号,并能够按照某种方法建立起每一个序号与一个排列之间的对应关系,那么就可以根据序号确定排列,反过来也可以根据排列确定它的序号。根据排列的序号生成对应排列的方法就称为序数法。通常,我们使用的计数法是十进制数。十进制数的位权是10,也就是逢十进一。另外还有二进制、八进制和十六进制等,它们的位权分别是2、8和16。
2015-03-12 09:19:18
7877
原创 全排列的算法(七)——递归算法
全排列的生成算法(七)——递归算法 当排列采用递归方式定义时,可以直接从他的定义出发来生成全体排列。如果用P表示n个元素的排列,而Pi表示不包含元素i的排列,(i)Pi表示在排列Pi前加上前缀i的排列,那么,n个元素的排列可递归定义为:如果n=1,则排列P只有一个元素i如果n>1,则排列P由排列(i)Pi构成(i=1、2、....、n-1)。根据定义,容易看出如果已经生成了
2015-03-02 11:11:51
1212
原创 全排列的算法(六)——回溯法
全排列的生成算法(六)——回溯法回溯法通常是构造一颗生成树。以3个元素为例;树的节点数据可取值是1、2、3。如果某个节点为0,则表示尚未取值。初始状态是(0,0,0),第1个元素值可以分别挑选1,2,3,因此扩展出3个子结点。用相同方法找出这些结点的第2个元素的可能值,如此反复进行,一旦出现新结点的3个数据全非零,那就找到了一种全排列方案。当尝试了所有可能方案,即获得了问题的解答。回溯
2015-02-24 09:41:27
4643
原创 全排列的算法(五)——邻位互换法
5.邻位互换法是由Johnson-Trotter首先提出。如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。用这种方法可以产生出任意n个元素的排列。但是,为了产生n个元素的排列,我们必须知道并存储所有n-1个元素的排列,然后才能产生出所有n阶排列,这是一个很大的缺点。该算法的实质是交换排列中某两个相邻的元素来产生一个新的排列。按照下面所说的算法就可以从原始排列开
2015-02-17 16:13:38
8292
原创 全排列的算法(四)——n进位法
n进位法这个算法是将初始排列012……(n-1)作为一个n进制数,然后对它累加1,从而生成全体排列。这个算法比较简单,但是在累加过程中,会出现重复元素,所以需要将有重复元素的排列删除。这是这个算法的缺点。从一个排列生成一个新的排列的算法如下:第一步:在排列的第n-1 位累加1。第二步:如果其和大于n-1,就进位,发生连续进位就连续进位直至不再发生进位为止。无进位继续。第三步:检
2015-02-08 11:09:09
1867
原创 全排列的算法(三)——递减进位法
在递增进位法中,逆序序列最低位是逢2进1,进位频繁,这是它的一个缺点。排列的逆序序列q0,q1,……,qn-1中记录的是每个排列的元素左边比该元素大的元素个数,如果将它改成记录每个元素右边比该元素小的元素个数,就得到了一个新的序列a0,a1,……,ai,……,an-1,我们称它为中介数序列,它具有与逆序序列相似的性质:a0=0,0≤a1≤1,0≤a2≤2,……,0≤ai≤i,……0≤an-1≤
2015-02-02 14:30:02
2148
原创 全排列的算法(二)——递增进位法
2.递增进位制数法集合{1、2、……n-1、n}的全排列中,只有原始排列12……n的各个元素的顺序是自然顺序,其余排列的元素的顺序都要改变。为了说明元素间顺序的改变,引入了排列的逆序的概念,它在行列式理论中起着重要的作用。设集合{1,2,……,n}的一个排列是 p0p1……pn-1,如果对于任意的k和l(0≤k,l≤n-1),当kpl,则称数对(pk,pl)是排列 p0p1……pn-1 的
2015-01-22 16:10:01
1958
原创 排列的算法(一)——字典序算法
从n个不同元素中取出n个元素的排列,称为n个不同元素的全排列。全排列的生成算法就是对于给定的元素集合,用有效的方法将所有可能的全排列无重复无遗漏地列举出来。
2015-01-14 10:49:53
8867
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人