階乗番号システム
表示
組み合わせ論において、階乗番号システム(かいじょうばんごうシステム、factorial number systemまたfactoradic)とは、置換に番号を振るための混在基数システムである。n!未満の数を階乗番号システムに変換すると、n個の数の列が得られる。この列は、置換とみなすことができる。この変換にはLeher codeを用いても、逆引きテーブル表現[1]として行ってもよい。
一般的な混合基数システムはゲオルク・カントール[2]によって研究された。「階乗番号システム」という用語はドナルド・クヌース[3]によって使用された。
定義
[編集]階乗番号システムは、混合基数システムの一つである。i桁目には、0からi-1までの数を置くことができる。i桁目にjを置くことによって、jに(i-1)!を掛けた数を表現する。すなわち、i桁目の重みは(i-1)!である。
桁 | 置ける数 | 重み | 表現される数 |
---|---|---|---|
1桁目 | 0 | 0! | 0 (= 0 * 0!) |
2桁目 | 0か1 | 1! | 0 (= 0 * 1!)か1 (= 1 * 1!) |
3桁目 | 0,1,2のいずれか | 2! | 0 (= 0 * 2!), 2 (= 1 * 2!), 4 (= 3 * 2!)のいずれか |
4桁目 | 0,1,2,3のいずれか | 3! | 0 (= 0 * 3!), 6 (= 1 * 3!), 12 (= 2 * 3!), 18 (= 3 * 3!)のいずれか |
1桁目は常に0であり、0しか表現できない。
この記事では、階乗番号システムによる表記は下付きの "!"によって表記する。例えば341010!は
- =3×5! + 4×4! + 1×3! + 0×2! + 1×1! + 0×0!
- =((((3×5 + 4)×4 + 1)×3 + 0)×2 + 1)×1 + 0
- = 463
を表現する。
逆に463を階乗番号システムに変換するには、除算を繰り返す。
- 463 ÷ 1 = 463, 余り 0
- 463 ÷ 2 = 231, 余り 1
- 231 ÷ 3 = 77, 余り 0
- 77 ÷ 4 = 19, 余り 1
- 19 ÷ 5 = 3, 余り 4
- 3 ÷ 6 = 0, 余り 3
例
[編集]置換
[編集]分数
[編集]出典
[編集]- ^ Knuth, D. E. (1973), “Volume 3: Sorting and Searching”, The Art of Computer Programming, Addison-Wesley, pp. 12, ISBN 0-201-89685-0
- ^ Cantor, G. (1869), Zeitschrift für Mathematik und Physik, 14.
- ^ Knuth, D. E. (1997), “Volume 2: Seminumerical Algorithms”, The Art of Computer Programming (3rd ed.), Addison-Wesley, pp. 192, ISBN 0-201-89684-2.
- Mantaci, Roberto; Rakotondrajao, Fanja (2001), “A permutation representation that knows what "Eulerian" means” (PDF), Discrete Mathematics and Theoretical Computer Science 4: 101–108.
- Arndt, Jörg (March 5, 2009). Algorithms for Programmers: Ideas and source code (draft). pp. 224–234
外部リンク
[編集]置換を構成する数字は1から始まっていることに注意。