同様の入力のバッチでブール回路を評価する


10

Iブール回路があると何らかの関数計算F :{ 0 、1 } のn → { 0 、1 }。回路がAND、OR、およびNOTゲートで構成され、ファンインとファンアウトが最大2つあると仮定します。Cf:{0,1}n→{0,1}

ましょ、所与の入力です。Cとxが与えられた場合、xとは異なる単一のビット位置にあるn入力でCを評価します。つまり、n値C (x 1)、C (x 2)、… 、C (x n)を計算しますどこでxは、私が同じであるXそのことを除いて、Ix∈{0,1}nCxCnxnC(x1),C(x2),…,C(xn)xixi番目のビットが反転します。

これを行うには、n個の異なる入力でn回個別に評価するより効率的な方法がありますか?C nn

にm個のゲートが含まれていると仮定します。次に、n個すべての入力でCを個別に評価すると、O (m n )時間かかります。C (x 1)、C (x 2)、… 、C (x n)をo (m n )時間で計算する方法はありますか?CmCnO(mn)C(x1),C(x2),…,C(xn)o(mn)


任意コンテキスト:我々が持っていた場合、演算上(ゲートが乗算、加算、及び否定である)回路、それを計算することが可能であるN方向微分を∂ FRnにおけるO(M)時間。基本的に、O(m)時間での勾配の計算(逆伝播/チェーンルール)には標準的な方法を使用できます。これは、対応する関数が連続的で微分可能であるため機能します。ブール回路にも同様のことができるかどうか疑問に思っています。ブール回路は連続的で微分可能ではないため、同じトリックを実行することはできませんが、おそらく他に使用できる巧妙な手法があるでしょうか?たぶん、ある種のフーリエのトリックか何か?∂f∂xi(x)O(m)O(m)

(バリアントの質問:無限のファンインと有限のファンアウトを持つブールゲートがある場合、n回評価するよりも漸近的に実行できますか?)C n


1
アンドリューはあなたの質問にかなりよく答えたので、コメントを残しておきます。場合は大きい(のようなO (2 N / N ))と、あなたは評価しているC多くの入力に(までを2 O (nは/ログN )、そこである)C "サイズのみのO (2 N / N )任意のmでCを評価できますmO(2n/n)C2o(n/log⁡n)C′O(2n/n)Cm入力。(この問題は、文献では「大量生産」とも呼ばれています。)Uhligの「少数の信頼できる要素を持つ機能要素からの自己修正スキームの合成について」を参照してください。Math.Notes Acad.Sci。ソ連15、558--562。そのため、場合によっては、非均一性を使用する方が良い場合があります。
— ライアンウィリアムズ

回答:


10

そのようなトリックが簡単に見つけられたり、重要な利益が得られたりする可能性は低いと考えます。方法は次のとおりです。

まず第一に、表向きに簡単ながら、あなたの問題は、実際に回路を考えると、より多くの一般的な問題を解決することができますとNの入力X 0、... 、xはN - 1は、評価Cをより速くよりも、すべての入力に〜O(N ⋅ | C |)時間。その理由は、私たちが微調整できることであるCを回路にC "サイズの| C | + 〜O(N N )これは、入力に0CNx0,…,xN−1CO~(N⋅|C|)CC′|C|+O~(Nn)、出力 C (x i)。基本的に、 0 i 10 N − 1 − iを x iに送信する小さなルックアップテーブルを作成し、それを Cに配線します。0i10N−1−iC(xi)0i10N−1−ixiC

O~(|C|2−ϵ+(N⋅|C|)1−ϵ/2+N2−ϵ)ϵ>0CCC′2n/2⋅|C|n/2CC′2n/2C′CO~(2(n/2)(2−ϵ)⋅|C|2−ϵ)=O~(2n(1−ϵ/2)⋅poly(|C|))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.