コンテンツにスキップ
Wikipedia

ブール関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』
(ブール函数から転送)
この記事は英語版の対応するページを翻訳することにより充実させることができます。(2024年4月)
翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
  • 英語版記事を日本語へ機械翻訳したバージョン(Google翻訳)。
  • 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。
  • 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。
  • 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。
  • 翻訳後、{{翻訳告知|en|Boolean function|...}}ノートに追加することもできます。
  • Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指針についての説明があります。

ブール関数(ブールかんすう、: Boolean function)は、非負整数 k 個のブール領域 B = { 0 , 1 } {\displaystyle =\{0,1\}} {\displaystyle =\{0,1\}} の引数をとり、1個のブール領域の値となる関数 f : BkB である。k = 0 では、単に定数 B となる。

ブール関数を一般化すると、f : XB という形式の関数において、X が任意の集合である場合を「ブール値関数」と呼ぶ。X = M = {1, 2, 3, …} であるとき、f は無限の「二値数列; binary sequence」すなわち 0 と 1 の無限である。X = [k] = {1, 2, 3, …, k} であるとき、f は長さ k の二値数列である。そのような関数は 2 2 k {\displaystyle 2^{2^{k}}} {\displaystyle 2^{2^{k}}} 個存在する。これは計算複雑性理論における問題で基本的な役割を果たす。

効率的表現

[編集 ]

(命題論理の)論理式で表現できるが、効率的な表現としては次のようなものがある。

簡単化

[編集 ]

簡単な表現に変換する手法として次のようなものがある。

  • カット・アンド・トライ法
ブール代数の定義を用い、効率的な表現に変形していく。
  • ベン図
ベン図を用いて視覚的にわかりやすい表現にする。

以上は人間の直感によるものであり「変換する手法」と言えたものではない。

  • カルノー図法
カルノー図を用い、効率的な表現に変形していく。
  • クワイン・マクラスキー法
クワイン・マクラスキー法を用い、効率的な表現に変形していく。計算機で簡単化するのに適している。

標準形

[編集 ]

選言標準形連言標準形が代表的である。他に、リード-マラー標準形などがある。

リード-マラー標準形

[編集 ]

リード-マラー標準形(en:Algebraic normal form)は、積(AND)の排他的論理和(XOR)による標準形である。

f ( x 1 , x 2 , , x n ) = {\displaystyle f(x_{1},x_{2},\ldots ,x_{n})=\!} {\displaystyle f(x_{1},x_{2},\ldots ,x_{n})=\!} a 0 + {\displaystyle a_{0}+\!} {\displaystyle a_{0}+\!}
a 1 x 1 + a 2 x 2 + + a n x n + {\displaystyle a_{1}x_{1}+a_{2}x_{2}+\ldots +a_{n}x_{n}+\!} {\displaystyle a_{1}x_{1}+a_{2}x_{2}+\ldots +a_{n}x_{n}+\!}
a 1 , 2 x 1 x 2 + a n 1 , n x n 1 x n + {\displaystyle a_{1,2}x_{1}x_{2}+a_{n-1,n}x_{n-1}x_{n}+\!} {\displaystyle a_{1,2}x_{1}x_{2}+a_{n-1,n}x_{n-1}x_{n}+\!}
+ {\displaystyle \ldots +\!} {\displaystyle \ldots +\!}
a 1 , 2 , , n x 1 x 2 x n {\displaystyle a_{1,2,\ldots ,n}x_{1}x_{2}\ldots x_{n}\!} {\displaystyle a_{1,2,\ldots ,n}x_{1}x_{2}\ldots x_{n}\!}

ここで a 0 , a 1 , , a 1 , 2 , , n { 0 , 1 } {\displaystyle a_{0},a_{1},\ldots ,a_{1,2,\ldots ,n}\in \{0,1\}^{*}} {\displaystyle a_{0},a_{1},\ldots ,a_{1,2,\ldots ,n}\in \{0,1\}^{*}} である。

従って、列 a 0 , a 1 , , a 1 , 2 , , n {\displaystyle a_{0},a_{1},\ldots ,a_{1,2,\ldots ,n}} {\displaystyle a_{0},a_{1},\ldots ,a_{1,2,\ldots ,n}} の値の列もブール関数を一意に表している。ブール関数の代数的次数は、1つの(AND)項に現われる x i {\displaystyle x_{i}} {\displaystyle x_{i}} の個数で表される。つまり、 f ( x 1 , x 2 , x 3 ) = x 1 + x 3 {\displaystyle f(x_{1},x_{2},x_{3})=x_{1}+x_{3}} {\displaystyle f(x_{1},x_{2},x_{3})=x_{1}+x_{3}} の次数は 1(線形)であり、 f ( x 1 , x 2 , x 3 ) = x 1 + x 1 x 2 x 3 {\displaystyle f(x_{1},x_{2},x_{3})=x_{1}+x_{1}x_{2}x_{3}} {\displaystyle f(x_{1},x_{2},x_{3})=x_{1}+x_{1}x_{2}x_{3}} の次数は 3(立方)である。

関連項目

[編集 ]

AltStyle によって変換されたページ (->オリジナル) /