Iブール回路があると何らかの関数計算F :{ 0 、1 } のn → { 0 、1 }。回路がAND、OR、およびNOTゲートで構成され、ファンインとファンアウトが最大2つあると仮定します。
ましょ、所与の入力です。Cとxが与えられた場合、xとは異なる単一のビット位置にあるn入力でCを評価します。つまり、n値C (x 1)、C (x 2)、… 、C (x n)を計算しますどこでxは、私が同じであるXそのことを除いて、I番目のビットが反転します。
これを行うには、n個の異なる入力でn回個別に評価するより効率的な方法がありますか?
にm個のゲートが含まれていると仮定します。次に、n個すべての入力でCを個別に評価すると、O (m n )時間かかります。C (x 1)、C (x 2)、… 、C (x n)をo (m n )時間で計算する方法はありますか?
任意コンテキスト:我々が持っていた場合、演算上(ゲートが乗算、加算、及び否定である)回路、それを計算することが可能であるN方向微分を∂ FにおけるO(M)時間。基本的に、O(m)時間での勾配の計算(逆伝播/チェーンルール)には標準的な方法を使用できます。これは、対応する関数が連続的で微分可能であるため機能します。ブール回路にも同様のことができるかどうか疑問に思っています。ブール回路は連続的で微分可能ではないため、同じトリックを実行することはできませんが、おそらく他に使用できる巧妙な手法があるでしょうか?たぶん、ある種のフーリエのトリックか何か?
(バリアントの質問:無限のファンインと有限のファンアウトを持つブールゲートがある場合、n回評価するよりも漸近的に実行できますか?)