バランスの取れたベクトルの迅速なエンコード


10

これは、いずれかのことを見ることは容易である 1-1のマッピングが存在するFは {0,1}からN {0,1}にN + O ログN いずれかのようなxはベクトルF Xのです"バランス」、つまり1と0の数が等しい。そのようなFを定義して、与えられたxF x )を 効率的に計算できるようにすることは可能ですか?nFnn+O(logn)xF(x)FxF(x)

ありがとう。


「効率的」とはO(n)またはその周辺を意味し、「反復ランダム試行」の議論を除外すると思いますか?
Suresh Venkat

@シュレシュ、「繰り返されたランダムな試行」の議論をスケッチすることができますか?
2010

マッピングが存在することを証明する1つの方法は、確率論的方法です。Fをランダムに選択すると、マッピングはある程度の確率で機能します。それが私が意味したことです。
Suresh Venkat

1
質問は完全に明確ですが、私の意見では、タイトルは誤解を招くものです。Fが全単射でない限り、私は前述の条件を満たすマッピングFを「バランスの取れたベクトルのエンコーディング」とは呼びません。これは、平衡ベクトルによる nビット文字列のエンコードに似ています。
伊藤剛

「完全に明確」から「効率的に」の異なる解釈まで。しかし、これは私の以前のコメントの要点ではありません。
伊藤剛

回答:


12

nx

  • f(x,i)xi
  • b(x)xx x

xg(i)=b(f(x,i))

  • g(0)=b(x)
  • g(n)=g(0)
  • |g(i)g(i+1)|=2i

i1g(i)+1

(n+O(logn))yf(x,i)iyO(logn)xy

O(logn)yO(logn)0


3行目のb(x)はb(y)である必要があります。
2010

文字列xに別のビットを追加して、長さが均等になるようにする必要があると思います(一部のiでg(i)がゼロであることを確認できるようにするため)。
2010

g(i)ig(i)i1i

@Jukka:ああそうだね。
2010

1
g(i)ii01102log(n)

9

knn/2k(n1n/2)k(n1)n/2n1k(n1n/2)(n1)n/21


1
また、二項係数の値を再利用して、次に必要な二項係数を計算すると、アルゴリズム全体がO(n)時間で実行されます。
伊藤剛

ありがとう!意味あり。実行時間は計算モデルに依存すると思います。単位時間でnビット数の演算を実行できる場合、伊藤剛による実装はO(n)時間で実行されます。一方、ビット操作を数えると時間はO(n ^ 2)になると思います。
Piotr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.