「ぎょーむ日誌」目次に戻る | KuboWeb top に戻る | twilog | atom

ぎょーむ日誌 2004-01-05

苦情・お叱りは, たいへんお手数かけて恐縮ですが, 久保 (kubo@ees.hokudai.ac.jp) までお知らせください.

2004 年 01 月 05 日 (月)

	 正の整数Tを正の整数の和で表すとき、分け方は何通りかあります。たとえば、
	T=2なら
	2=2、2=1+1
	の2通り、
	T=3なら
	3=3、3=2+1、3=1+1+1
	の3通り、という具合です。Tに対して何通りの分け方があるか求める方法は、”整
	数の分割”や”分割数”といった名前で確率の本によく載っています。
	 私がいま知りたいのは、Tについて何通りの分け方があるかではなく、その個々の
	分け方をすべて与えるアルゴリズムです。たとえば、T=3なら、3通りというのでは
	なく、3、2+1、1+1+1というのが知りたいわけです。
	簡単にできる「はず」のものにえらく時間を費してしまいました.
	手のこんだ現実逃避というところでしょうか.

	とりあえず Perl で書いてみました.スクリプトはこのメイルの末
	尾にあります.粕谷さんの質問されてた「アルゴリズム」の一例は
	このスクリプトの partition サブルーチンのごとし,ということ
	で (これは再帰を使ってるので短いですね).
	実行すると,

	$ ./enum_partitions.pl 5
	5
	4 + 1
	3 + 2
	3 + 1 + 1
	2 + 2 + 1
	2 + 1 + 1 + 1
	1 + 1 + 1 + 1 + 1

	となります.

	どなたか親切なかた,R で書いてください (当方もはや燃えつき).
	たぶんもっと簡単にかける「はず」です.

KuboLog | KuboWeb