特定の順列を見つける方法 
順列の問題で、ある順列が何番目にあるかを考えることは意味ある問題である。
例1 A、B、C の3個の異なったものを並べる順列の数は、3!=6 (通り)ある。
実際に、それらを求めれば、
ABC、ACB、BAC、BCA、CAB、CBA
である。ここで、辞書式配列とは、 各単語をアルファベットの順番に並べたものをいい、
上記の6個の単語を、辞書式に並べて番号をつければ、下表のようになる。
| 1 | 2 | 3 | 4 | 5 | 6 |
| ABC | ACB | BAC | BCA | CAB | CBA |
従って、上の表から、BAC は、3番目の単語であり、また、4番目の単語は、BCA
である。
使われる文字の個数が少ないうちは、上記のように、全ての順列を辞書式に書き出して考
えればよいが、文字の個数がある程度大きい場合は、計算によって求められる。
例2 A、B、C、D、E の5個の異なったものを並べる順列を考え、それらを辞書式に並べる。
このとき、CBEDA は何番目の単語だろうか。また、88番目の単語は何であろうか。
(解) A**** のタイプの単語は、4!=24 (通り)
B**** のタイプの単語は、4!=24 (通り)
CA*** のタイプの単語は、3!=6 (通り)
CBA** のタイプの単語は、2!=2 (通り)
CBD** のタイプの単語は、2!=2 (通り)
CBE** のタイプの単語は、CBEAD、 CBEDA の2通り。
従って、CBEDA は、24+24+6+2+2+2=60 (番目)
上と同様にして、
A**** のタイプの単語は、4!=24 (通り)
B**** のタイプの単語は、4!=24 (通り)
C**** のタイプの単語は、4!=24 (通り)
DA*** のタイプの単語は、3!=6 (通り)
DB*** のタイプの単語は、3!=6 (通り)
DCA** のタイプの単語は、2!=2 (通り)
DCB** のタイプの単語は、2!=2 (通り)
このとき、24+24+24+6+6+2+2=88 なので、88番目の単語は、
DCB** のタイプの単語の最後のもの、すなわち、DCBEA である。
このような求め方は、教科書・参考書・問題集に通常あるもので、私自身も、この解法以外
に知らなかった。
ところが、最近、このような問題に対して、非常に面白い解法が存在することを知った。
| 1 | 2 | 3 | 4 | 5 | 6 |
| ABC | ACB | BAC | BCA | CAB | CBA |
文字の個数が3個の場合について、説明しよう。
まず、1番目、2番目、・・・、6番目という数を、0!を含む、2(=3−1)以下の数の階乗の
倍数に分解する。ただし、0!(=1)の係数は、常に 1 になるようにする。
1=0・2!+0・1!+1・0!
2=0・2!+1・1!+1・0!
3=1・2!+0・1!+1・0!
4=1・2!+1・1!+1・0!
5=2・2!+0・1!+1・0!
6=2・2!+1・1!+1・0!
次に、各係数に1をプラス(0!の係数はそのまま)して、単語を確定するための序数を作る。
たとえば、5=2・2!+0・1!+1・0!から、5番目の単語を求める序数
3(=2+1)、1(=0+1)、1
が得られる。次のようにして、5番目の単語が求められる。
| 使用可能文字 | 序数 | 使用する文字 |
| A、B、C | 3 | C |
| A、B | 1 | A |
| B | 1 | B |
(← 3番目の文字 C を使用)
(← 上で、C が使われたので、使える文字は、A、B)
したがって、求める単語は、 CAB となる。
この解法を用いれば、5個の文字の場合についても、次のように解くことができる。
まず、
88=3・4!+2・3!+1・2!+1・1!+1・0!
なので、
88番目の単語を求める序数は、4、3、2、2、1 である。
| 使用可能文字 | 序数 | 使用する文字 |
| A、B、C、D、E | 4 | D |
| A、B、C、E | 3 | C |
| A、B、E | 2 | B |
| A、E | 2 | E |
| A | 1 | A |
左の表から、求める単語は、
DCBEA
で、これは、先の結果と一致する。
上記の解法は、例2における計算の仕組みを整理したもので、美しい解法として、幾ばくかの
魅力を感じるものである。
読者のために、練習問題を残しておこう。
A、B、C、D、E、F、G、H の8個の異なったものを並べる順列を考え、それらを辞書式に並
べる。このとき、12345番目の単語は何であろうか。
(答)CEAHDFBG
(参考文献:J.A.H.ハンター、J.S.マダチー 著 田中 勇 訳
数学レクリエーション (白揚社))