Определение булевой функции — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (Тождественность и двойственность)
(Основные сведения)
Строка 11: Строка 11:
  
 
<center>
 
<center>
{|align="center" style="width:10cm" border=1
+
 
 +
 
 +
 
 +
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 
|+
 
|+
 +
!colspan="6"|Таблица истинности
 
|-align="center"
 
|-align="center"
 
! <tex>x_1</tex> || <tex>x_2</tex> || <tex>...</tex> || <tex>x_n</tex> || <tex>f(x_1,x_2,...,x_n)</tex>
 
! <tex>x_1</tex> || <tex>x_2</tex> || <tex>...</tex> || <tex>x_n</tex> || <tex>f(x_1,x_2,...,x_n)</tex>
Строка 23: Строка 27:
 
|-align="center"
 
|-align="center"
 
| <tex>1</tex> || <tex>1</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(1,1,...,0)</tex>
 
| <tex>1</tex> || <tex>1</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(1,1,...,0)</tex>
|-align="center" style="height:0.9cm"
+
|-align="center"  
 
| <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex>
 
| <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex>
 
|-align="center"
 
|-align="center"
Строка 40: Строка 44:
  
 
Таблица значений булевых функций от одной переменной:
 
Таблица значений булевых функций от одной переменной:
{| border="1"
+
 
 +
<center>
 +
 
 +
 
 +
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
!colspan="5"|Функции от одной переменной
 
|-align="center"
 
|-align="center"
!x
+
!
 
|! width="12%" | <tex>0</tex>
 
|! width="12%" | <tex>0</tex>
 
|! width="12%" | <tex>x</tex>
 
|! width="12%" | <tex>x</tex>
Строка 49: Строка 59:
 
|-align="center"
 
|-align="center"
 
!0
 
!0
|0||0||1||1
+
|<tex>0</tex>||<tex>0</tex>||<tex>1</tex>||<tex>1</tex>
 
|-align="center"
 
|-align="center"
 
!1
 
!1
|0||1||0||1
+
|<tex>0</tex>||<tex>1</tex>||<tex>0</tex>||<tex>1</tex>
|-align="center" bgcolor=#EEEEFF
+
|-align="center"  
 
  !Сохраняет 0
 
  !Сохраняет 0
|1||1||0||0
+
||||| ||  
|-align="center" bgcolor=#EEEEFF
+
|-align="center"  
 
  !Сохраняет 1
 
  !Сохраняет 1
|0||1||0||1
+
| |||| ||
|-align="center" bgcolor=#EEEEFF
+
|-align="center"  
 
  !Самодвойственная
 
  !Самодвойственная
|0||1||1||0
+
| ||||||  
|-align="center" bgcolor=#EEEEFF
+
|-align="center"  
 
  !Монотонная
 
  !Монотонная
|1||1||0||1
+
||||| ||
|-align="center" bgcolor=#EEEEFF
+
|-align="center"  
 
  !Линейная
 
  !Линейная
|1||1||1||1
+
|||||||
 
|}
 
|}
 +
</center>
  
 
Названия булевых функций от одной переменной:
 
Названия булевых функций от одной переменной:
{| border=1
+
<center>
 +
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
|-align="center"
 
  !Обозначение
 
  !Обозначение
 
  !Название
 
  !Название
 
  |-
 
  |-
 
  !<tex>0</tex>
 
  !<tex>0</tex>
  |тождественный ноль, тождественная ложь, тождественное "НЕТ"
+
  |<font color="black">тождественный ноль, тождественная ложь, тождественное "НЕТ"</font>
 
  |-
 
  |-
 
  !<tex>x</tex>
 
  !<tex>x</tex>
  |тождественная функция, логическое "ДА", "YES"(англ.)
+
  |<font color="black">тождественная функция, логическое "ДА", "YES"(англ.)</font>
 
  |-
 
  |-
 
  !<tex>\bar x,\ \neg x,\ x'</tex>
 
  !<tex>\bar x,\ \neg x,\ x'</tex>
  |отрицание, логическое "НЕТ", "НЕ", "НИ", "NOT"(англ.), "NO"(англ.)
+
  |<font color="black">отрицание, логическое "НЕТ", "НЕ", "НИ", "NOT"(англ.), "NO"(англ.)</font>
 
  |-
 
  |-
 
  !<tex>1</tex>
 
  !<tex>1</tex>
  |тождественная единица, тождественная истина, тождественное "ДА", тавтология
+
  |<font color="black">тождественная единица, тождественная истина, тождественное "ДА", тавтология</font>
 
|}
 
|}
 
+
</center>
 
=== Бинарные функции ===
 
=== Бинарные функции ===
 
При <tex>n = 2</tex> число булевых функций равно <tex>{2^2}^2 = 2^4 = 16</tex>.
 
При <tex>n = 2</tex> число булевых функций равно <tex>{2^2}^2 = 2^4 = 16</tex>.
  
 
Таблица значений булевых функций от двух переменных:
 
Таблица значений булевых функций от двух переменных:
{| border="1"
+
<center>
 +
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
!colspan="18"|Функции от одной переменной
 
|-align="center"
 
|-align="center"
  !x||y
+
  !<font color="black">x</font>||<font color="black">y</font>
 
|! width="5%" | <tex>0</tex>
 
|! width="5%" | <tex>0</tex>
 
|! width="5%" | <tex>x \land y</tex>
 
|! width="5%" | <tex>x \land y</tex>
Строка 112: Строка 129:
 
|! width="5%" | <tex>1</tex>
 
|! width="5%" | <tex>1</tex>
 
|-align="center"
 
|-align="center"
  !0||0
+
  !<font color="black">0</font>||<font color="black">0</font>
 
|0||0||0||0||0||0||0||0||1||1||1||1||1||1||1||1
 
|0||0||0||0||0||0||0||0||1||1||1||1||1||1||1||1
 
|-align="center"
 
|-align="center"
  !0||1
+
  !<font color="black">0</font>||<font color="black">1</font>
 
|0||0||0||0||1||1||1||1||0||0||0||0||1||1||1||1
 
|0||0||0||0||1||1||1||1||0||0||0||0||1||1||1||1
 
|-align="center"
 
|-align="center"
  !1||0
+
  !<font color="black">1</font>||<font color="black">0</font>
 
|0||0||1||1||0||0||1||1||0||0||1||1||0||0||1||1
 
|0||0||1||1||0||0||1||1||0||0||1||1||0||0||1||1
 
|-align="center"
 
|-align="center"
  !1||1
+
  !<font color="black">1</font>||<font color="black">1</font>
 
|0||1||0||1||0||1||0||1||0||1||0||1||0||1||0||1
 
|0||1||0||1||0||1||0||1||0||1||0||1||0||1||0||1
 
|-align="center" bgcolor=#EEEEFF
 
|-align="center" bgcolor=#EEEEFF
  !colspan="2"|Сохраняет 0
+
  !colspan="2"|<font color="black">Сохраняет 0</font>
|1||1||1||1||1||1||1||1||0||0||0||0||0||0||0||0
+
||||||||||||||||| || || || || || || ||  
 
|-align="center" bgcolor=#EEEEFF
 
|-align="center" bgcolor=#EEEEFF
  !colspan="2"|Сохраняет 1
+
  !colspan="2"|<font color="black">Сохраняет 1</font>
|0||1||0||1||0||1||0||1||0||1||0||1||0||1||0||1
+
| |||| |||| |||| |||| |||| |||| |||| ||
 
|-align="center" bgcolor=#EEEEFF
 
|-align="center" bgcolor=#EEEEFF
  !colspan="2"|Самодвойственная
+
  !colspan="2"|<font color="black">Самодвойственная</font>
|0||0||0||1||0||1||0||0||0||0||1||0||1||0||0||0
+
| || || |||| |||| || || || |||| |||| || ||  
 
|-align="center" bgcolor=#EEEEFF
 
|-align="center" bgcolor=#EEEEFF
  !colspan="2"|Монотонная
+
  !colspan="2"|<font color="black">Монотонная</font>
|1||1||0||1||0||1||0||1||0||0||0||0||0||0||0||1
+
||||| |||| |||| |||| || || || || || || ||
 
|-align="center" bgcolor=#EEEEFF
 
|-align="center" bgcolor=#EEEEFF
  !colspan="2"|Линейная
+
  !colspan="2"|<font color="black">Линейная</font>
|1||0||0||1||0||1||1||0||0||1||1||0||1||0||0||1
+
||| || |||| |||||| || |||||| |||| || ||
 
|}
 
|}
 
+
</center>
 
Названия булевых функций от двух переменных:
 
Названия булевых функций от двух переменных:
{| class="standard" border=1
+
<center>
 +
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
|-align="center"
 
  !Обозначение
 
  !Обозначение
 
  !Другие обозначения
 
  !Другие обозначения
Строка 148: Строка 168:
 
  !<tex>0</tex>
 
  !<tex>0</tex>
 
  |
 
  |
  |тождественный ноль, тождественная ложь, тождественное "НЕТ"
+
  |<font color="black">тождественный ноль, тождественная ложь, тождественное "НЕТ"</font>
 
  |-
 
  |-
 
  !<tex>x \land y</tex>
 
  !<tex>x \land y</tex>
  |align = center|<tex>x \cdot y,\ xy,\ x \And y,\ x\ AND\ y,\ AND(x, y),\ min(x, y),</tex> ''x И y, И(x, y)''
+
  |align = center|<tex>x \cdot y,\ xy,\ x \And y,\ x\ AND\ y,\ AND(x, y),\ min(x, y), x </tex> <font color="black">И</font> <tex>y,</tex> <font color="black">И</font><tex>(x, y)</tex>
  |2И, конъюнкция
+
  |<font color="black">2И, конъюнкция</font>
 
  |-
 
  |-
 
  !<tex>x \nrightarrow y</tex>
 
  !<tex>x \nrightarrow y</tex>
 
  |align = center|<tex>x > y,\ \neg(x \rightarrow y),\ x\ GT\ y,\ GT(x,\ y)</tex>
 
  |align = center|<tex>x > y,\ \neg(x \rightarrow y),\ x\ GT\ y,\ GT(x,\ y)</tex>
  |больше, инверсия прямой импликации
+
  |<font color="black">больше, инверсия прямой импликации</font>
 
  |-
 
  |-
 
  !<tex>x</tex>
 
  !<tex>x</tex>
  |align = center|<tex>YES1(x,y),</tex> ''ДА1(x, y)''
+
  |align = center|<tex>YES1(x,y),</tex> <font color="black">ДА1</font><tex>(x, y)</tex>
  |первый операнд
+
  |<font color="black">первый операнд</font>
 
  |-
 
  |-
 
  !<tex>x \nleftarrow y</tex>
 
  !<tex>x \nleftarrow y</tex>
 
  |align = center|<tex>x < y,\ \neg(x \leftarrow y),\ x\ LT\ y,\  LT(x, y)</tex>
 
  |align = center|<tex>x < y,\ \neg(x \leftarrow y),\ x\ LT\ y,\  LT(x, y)</tex>
  |меньше, инверсия обратной импликации
+
  |<font color="black">меньше, инверсия обратной импликации</font>
 
  |-
 
  |-
 
  !<tex>y</tex>
 
  !<tex>y</tex>
  |align = center|<tex>YES2(x, y),</tex> ''ДА2(x, y)''
+
  |align = center|<tex>YES2(x, y),</tex> <font color="black">ДА2</font><tex>(x, y)</tex>
  |второй операнд
+
  |<font color="black">второй операнд</font>
 
  |-
 
  |-
 
  !<tex>x \oplus y</tex>
 
  !<tex>x \oplus y</tex>
 
  |align = center|<tex>x + _2 y,\ x \not = y,\ x >< y,\ x <> y,\ x\ XOR\ y,\ XOR(x,y)</tex>
 
  |align = center|<tex>x + _2 y,\ x \not = y,\ x >< y,\ x <> y,\ x\ XOR\ y,\ XOR(x,y)</tex>
  |сложение по модулю 2, не равно, ксор, исключающее «или»
+
  |<font color="black">сложение по модулю 2, не равно, ксор, исключающее «или»</font>
 
  |-
 
  |-
 
  !<tex>x \lor y</tex>
 
  !<tex>x \lor y</tex>
  |align = center|<tex>x + y,\ x\ OR\ y,\ OR(x,y),\ max(x,y),</tex> ''x ИЛИ y, ИЛИ(x, y)''
+
  |align = center|<tex>x + y,\ x\ OR\ y,\ OR(x,y),\ max(x,y),</tex> <tex>x </tex><font color="black">ИЛИ </font><tex>y,</tex><font color="black"> ИЛИ</font><tex>(x, y)</tex>
  |2ИЛИ, дизъюнкция
+
  |<font color="black">2ИЛИ, дизъюнкция</font>
 
  |-
 
  |-
 
  !<tex>x \downarrow y</tex>
 
  !<tex>x \downarrow y</tex>
  |align = center|<tex>x\ NOR\ y,\ NOR(x,y)</tex> ''x ИЛИ-НЕ y, ИЛИ-НЕ(x, y)''
+
  |align = center|<tex>x\ NOR\ y,\ NOR(x,y)</tex> <tex>x </tex><font color="black">ИЛИ-НЕ</font> <tex>y,</tex> <font color="black">ИЛИ-НЕ</font><tex>(x, y)</tex>
  |НЕ- 2ИЛИ, 2ИЛИ-НЕ, антидизъюнкция, функция Да́ггера, функция Ве́бба, стрелка Пи́рса
+
  |<font color="black">НЕ-2ИЛИ, 2ИЛИ-НЕ, антидизъюнкция, функция Да́ггера, функция Ве́бба, стрелка Пи́рса</font>
 
  |-
 
  |-
 
  !<tex>x = y</tex>
 
  !<tex>x = y</tex>
 
  |align = center|<tex>x \equiv y, x EQV y, EQV(x,y), x \sim y, x \leftrightarrow y</tex>
 
  |align = center|<tex>x \equiv y, x EQV y, EQV(x,y), x \sim y, x \leftrightarrow y</tex>
  |равенство,  эквивалентность
+
  |<font color="black">равенство,  эквивалентность</font>
 
  |-
 
  |-
 
  !<tex>\neg y</tex>
 
  !<tex>\neg y</tex>
  |align = center|<tex>NOT2(x, y),\ y',\ \bar{y},</tex> ''НЕ2(x, y)''
+
  |align = center|<tex>NOT2(x, y),\ y',\ \bar{y},</tex> <font color="black">НЕ2</font><tex>(x, y)</tex>
  |отрицание (негация, инверсия) второго операнда
+
  |<font color="black">отрицание (негация, инверсия) второго операнда</font>
 
  |-
 
  |-
 
  !<tex>x \leftarrow y</tex>
 
  !<tex>x \leftarrow y</tex>
 
  |align = center|<tex>x \geq y,\ x \subset y,\ x\ GE\ y,\ GE(x, y)</tex>
 
  |align = center|<tex>x \geq y,\ x \subset y,\ x\ GE\ y,\ GE(x, y)</tex>
  |больше или равно, обратная импликация (от второго аргумента к первому)
+
  |<font color="black">больше или равно, обратная импликация (от второго аргумента к первому)</font>
 
  |-
 
  |-
 
  !<tex>\neg x</tex>
 
  !<tex>\neg x</tex>
  |align = center|<tex>NOT1(x,y),\ x',\ \bar{x},</tex> ''НЕ1(x, y)''
+
  |align = center|<tex>NOT1(x,y),\ x',\ \bar{x},</tex> <font color="black">НЕ1</font><tex>(x, y)</tex>
  |отрицание (негация, инверсия) первого операнда
+
  |<font color="black">отрицание (негация, инверсия) первого операнда</font>
 
  |-
 
  |-
 
  !<tex>x \rightarrow y</tex>
 
  !<tex>x \rightarrow y</tex>
 
  |align = center|<tex>x \leq y,\ x \supset y,\ x\ LE\ y,\ LE(x,y)</tex>
 
  |align = center|<tex>x \leq y,\ x \supset y,\ x\ LE\ y,\ LE(x,y)</tex>
  |меньше или равно,  прямая (материальная) импликация (от первого аргумента ко второму)
+
  |<font color="black">меньше или равно,  прямая (материальная) импликация (от первого аргумента ко второму)</font>
 
  |-
 
  |-
 
  !<tex>x \triangledown y</tex>
 
  !<tex>x \triangledown y</tex>
  |align = center|<tex>x \mid y,\ x\ NAND\ y,\ NAND(x,y),</tex> ''x И-НЕ y, И-НЕ(x, y)''
+
  |align = center|<tex>x \mid y,\ x\ NAND\ y,\ NAND(x,y),</tex> <tex>x </tex> <font color="black">И-НЕ </font><tex>y,</tex>  <font color="black">И-НЕ</font><tex>(x, y)</tex>
  |НЕ-2И, 2И-НЕ, антиконъюнкция, Штрих Шеффера
+
  |<font color="black">НЕ-2И, 2И-НЕ, антиконъюнкция, Штрих Шеффера</font>
 
  |-
 
  |-
 
  !<tex>1</tex>
 
  !<tex>1</tex>
 
  |
 
  |
  |тождественная единица, тождественная истина, тождественное "ДА", тавтология
+
  |<font color="black">тождественная единица, тождественная истина, тождественное "ДА", тавтология</font>
 
|}
 
|}
 
+
</center>
 
=== Тернарные функции ===
 
=== Тернарные функции ===
 
При <tex>n = 3</tex> число булевых функций равно <tex>{2^2}^3 = 2^8 = 256</tex>. Некоторые из них определены в следующей таблице:
 
При <tex>n = 3</tex> число булевых функций равно <tex>{2^2}^3 = 2^8 = 256</tex>. Некоторые из них определены в следующей таблице:
{| class="standard" border=1
+
<center>
|-
+
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
!colspan="14"|Таблица истинности некоторых тернарных функций
 +
|-align="center"
 
  !class="dark" style="font-weight:normal"| <tex>x</tex>
 
  !class="dark" style="font-weight:normal"| <tex>x</tex>
 
  !class="dark" style="font-weight:normal"| <tex>y</tex>
 
  !class="dark" style="font-weight:normal"| <tex>y</tex>
Строка 230: Строка 253:
 
  !style="font-weight:normal"| <tex>max(x,y,z)</tex>
 
  !style="font-weight:normal"| <tex>max(x,y,z)</tex>
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" |<font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
 
  |1||1||0||1 ||0||1||0||0||0||0 ||0
 
  |1||1||0||1 ||0||1||0||0||0||0 ||0
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
 
  |0||1||1||1 ||0||0||1||0||0||0 ||1
 
  |0||1||1||1 ||0||0||1||0||0||0 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
 
  |0||1||1||1 ||0||0||1||0||0||0 ||1
 
  |0||1||1||1 ||0||0||1||0||0||0 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
 
  |0||0||1||1 ||0||0||0||1||1||1 ||1
 
  |0||0||1||1 ||0||0||0||1||1||1 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
 
  |0||1||1||1 ||0||0||1||0||1||0 ||1
 
  |0||1||1||1 ||0||0||1||0||1||0 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
 
  |0||0||1||1 ||0||0||0||1||0||1 ||1
 
  |0||0||1||1 ||0||0||0||1||0||1 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 0
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 0</font>
 
  |0||0||1||1 ||0||0||0||1||1||1 ||1
 
  |0||0||1||1 ||0||0||0||1||1||1 ||1
 
  |- align="center"
 
  |- align="center"
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
  !class="shadow" style="font-weight:normal" | 1
+
  !class="shadow" style="font-weight:normal" | <font color="black"> 1</font>
 
  |0||0||0||0 ||1||1||1||1||1||1 ||1
 
  |0||0||0||0 ||1||1||1||1||1||1 ||1
 
|}
 
|}
  
 +
</center>
 
Названия булевых функций трех переменных:
 
Названия булевых функций трех переменных:
{| class="standard" border=1
+
<center>
|-
+
{| class="wikitable" align="center" style="color: blue; background-color:#ffffcc;" cellpadding="10"
 +
|+
 +
|-align="center"
 
  !Обозначения
 
  !Обозначения
 
  !Другие обозначения
 
  !Другие обозначения
Строка 280: Строка 306:
 
  !<tex>x \downarrow y \downarrow z</tex>  
 
  !<tex>x \downarrow y \downarrow z</tex>  
 
  |align = center|<tex>\downarrow (x,y,z) = Webb_2 (x,y,z)</tex>
 
  |align = center|<tex>\downarrow (x,y,z) = Webb_2 (x,y,z)</tex>
  |3-ИЛИ-НЕ, функция Вебба, функция Даггера, стрелка Пирса
+
  |<font color="black"> 3-ИЛИ-НЕ, функция Вебба, функция Даггера, стрелка Пирса</font>
 
  |-
 
  |-
 
  !<tex>\neg (\geq 2(x,y,z))</tex>
 
  !<tex>\neg (\geq 2(x,y,z))</tex>
 
  |
 
  |
  |Переключатель по большинству с инверсией, 3-ППБ-НЕ, мажоритарный клапан с инверсией
+
  |<font color="black">Переключатель по большинству с инверсией, 3-ППБ-НЕ, мажоритарный клапан с инверсией</font>
 
  |-
 
  |-
 
  !<tex>x \not = y \not = z</tex>
 
  !<tex>x \not = y \not = z</tex>
 
  |align = center|<tex>[\not =(x,y,z)] = NE(x,y,z)</tex>
 
  |align = center|<tex>[\not =(x,y,z)] = NE(x,y,z)</tex>
  |Неравенство
+
  |<font color="black">Неравенство</font>
 
  |-
 
  |-
 
  !<tex>x \mid y \mid z</tex>
 
  !<tex>x \mid y \mid z</tex>
 
  |align = center|<tex>\mid(x,y,z)</tex>
 
  |align = center|<tex>\mid(x,y,z)</tex>
  |3-И-НЕ, штрих Шеффера
+
  |<font color="black">3-И-НЕ, штрих Шеффера</font>
 
  |-
 
  |-
 
  !<tex>x \land y \land z</tex>
 
  !<tex>x \land y \land z</tex>
  |align = center|<tex>\land (x,y,z) = (x\ AND\ y\ AND\ z) = AND(x,y,z) = min(x,y,z)</tex> ''= (x И y И z) = И(x,y,z)''
+
  |align = center|<tex>\land (x,y,z) = (x\ AND\ y\ AND\ z) = AND(x,y,z) = min(x,y,z) = <br/> (x</tex> <font color="black"> И</font><tex> y</tex> <font color="black"> И</font><tex> z) = </tex> <font color="black">И</font><tex>(x,y,z)</tex>
  |3-И, минимум
+
  |<font color="black">3-И, минимум</font>
 
  |-
 
  |-
 
  !<tex>x=y=z</tex>
 
  !<tex>x=y=z</tex>
 
  |align = center|<tex>[=(x,y,z)]  = EQV(x,y,z)</tex>
 
  |align = center|<tex>[=(x,y,z)]  = EQV(x,y,z)</tex>
  |Равенство
+
  |<font color="black">Равенство</font>
 
  |-
 
  |-
 
  !<tex>x \oplus y \oplus z</tex>
 
  !<tex>x \oplus y \oplus z</tex>
 
  |align = center|<tex>x +_2 y +_2 z =  \oplus (x,y,z) = +_2 (x,y,z)</tex>
 
  |align = center|<tex>x +_2 y +_2 z =  \oplus (x,y,z) = +_2 (x,y,z)</tex>
  |Тернарное сложение по модулю 2
+
  |<font color="black">Тернарное сложение по модулю 2</font>
 
  |-
 
  |-
 
  !<tex>\geq 2(x,y,z)</tex>
 
  !<tex>\geq 2(x,y,z)</tex>
  |align = center|''(x И y) ИЛИ (y И z) ИЛИ (z И x)''
+
  |align = center|<tex>(x </tex> <font color="black">И</font> <tex>y) </tex><font color="black">ИЛИ </font><tex>(y</tex><font color="black"> И</font><tex> z)</tex><font color="black"> ИЛИ</font> <tex>(z </tex><font color="black">И</font><tex> x)</tex>
  |переключатель по большинству, 3-ППБ, мажоритарный клапан
+
  |<font color="black">переключатель по большинству, 3-ППБ, мажоритарный клапан</font>
 
  |-
 
  |-
 
  !<tex>f_1</tex>
 
  !<tex>f_1</tex>
 
  |
 
  |
  |Разряд займа при тернарном вычитании
+
  |<font color="black">Разряд займа при тернарном вычитании</font>
 
  |-
 
  |-
 
  !<tex>f_2</tex>
 
  !<tex>f_2</tex>
 
  |
 
  |
  |Разряд переноса при тернарном сложении
+
  |<font color="black">Разряд переноса при тернарном сложении</font>
 
  |-
 
  |-
 
  !<tex>x+y+z</tex>
 
  !<tex>x+y+z</tex>
  |align = center|<tex>+(x,y,z) = max(x,y,z) = (x\ OR\ y\ OR\ z) = OR(x,y,z) =</tex> ''(x ИЛИ y ИЛИ z) = ИЛИ(x,y,z)''
+
  |align = center|<tex>+(x,y,z) = max(x,y,z) = (x\ OR\ y\ OR\ z) = OR(x,y,z) = (x </tex> <font color="black">ИЛИ</font><tex> y </tex><font color="black"> ИЛИ</font><tex> z) = </tex><font color="black"> ИЛИ</font><tex>(x,y,z)</tex>
  |3-ИЛИ, максимум
+
  |<font color="black">3-ИЛИ, максимум</font>
 
|}
 
|}
  

Версия 00:19, 7 января 2016

Определение:
Бу́лева фу́нкция (или логи́ческая функция, или функция а́лгебры ло́гики) от [math]n[/math] переменных — отображение [math]B^n[/math][math]B[/math], где [math]B = \{0, 1\}[/math] — булево множество.

Элементы булева множества 1 и 0 обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определенного смысла. Элементы декартова произведения [math]B^n[/math] называют булевыми векторами. Множество всех булевых функций от любого числа переменных часто обозначается [math]P_2[/math], а от n переменных — [math]P_2(n)[/math]. Булевы функции названы так по фамилии математика Джорджа Буля.

Основные сведения

Определение:
А́рность функции — количество ее аргументов.

Каждая булева функция арности n полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины n. Число таких векторов равно [math]2^n[/math]. Поскольку на каждом векторе булева функция может принимать значение либо 0, либо 1, то количество всех n-арных булевых функций равно [math]{2^2}^n[/math]. То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблиц. Такие таблицы носят название таблиц истинности и в общем случае имеют вид:


Таблица истинности
[math]x_1[/math] [math]x_2[/math] [math]...[/math] [math]x_n[/math] [math]f(x_1,x_2,...,x_n)[/math]
[math]0[/math] [math]0[/math] [math]...[/math] [math]0[/math] [math]f(0,0,...,0)[/math]
[math]1[/math] [math]0[/math] [math]...[/math] [math]0[/math] [math]f(1,0,...,0)[/math]
[math]0[/math] [math]1[/math] [math]...[/math] [math]0[/math] [math]f(0,1,...,0)[/math]
[math]1[/math] [math]1[/math] [math]...[/math] [math]0[/math] [math]f(1,1,...,0)[/math]
[math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math]
[math]0[/math] [math]1[/math] [math]...[/math] [math]1[/math] [math]f(0,1,...,1)[/math]
[math]1[/math] [math]1[/math] [math]...[/math] [math]1[/math] [math]f(1,1,...,1)[/math]

Практически все булевы функции малых арностей (0, 1, 2 и 3) сложились исторически и имеют конкретные имена. Если значение функции не зависит от одной из переменных (то есть строго говоря для любых двух булевых векторов, отличающихся лишь в значении этой переменной, значение функции на них совпадает), то эта переменная называется фиктивной.

Нульарные функции

При [math]n = 0[/math] количество булевых функций равно [math]{2^2}^0 = 2^1 = 2[/math], первая из них тождественно равна 0, а вторая 1. Их называют булевыми константами — тождественный нуль и тождественная единица.

Унарные функции

При [math]n = 1[/math] число булевых функций равно [math]{2^2}^1 = 2^2 = 4[/math].

Таблица значений булевых функций от одной переменной:


Функции от одной переменной
[math]0[/math] [math]x[/math] [math]\neg x[/math] [math]1[/math]
0 [math]0[/math] [math]0[/math] [math]1[/math] [math]1[/math]
1 [math]0[/math] [math]1[/math] [math]0[/math] [math]1[/math]
Сохраняет 0
Сохраняет 1
Самодвойственная
Монотонная
Линейная

Названия булевых функций от одной переменной:

Обозначение Название
[math]0[/math] тождественный ноль, тождественная ложь, тождественное "НЕТ"
[math]x[/math] тождественная функция, логическое "ДА", "YES"(англ.)
[math]\bar x,\ \neg x,\ x'[/math] отрицание, логическое "НЕТ", "НЕ", "НИ", "NOT"(англ.), "NO"(англ.)
[math]1[/math] тождественная единица, тождественная истина, тождественное "ДА", тавтология

Бинарные функции

При [math]n = 2[/math] число булевых функций равно [math]{2^2}^2 = 2^4 = 16[/math].

Таблица значений булевых функций от двух переменных:

Функции от одной переменной
x y [math]0[/math] [math]x \land y[/math] [math]x \nrightarrow y[/math] [math]x[/math] [math]x \nleftarrow y[/math] [math]y[/math] [math]x \oplus y[/math] [math]x \lor y[/math] [math]x \downarrow y[/math] [math]x = y[/math] [math]\neg y[/math] [math]x \leftarrow y[/math] [math]\neg x[/math] [math]x \rightarrow y[/math] [math]x \triangledown y[/math] [math]1[/math]
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Сохраняет 0
Сохраняет 1
Самодвойственная
Монотонная
Линейная

Названия булевых функций от двух переменных:

Обозначение Другие обозначения Название
[math]0[/math] тождественный ноль, тождественная ложь, тождественное "НЕТ"
[math]x \land y[/math] [math]x \cdot y,\ xy,\ x \And y,\ x\ AND\ y,\ AND(x, y),\ min(x, y), x [/math] И [math]y,[/math] И[math](x, y)[/math] 2И, конъюнкция
[math]x \nrightarrow y[/math] [math]x \gt y,\ \neg(x \rightarrow y),\ x\ GT\ y,\ GT(x,\ y)[/math] больше, инверсия прямой импликации
[math]x[/math] [math]YES1(x,y),[/math] ДА1[math](x, y)[/math] первый операнд
[math]x \nleftarrow y[/math] [math]x \lt y,\ \neg(x \leftarrow y),\ x\ LT\ y,\ LT(x, y)[/math] меньше, инверсия обратной импликации
[math]y[/math] [math]YES2(x, y),[/math] ДА2[math](x, y)[/math] второй операнд
[math]x \oplus y[/math] [math]x + _2 y,\ x \not = y,\ x \gt \lt y,\ x \lt \gt y,\ x\ XOR\ y,\ XOR(x,y)[/math] сложение по модулю 2, не равно, ксор, исключающее «или»
[math]x \lor y[/math] [math]x + y,\ x\ OR\ y,\ OR(x,y),\ max(x,y),[/math] [math]x [/math]ИЛИ [math]y,[/math] ИЛИ[math](x, y)[/math] 2ИЛИ, дизъюнкция
[math]x \downarrow y[/math] [math]x\ NOR\ y,\ NOR(x,y)[/math] [math]x [/math]ИЛИ-НЕ [math]y,[/math] ИЛИ-НЕ[math](x, y)[/math] НЕ-2ИЛИ, 2ИЛИ-НЕ, антидизъюнкция, функция Да́ггера, функция Ве́бба, стрелка Пи́рса
[math]x = y[/math] [math]x \equiv y, x EQV y, EQV(x,y), x \sim y, x \leftrightarrow y[/math] равенство, эквивалентность
[math]\neg y[/math] [math]NOT2(x, y),\ y',\ \bar{y},[/math] НЕ2[math](x, y)[/math] отрицание (негация, инверсия) второго операнда
[math]x \leftarrow y[/math] [math]x \geq y,\ x \subset y,\ x\ GE\ y,\ GE(x, y)[/math] больше или равно, обратная импликация (от второго аргумента к первому)
[math]\neg x[/math] [math]NOT1(x,y),\ x',\ \bar{x},[/math] НЕ1[math](x, y)[/math] отрицание (негация, инверсия) первого операнда
[math]x \rightarrow y[/math] [math]x \leq y,\ x \supset y,\ x\ LE\ y,\ LE(x,y)[/math] меньше или равно, прямая (материальная) импликация (от первого аргумента ко второму)
[math]x \triangledown y[/math] [math]x \mid y,\ x\ NAND\ y,\ NAND(x,y),[/math] [math]x [/math] И-НЕ [math]y,[/math] И-НЕ[math](x, y)[/math] НЕ-2И, 2И-НЕ, антиконъюнкция, Штрих Шеффера
[math]1[/math] тождественная единица, тождественная истина, тождественное "ДА", тавтология

Тернарные функции

При [math]n = 3[/math] число булевых функций равно [math]{2^2}^3 = 2^8 = 256[/math]. Некоторые из них определены в следующей таблице:

Таблица истинности некоторых тернарных функций
[math]x[/math] [math]y[/math] [math]z[/math] [math]x \downarrow y \downarrow z[/math] [math]\neg (\geq 2(x,y,z))[/math] [math]x \not = y \not = z[/math] [math]x \mid y \mid z[/math] [math]min(x,y,z)[/math] [math]x=y=z[/math] [math]x \oplus y \oplus z[/math] [math]\geq 2(x,y,z)[/math] [math]f_1[/math] [math]f_2[/math] [math]max(x,y,z)[/math]
0 0 0 1 1 0 1 0 1 0 0 0 0 0
0 0 1 0 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 0 0 1 0 0 0 1
0 1 1 0 0 1 1 0 0 0 1 1 1 1
1 0 0 0 1 1 1 0 0 1 0 1 0 1
1 0 1 0 0 1 1 0 0 0 1 0 1 1
1 1 0 0 0 1 1 0 0 0 1 1 1 1
1 1 1 0 0 0 0 1 1 1 1 1 1 1

Названия булевых функций трех переменных:

Обозначения Другие обозначения Названия
[math]x \downarrow y \downarrow z[/math] [math]\downarrow (x,y,z) = Webb_2 (x,y,z)[/math] 3-ИЛИ-НЕ, функция Вебба, функция Даггера, стрелка Пирса
[math]\neg (\geq 2(x,y,z))[/math] Переключатель по большинству с инверсией, 3-ППБ-НЕ, мажоритарный клапан с инверсией
[math]x \not = y \not = z[/math] [math][\not =(x,y,z)] = NE(x,y,z)[/math] Неравенство
[math]x \mid y \mid z[/math] [math]\mid(x,y,z)[/math] 3-И-НЕ, штрих Шеффера
[math]x \land y \land z[/math] [math]\land (x,y,z) = (x\ AND\ y\ AND\ z) = AND(x,y,z) = min(x,y,z) = \lt br/\gt (x[/math] И[math] y[/math] И[math] z) = [/math] И[math](x,y,z)[/math] 3-И, минимум
[math]x=y=z[/math] [math][=(x,y,z)] = EQV(x,y,z)[/math] Равенство
[math]x \oplus y \oplus z[/math] [math]x +_2 y +_2 z = \oplus (x,y,z) = +_2 (x,y,z)[/math] Тернарное сложение по модулю 2
[math]\geq 2(x,y,z)[/math] [math](x [/math] И [math]y) [/math]ИЛИ [math](y[/math] И[math] z)[/math] ИЛИ [math](z [/math]И[math] x)[/math] переключатель по большинству, 3-ППБ, мажоритарный клапан
[math]f_1[/math] Разряд займа при тернарном вычитании
[math]f_2[/math] Разряд переноса при тернарном сложении
[math]x+y+z[/math] [math]+(x,y,z) = max(x,y,z) = (x\ OR\ y\ OR\ z) = OR(x,y,z) = (x [/math] ИЛИ[math] y [/math] ИЛИ[math] z) = [/math] ИЛИ[math](x,y,z)[/math] 3-ИЛИ, максимум

Представление функции формулой

Определение:
Если выбрать некоторый набор булевых функций [math]A[/math], то с использованием выбранных функций можно записать некоторые другие булевы функции. Такая запись булевой функции называется формулой.

Например, если [math]A = \left\{\land,\neg\right\}[/math], то функция [math]a \lor b[/math] представляется в виде [math]\neg(\neg a \land \neg b)[/math]

Тождественность и двойственность

Определение:
Две булевы функции тождественны друг другу, если на любых одинаковых наборах аргументов они принимают равные значения.

Тождественность функций f и g можно записать, например, так:
[math]f(x_1, x_2, \dots, x_n)=g(x_1, x_2, \dots, x_n)[/math]

Просмотрев таблицы истинности булевых функций, легко получить такие тождества:

[math]\overline{0}=1[/math] [math]\overline{1}=0[/math] [math]\overline{\overline{x}}=x[/math] [math]x \land y=y \land x\![/math] [math]x\lor y=y \lor x[/math]
[math]0 \land x=0\![/math] [math]1 \land x=x\![/math] [math]0 \lor x=x[/math] [math]1\lor x=1[/math] [math]x \land x=x \lor x=x[/math]

А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты:

[math]x \land \overline{x}=0[/math] [math]x \lor \overline{x}=1[/math]
[math]\overline{x \land y}=\overline{x}\lor\overline{y}[/math] [math]\overline{x}\land\overline{y}=\overline{x\lor y}[/math] (законы де Моргана)

[math]x \land (y\lor z)=(x \land y)\lor (x \land z)[/math]
[math]x \lor (y \land z)=(x\lor y) \land (x\lor z)[/math] (дистрибутивность конъюнкции и дизъюнкции)


Определение:
Функция [math]g(x_1,x_2,\dots,x_n)[/math] называется двойственной функции [math]f(x_1,x_2,\dots,x_n)[/math], если [math]f(\overline{x_1},\overline{x_2},\dots,\overline{x_n})=\overline{g(x_1,x_2,\dots,x_n)}[/math].

Легко показать, что в этом равенстве f и g можно поменять местами, то есть функции f и g двойственны друг другу. Из простейших функций двойственны друг другу константы 0 и 1, а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе.

Если в булевом тождестве заменить каждую функцию на двойственную ей, снова получится верное тождество. В приведённых выше формулах легко найти двойственные друг другу пары.

Суперпозиции

Основная статья: Суперпозиции

Полнота системы, критерий Поста

Представление булевых функций

Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций [math]\Sigma = \{f_1,\ldots,f_n\}[/math]. Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре [math]\Sigma[/math], который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы:

  • Как построить по данной функции представляющую её формулу?
  • Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию?
    • В частности: существует ли способ приведения произвольной формулы к эквивалентной её канонической форме, такой что, две формулы эквивалентны тогда и только тогда, когда их канонические формы совпадают?
  • Как по данной функции построить представляющую её формулу с теми или иными заданными свойствами (например, наименьшего размера), и возможно ли это?

Положительные ответы на эти и другие вопросы существенно увеличивают прикладное значение выбранной системы функций.

Дизъюнктивная нормальная форма (ДНФ)

Основная статья: СДНФ

Конъюнктивная нормальная форма (КНФ)

Основная статья: СКНФ

Полином Жегалкина

Основная статья: Полином Жегалкина

Схемы из функциональных элементов

Литература