
数学において、ブール関数とは、引数と結果が2要素集合(通常は{true, false}、{0,1}、または{−1,1})の値をとる関数である。 [ 1 ] [ 2 ]別名としては、特に古いコンピュータサイエンスの文献で使われるスイッチング関数[ 3 ] [ 4 ]、論理学で使われる真理関数(または論理関数)がある。ブール関数は、ブール代数とスイッチング理論の主題である。[ 5 ]
ブール関数は次の形式をとります。、 どこブール領域として知られており、は、関数のアリティと呼ばれる非負整数です。関数は定数要素です複数の出力を持つブール関数、とこれはベクトルまたはベクトル値のブール関数(対称暗号におけるSボックス)です。[ 6 ]
がある異なるブール関数引数。異なる真理値表の数に等しい。エントリー。
毎2 項ブール関数は命題論理式として表現できます。変数また、2つの命題論理式は、同じブール関数を表す場合に限り、論理的に同値である。

基本的な対称ブール関数(論理結合子または論理ゲート)は次のとおりです。
より複雑な関数の例としては、多数決関数(奇数個の入力に対する関数)が挙げられる。

ブール関数は、さまざまな方法で指定できます。
代数的に、基本的なブール関数を用いた命題論理式として表すと次のようになる。
ブール式はグラフとしても表示できます。
電子回路を最適化するために、ブール式はクワイン・マクラスキーアルゴリズムまたはカルノー図を使用して最小化することができる。
ブール関数はさまざまな特性を持つことができます: [ 7 ]
回路複雑度とは、ブール関数を、それを計算できる回路の規模や深さに基づいて分類しようとする試みである。
ブール関数は、ブールの展開定理を用いて正負のシャノン余因子(シャノン展開)に分解することができ、これは引数の1つを固定(0または1)することによって得られる( k -1)項関数である。入力の集合(線形部分空間)に線形制約を課すことによって得られる一般的なk項関数は、部分関数として知られている。[ 8 ]
関数の引数の 1 つに対するブール微分は、関数の出力が選択された入力変数に敏感な場合に真となる (k − 1) 項関数であり、対応する 2 つの余因子の XOR です。 微分と余因子は、リード・ミュラー展開で使用されます。この概念は、x と x + dx における関数の差 (XOR) として得られる、方向 dx におけるk項微分として一般化できます。 [ 8 ]
ブール関数のメビウス変換(またはブール・メビウス変換)は、その多項式(代数的標準形)の係数の集合であり、単項式指数ベクトルの関数です。これは自己逆変換です。高速フーリエ変換に類似したバタフライアルゴリズム(「高速メビウス変換」)を使用して効率的に計算できます。[ 9 ]一致するブール関数は、そのメビウス変換と等しく、つまり、真理値表(最小項)の値は、その代数的(単項式)係数と等しくなります。[ 10 ] k個の引数を持つ一致する関数は 2^2^( k -1)個あります。[ 11 ]
ブール関数のウォルシュ変換は、フーリエ変換による実数値関数の調和関数への分解に類似した、線形関数(ウォルシュ関数)への分解の係数を与える k 進整数値関数です。その二乗はパワースペクトルまたはウォルシュスペクトルです。単一ビットベクトルのウォルシュ係数は、そのビットとブール関数の出力との相関の尺度です。最大(絶対値)ウォルシュ係数は、関数の線形性として知られています。 [ 8 ]すべてのウォルシュ係数が 0 になる(つまり、部分関数がバランスしている)ビットの最大数(次数)は、耐性として知られており、関数はその次数に対して相関耐性があると言われています。 [ 8 ]ウォルシュ係数は、線形暗号解読において重要な役割を果たします。
ブール関数の自己相関は、入力の特定の変化のセットと関数の出力との間の相関を示す k 進整数値関数です。特定のビットベクトルに対して、それはその方向の導関数のハミング重みと関連しています。最大の自己相関係数 (絶対値) は絶対指標として知られています。[ 7 ] [ 8 ]ある数のビットに対してすべての自己相関係数が 0 (つまり導関数がバランスしている) である場合、その関数はその次数まで伝播基準を満たすと言われます。すべてがゼロの場合、その関数はベント関数です。[ 12 ]自己相関係数は差分暗号解読で重要な役割を果たします。
ブール関数のウォルシュ係数とその自己相関係数は、自己相関とパワースペクトルがウォルシュ変換ペアであることを述べるウィーナー・ヒンチン定理に相当する関係にある。 [ 8 ]
これらの概念は、出力ビット(座標)を個別に考慮するか、あるいは出力ビットのすべての線形関数のセット(コンポーネントとして知られています)を調べることによって、ベクトルブール関数に自然に拡張できます。[ 6 ]コンポーネントのウォルシュ変換のセットは、線形近似テーブル(LAT)[ 13 ] [ 14 ]または相関行列[ 15 ] [ 16 ]として知られています。これは、入力ビットと出力ビットの異なる線形結合間の相関を記述します。コンポーネントの自己相関係数のセットは自己相関テーブル[ 14 ]であり、コンポーネントのウォルシュ変換[ 17 ]によって、入力ビットと出力ビットの差の相関をリストする、より広く使用されている差分分布テーブル(DDT)[ 13 ] [ 14 ]に関連付けられています(Sボックスも参照)。
任意のブール関数は、多重線形多項式によって実数領域に一意に拡張(補間)することができる。真理値表の値に指示多項式を乗じたものを合計することによって構築されます。例えば、バイナリXOR関数の拡張はこれは等しいその他の例としては否定()、 そして ()または() すべてのオペランドが独立している場合 (変数を共有していない場合)、関数の多項式形式は、ブール式の演算子の多項式を繰り返し適用することによって見つけることができます。係数を法 2で計算すると、代数標準形(ジェガルキン多項式)が得られます。
多項式の係数の直接的な式は、適切な微分を行うことで導出できる。これは、部分的に順序付けられたビットベクトルの集合のメビウス反転として一般化される。どこビットベクトルの重みを表す2を法としてとると、これはブールメビウス変換となり、代数的正規形の係数が得られます。どちらの場合も、合計はmによってカバーされるすべてのビットベクトルaについて取られます。つまり、a の「1」ビットはmの「1」ビットの部分集合を形成します。
領域がn次元超立方体に限定されている場合多項式ブール関数f をn個の独立した確率変数 (ベルヌーイ)に適用したときの、正の結果となる確率( xはそれぞれ独立) を表します。この事実の特殊なケースとして、パリティ関数のパイリングアップ補題があります。ブール関数の多項式形式は、ファジー論理への自然な拡張としても使用できます。
多くの場合、ブール領域は次のように解釈されます。偽("0") は 1 に、真("1") は -1 にマッピングされます(ブール関数の解析を参照)。 に対応する多項式はは次のように表されます。対称ブール領域を使用すると、否定が-1の乗算に対応し、線形関数が単項式(XORは乗算)であるため、解析の特定の側面が簡略化されます。したがって、この多項式形式は、関数のウォルシュ変換(この文脈ではフーリエ変換とも呼ばれる)に対応します(上記参照)。この多項式は、期待値を取り扱う点を除いて、標準ブール領域の多項式と同じ統計的解釈を持ちます。(例については、積み重ね補題を参照のこと。)
ブール関数は、計算複雑性理論の問題だけでなく、デジタルコンピュータのプロセッサの設計においても基本的な役割を果たしており、論理ゲートを用いて電子回路に実装されている。
ブール関数の特性は暗号学において非常に重要であり、特に共通鍵アルゴリズムの設計において重要である(置換ボックスを参照)。
協力ゲーム理論では、単調なブール関数は単純ゲーム(投票ゲーム)と呼ばれ、この概念は社会選択理論における問題を解決するために応用される。