アダマール行列のいくつかのバリアントで遊んでいます。これらの要件を満たすすべての nビットのバイナリ文字列を生成したい:
- nは 4 の倍数であると仮定できます。
- 最初の文字列は 0 nです。
→ すべて 0 の文字列。 - 残りの文字列はアルファベット順にソートされます。
→ 0 は 1 の前に来ます。 - 2 つの異なるnビット文字列ごとに、ハミング距離 n/2があります。
→ 2 つの異なるnビット文字列は、正確に n/2 の位置で一致し、正確にn/2の位置で一致しません。 - 上記の条件により、最初の文字列を除くすべての文字列は、同じ数の 0 と 1 を持つ必要があります。
→ 最初の文字列以外のすべての文字列には、n/2 個の 1 と n/2 個のゼロが含まれている必要があります。 - (更新) すべてのnビット文字列は で始まります
0
。
たとえば、これはn=4の場合に必要なリストです。
0000
0011
0101
0110
2 つの異なる行ごとにハミング距離n/2 = 4/2 = 2があり、リストが他のすべての要件も満たしていることが簡単にわかります。
そのような文字列をすべて生成したいことに注意してください。私のアルゴリズムは、終了する前に0000
, 0011
, の3 つの文字列を出力するだけかもしれません。0101
このリストは上記のすべての要件を満たしていますが、要件を満たしていません0110
。
- そのようなセットを生成する良い方法は何でしょうか?
Python 疑似コードが推奨されますが、高レベルの説明であれば何でもかまいません。 - 特定のnに対するそのような文字列の最大数は? たとえば、n=4の場合、そのような文字列の最大数はたまたま 4 になります。この上限に対して閉じた形式のソリューションがあるかどうか疑問に思っています。
ありがとう。