生成排列組合(Brualdi第4章)筆記

2021-05-21 19:59:24 字數 1404 閱讀 9657

stirling公式:n! ~ sqrt(2*π*n)(n/e)n

生成演算法1johnson,trotter

要生成全排列n,則在全排列n-1上,每個排列用插空法插入n

n=2:

12

21

n=3:

1    23

132  

31    2

32    1

231

2    13

生成演算法2:s.even, algorithm combinatorics, 1973

如果乙個數k的箭頭指向乙個比他小的相鄰的數,那麼稱k是活動

對於1..n的序列中的整數n,除以下兩種情況外,n總是活動的

1. n在最左邊,n的箭頭指向左

2. n在最右邊,n的箭頭指向右

生成方法:從123..n開始(每個肩頭初始指向左),做:

1. 求出最大的活動整數m

2. 交換m和其指向的整數

3. 交換所有p>m的整數p的方向

直到序列中沒有活動整數為止。

生成所有組合方案:

基2演算法:

從an-1..a2a1a0=00..0開始,當an-1..a2a1a0!=11..1,做

1. 求出最小的j使得aj=0

2. 用1替換aj並用0替換所有aj-1aj-2..a0

生成的序稱為n元組的字典序

gray碼生成:

演算法1:

1. 1階gray碼是0, 1

2. 假設n-1階gray碼已經生成,首先給n-1階gray碼前面加0,再給逆序n-1階gray碼前面加1。

演算法2:

從an-1..a2a1a0=00..0開始,當an-1..a2a1a0!=10..0,做

1. 如果σ(an-1..a1a0)為偶數,則改變a0

2. 否則,找最小的j使得aj=1,改變aj+1

生成r-組合:

令 a1a2

..ar是1..n的乙個組合。字典序中,第乙個組合是12..r。當a1a2

..ar不是(n-r+1)(n-r+2)..n,令k是滿足ak+1<=n且ak+1不是a1, a2

..ar的最大整數,使用序列a1a2

..ak-1(ak+1)(ak+2)..(ak+r-k+1)

例如:n=6的4組合中,1234的下乙個組合是1235,2356的下乙個組合是2456

c 排列組合排序 排列組合 組合數專題

書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...

排列組合實現

演算法 與網際網路 組合演算法 本程式的思路是開乙個陣列,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的...

排列組合 HNOI

我這方面比較水就只提供兩道題吧 1.hnoi2008 prison 監獄有連續編號為1.n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄此題略水,屬於hnoi送分題系列,用補集的思想可以輕鬆過。可能越獄...