重み一定符号化
先日の問題の一部をどう書く?orgで見つけた.
「組合せ型の最小完全ハッシュ関数」の逆関数 どう書く?orgが下のdecodeの話になっている.
パスカルの三角形をテーブルで持つとnがでかいときに遅すぎる. Fishcer and Sternのアルゴリズム *1 を実装して投稿した.
暗号の立場から言うと一部のナップサック暗号やNTRUを実装する時に必要になる関数.
ウォーミングアップ
俺が知っている問題から一つ. 暗号に使われるので知っている.
長さnのビット列の中でも1の個数がちょうどmのものを考える. とする.
するとS(n,m)の要素数はである.問題:
以下の二つのプログラムを与えよ.
- encode
- 入力:
- 出力:
- decode
- 入力:
- 出力:
*1:元論文のアルゴリズムをベタに実装すると上手く動かないよ