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


10

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

ましょ、所与の入力です。Cxが与えられた場合、xとは異なる単一のビット位置にあるn入力でCを評価します。つまり、nC x 1C x 2C 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 1C x 2C x no m n 時間で計算する方法はありますか?CmCnO(mn)C(x1),C(x2),,C(xn)o(mn)


任意コンテキスト:我々が持っていた場合、演算上(ゲートが乗算、加算、及び否定である)回路、それを計算することが可能であるN方向微分をFRnにおけるOM時間。基本的に、Om時間での勾配の計算(逆伝播/チェーンルール)には標準的な方法を使用できます。これは、対応する関数が連続的で微分可能であるため機能します。ブール回路にも同様のことができるかどうか疑問に思っています。ブール回路は連続的で微分可能ではないため、同じトリックを実行することはできませんが、おそらく他に使用できる巧妙な手法があるでしょうか?たぶん、ある種のフーリエのトリックか何か?fxi(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/logn)CO(2n/n)Cm入力。(この問題は、文献では「大量生産」とも呼ばれています。)Uhligの「少数の信頼できる要素を持つ機能要素からの自己修正スキームの合成について」を参照してください。Math.Notes Acad.Sci。ソ連15、558--562。そのため、場合によっては、非均一性を使用する方が良い場合があります。
ライアンウィリアムズ

回答:


10

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

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

O~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ)ϵ>0CCC2n/2|C|n/2CC2n/2CCO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|))

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