Определение булевой функции — различия между версиями
Melnik (обсуждение | вклад) |
Melnik (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | '''Бу́лева фу́нкция''' (или '''логи́ческая функция''', или '''функция а́лгебры ло́гики''') от <tex>n</tex> переменных — отображение <tex> | + | '''Бу́лева фу́нкция''' (или '''логи́ческая функция''', или '''функция а́лгебры ло́гики''') от <tex>n</tex> переменных — отображение <tex>B^n</tex> → <tex>B</tex>, где <tex>B = \{0, 1\}</tex> — булево множество.}} |
− | Элементы булева множества 1 и 0 обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определенного смысла. Элементы декартова произведения | + | Элементы булева множества 1 и 0 обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определенного смысла. Элементы декартова произведения <tex>B^n</tex> называют ''булевыми векторами''. Множество всех булевых функций от любого числа переменных часто обозначается <tex>P_2</tex>, а от ''n'' переменных — <tex>P_2(n)</tex>. Булевы функции названы так по фамилии математика Джорджа Буля. |
== Основные сведения == | == Основные сведения == | ||
− | Каждая булева функция арности ''n'' полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины ''n''. Число таких векторов равно | + | Каждая булева функция арности ''n'' полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины ''n''. Число таких векторов равно <tex>2^n</tex>. Поскольку на каждом векторе булева функция может принимать значение либо 0, либо 1, то количество всех ''n''-арных булевых функций равно <tex>{2^2}^n</tex>. Поэтому в этом разделе рассматриваются только простейшие и важнейшие булевы функции. То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблиц. Такие таблицы носят название таблиц истинности и в общем случае имеют вид: |
<center> | <center> | ||
− | {| | + | {|align="center" style="width:10cm" border=1 |
|+ | |+ | ||
− | |-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> |
− | |-align="center" | + | |-align="center" |
− | | 0 || 0 || | + | | <tex>0</tex> || <tex>0</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(0,0,...,0)</tex> |
− | |-align="center" | + | |-align="center" |
− | | 1 || 0 || | + | | <tex>1</tex> || <tex>0</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(1,0,...,0)</tex> |
− | |-align="center" | + | |-align="center" |
− | | 0 || 1 || | + | | <tex>0</tex> || <tex>1</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(0,1,...,0)</tex> |
− | |-align="center" | + | |-align="center" |
− | | 1 || 1 || | + | | <tex>1</tex> || <tex>1</tex> || <tex>...</tex> || <tex>0</tex> || <tex>f(1,1,...,0)</tex> |
− | |-align="center" style="height: | + | |-align="center" style="height:0.9cm" |
− | | < | + | | <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> || <tex>\vdots</tex> |
− | |-align="center" | + | |-align="center" |
− | | 0 || 1 || | + | | <tex>0</tex> || <tex>1</tex> || <tex>...</tex> || <tex>1</tex> || <tex>f(0,1,...,1)</tex> |
− | |-align="center" | + | |-align="center" |
− | | 1 || 1 || | + | | <tex>1</tex> || <tex>1</tex> || <tex>...</tex> || <tex>1</tex> || <tex>f(1,1,...,1)</tex> |
|} | |} | ||
</center> | </center> | ||
Строка 32: | Строка 32: | ||
=== Нульарные функции === | === Нульарные функции === | ||
− | При | + | При <tex>n = 0</tex> количество булевых функций равно <tex>{2^2}^0 = 2^1 = 2</tex>, первая из них тождественно равна 0, а вторая 1. Их называют булевыми константами — тождественный нуль и тождественная единица. |
=== Унарные функции === | === Унарные функции === | ||
− | При | + | При <tex>n = 1</tex> число булевых функций равно <tex>{2^2}^1 = 2^2 = 4</tex>. |
Таблица значений булевых функций от одной переменной: | Таблица значений булевых функций от одной переменной: | ||
{| border="1" | {| border="1" | ||
− | |-align="center" | + | |-align="center" |
!x | !x | ||
− | |! width="12%" | 0 | + | |! width="12%" | <tex>0</tex> |
− | |! width="12%" | x | + | |! width="12%" | <tex>x</tex> |
− | |! width="12%" | | + | |! width="12%" | <tex>\neg x</tex> |
− | |! width="12%" | 1 | + | |! width="12%" | <tex>1</tex> |
|-align="center" | |-align="center" | ||
!0 | !0 | ||
Строка 87: | Строка 87: | ||
=== Бинарные функции === | === Бинарные функции === | ||
− | При | + | При <tex>n = 2</tex> число булевых функций равно <tex>{2^2}^2 = 2^4 = 16</tex>. |
Таблица значений булевых функций от двух переменных: | Таблица значений булевых функций от двух переменных: | ||
{| border="1" | {| border="1" | ||
− | |-align="center" | + | |-align="center" |
!x||y | !x||y | ||
− | |! width="5%" | 0 | + | |! width="5%" | <tex>0</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \land y</tex> |
− | |! width="5%" | <tex>\nrightarrow</tex> | + | |! width="5%" | <tex>x \nrightarrow y</tex> |
− | |! width="5%" | x | + | |! width="5%" | <tex>x</tex> |
− | |! width="5%" | <tex>\nleftarrow</tex> | + | |! width="5%" | <tex>x \nleftarrow y</tex> |
− | |! width="5%" | y | + | |! width="5%" | <tex>y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \oplus y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \vee y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \downarrow y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x = y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>\neg y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \leftarrow y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>\neg x</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \rightarrow y</tex> |
− | |! width="5%" | | + | |! width="5%" | <tex>x \triangledown y</tex> |
− | |! width="5%" | 1 | + | |! width="5%" | <tex>1</tex> |
|-align="center" | |-align="center" | ||
!0||0 | !0||0 | ||
Строка 184: | Строка 184: | ||
|равенство, эквивалентность | |равенство, эквивалентность | ||
|- | |- | ||
− | !<tex>\ | + | !<tex>\neg y</tex> |
− | |align = center|<tex>NOT2(x, y),\ y',\ \ | + | |align = center|<tex>NOT2(x, y),\ y',\ \bar{y},</tex> ''НЕ2(x, y)'' |
|отрицание (негация, инверсия) второго операнда | |отрицание (негация, инверсия) второго операнда | ||
|- | |- | ||
Строка 192: | Строка 192: | ||
|больше или равно, обратная импликация (от второго аргумента к первому) | |больше или равно, обратная импликация (от второго аргумента к первому) | ||
|- | |- | ||
− | !<tex>\ | + | !<tex>\neg x</tex> |
− | |align = center|<tex>NOT1(x,y),\ x',\ \ | + | |align = center|<tex>NOT1(x,y),\ x',\ \bar{x},</tex> ''НЕ1(x, y)'' |
|отрицание (негация, инверсия) первого операнда | |отрицание (негация, инверсия) первого операнда | ||
|- | |- | ||
Строка 210: | Строка 210: | ||
=== Тернарные функции === | === Тернарные функции === | ||
− | При | + | При <tex>n = 3</tex> число булевых функций равно <tex>{2^2}^3 = 2^8 = 256</tex>. Некоторые из них определены в следующей таблице: |
{| class="standard" border=1 | {| class="standard" border=1 | ||
|- | |- | ||
Строка 334: | Строка 334: | ||
Две булевы функции тождественны друг другу, если на любых одинаковых наборах аргументов они принимают равные значения.}} | Две булевы функции тождественны друг другу, если на любых одинаковых наборах аргументов они принимают равные значения.}} | ||
Тождественность функций f и g можно записать, например, так:<br /> | Тождественность функций f и g можно записать, например, так:<br /> | ||
− | < | + | <tex>f(x_1, x_2, \dots, x_n)=g(x_1, x_2, \dots, x_n)</tex> |
Просмотрев таблицы истинности булевых функций, легко получить такие тождества: | Просмотрев таблицы истинности булевых функций, легко получить такие тождества: | ||
{| style="width:15cm" | {| style="width:15cm" | ||
|- | |- | ||
− | | < | + | | <tex>\overline{0}=1</tex> || <tex>\overline{1}=0</tex> || <tex>\overline{\overline{x}}=x</tex> |
− | || < | + | || <tex>xy=yx\!</tex> || <tex>x\lor y=y \lor x</tex> |
|- | |- | ||
− | || < | + | || <tex>0x=0\!</tex> || <tex>1x=x\!</tex> || <tex>0\lor x=x</tex> || <tex>1\lor x=1</tex> || <tex>xx=x\lor x=x</tex> |
|} | |} | ||
А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты: | А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты: | ||
{| style="width:15cm" | {| style="width:15cm" | ||
|- | |- | ||
− | | < | + | | <tex>x\overline{x}=0</tex> || <tex>x\lor\overline{x}=1</tex> |
|} | |} | ||
{| style="width:15cm" | {| style="width:15cm" | ||
|- | |- | ||
− | | < | + | | <tex>\overline{x\cdot y}=\overline{x}\lor\overline{y}</tex> |
− | || < | + | || <tex>\overline{x}\cdot\overline{y}=\overline{x\lor y}</tex> || (законы де Моргана) |
|} | |} | ||
− | < | + | <tex>x(y\lor z)=xy\lor xz</tex><br /> |
− | < | + | <tex>x\lor yz=(x\lor y)(x\lor z)</tex> (дистрибутивность конъюнкции и дизъюнкции) |
{{Определение | {{Определение | ||
|definition= | |definition= | ||
− | Функция < | + | Функция <tex>g(x_1,x_2,\dots,x_n)</tex> называется двойственной функции <tex>f(x_1,x_2,\dots,x_n)</tex>, если <tex>f(\overline{x_1},\overline{x_2},\dots,\overline{x_n})=\overline{g(x_1,x_2,\dots,x_n)}</tex>.}} |
Легко показать, что в этом равенстве f и g можно поменять местами, то есть функции f и g двойственны друг другу. Из простейших функций двойственны друг другу константы 0 и 1, а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе. | Легко показать, что в этом равенстве f и g можно поменять местами, то есть функции f и g двойственны друг другу. Из простейших функций двойственны друг другу константы 0 и 1, а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе. | ||
Строка 374: | Строка 374: | ||
== Представление булевых функций == | == Представление булевых функций == | ||
− | Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций < | + | Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций <tex>\Sigma = \{f_1,\ldots,f_n\}</tex>. Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре <tex>\Sigma</tex>, который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы: |
* Как построить по данной функции представляющую её формулу? | * Как построить по данной функции представляющую её формулу? | ||
* Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию? | * Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию? |
Версия 04:31, 19 октября 2011
Определение: |
Бу́лева фу́нкция (или логи́ческая функция, или функция а́лгебры ло́гики) от | переменных — отображение → , где — булево множество.
Элементы булева множества 1 и 0 обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определенного смысла. Элементы декартова произведения
называют булевыми векторами. Множество всех булевых функций от любого числа переменных часто обозначается , а от n переменных — . Булевы функции названы так по фамилии математика Джорджа Буля.Основные сведения
Каждая булева функция арности n полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины n. Число таких векторов равно
. Поскольку на каждом векторе булева функция может принимать значение либо 0, либо 1, то количество всех n-арных булевых функций равно . Поэтому в этом разделе рассматриваются только простейшие и важнейшие булевы функции. То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблиц. Такие таблицы носят название таблиц истинности и в общем случае имеют вид:Практически все булевы функции малых арностей (0, 1, 2 и 3) сложились исторически и имеют конкретные имена. Если значение функции не зависит от одной из переменных (то есть строго говоря для любых двух булевых векторов, отличающихся лишь в значении этой переменной, значение функции на них совпадает), то эта переменная называется фиктивной.
Нульарные функции
При
количество булевых функций равно , первая из них тождественно равна 0, а вторая 1. Их называют булевыми константами — тождественный нуль и тождественная единица.Унарные функции
При
число булевых функций равно .Таблица значений булевых функций от одной переменной:
x | ||||
---|---|---|---|---|
0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 1 |
Сохраняет 0 | 1 | 1 | 0 | 0 |
Сохраняет 1 | 0 | 1 | 0 | 1 |
Самодвойственная | 0 | 1 | 1 | 0 |
Монотонная | 1 | 1 | 0 | 1 |
Линейная | 1 | 1 | 1 | 1 |
Названия булевых функций от одной переменной:
Обозначение | Название |
---|---|
тождественный ноль, тождественная ложь, тождественное "НЕТ" | |
тождественная функция, логическое "ДА", "YES"(англ.) | |
отрицание, логическое "НЕТ", "НЕ", "НИ", "NOT"(англ.), "NO"(англ.) | |
тождественная единица, тождественная истина, тождественное "ДА", тавтология |
Бинарные функции
При
число булевых функций равно .Таблица значений булевых функций от двух переменных:
x | y | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
Сохраняет 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
Самодвойственная | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |
Монотонная | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
Линейная | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
Названия булевых функций от двух переменных:
Обозначение | Другие обозначения | Название |
---|---|---|
тождественный ноль, тождественная ложь, тождественное "НЕТ" | ||
x И y, И(x, y) | 2И, конъюнкция | |
больше, инверсия прямой импликации | ||
ДА1(x, y) | первый операнд | |
меньше, инверсия обратной импликации | ||
ДА2(x, y) | второй операнд | |
сложение по модулю 2, не равно, ксор, исключающее «или» | ||
x ИЛИ y, ИЛИ(x, y) | 2ИЛИ, дизъюнкция | |
x ИЛИ-НЕ y, ИЛИ-НЕ(x, y) | НЕ- 2ИЛИ, 2ИЛИ-НЕ, антидизъюнкция, функция Да́ггера, функция Ве́бба, стрелка Пи́рса | |
равенство, эквивалентность | ||
НЕ2(x, y) | отрицание (негация, инверсия) второго операнда | |
больше или равно, обратная импликация (от второго аргумента к первому) | ||
НЕ1(x, y) | отрицание (негация, инверсия) первого операнда | |
меньше или равно, прямая (материальная) импликация (от первого аргумента ко второму) | ||
x И-НЕ y, И-НЕ(x, y) | НЕ-2И, 2И-НЕ, антиконъюнкция, Штрих Шеффера | |
тождественная единица, тождественная истина, тождественное "ДА", тавтология |
Тернарные функции
При
число булевых функций равно . Некоторые из них определены в следующей таблице: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 |
Названия булевых функций трех переменных:
Обозначения | Другие обозначения | Названия |
---|---|---|
3-ИЛИ-НЕ, функция Вебба, функция Даггера, стрелка Пирса | ||
Переключатель по большинству с инверсией, 3-ППБ-НЕ, мажоритарный клапан с инверсией | ||
Неравенство | ||
3-И-НЕ, штрих Шеффера | ||
= (x И y И z) = И(x,y,z) | 3-И, минимум | |
Равенство | ||
Тернарное сложение по модулю 2 | ||
(x И y) ИЛИ (y И z) ИЛИ (z И x) | переключатель по большинству, 3-ППБ, мажоритарный клапан | |
Разряд займа при тернарном вычитании | ||
Разряд переноса при тернарном сложении | ||
(x ИЛИ y ИЛИ z) = ИЛИ(x,y,z) | 3-ИЛИ, максимум |
Представление функции формулой
Определение: |
Если выбрать некоторый набор булевых функций , то с использованием выбранных функций можно записать некоторые другие булевы функции. Такая запись булевой функции называется формулой. |
Например, если
, то функция представляется в видеТождественность и двойственность
Определение: |
Две булевы функции тождественны друг другу, если на любых одинаковых наборах аргументов они принимают равные значения. |
Тождественность функций f и g можно записать, например, так:
Просмотрев таблицы истинности булевых функций, легко получить такие тождества:
А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты:
(законы де Моргана) |
(дистрибутивность конъюнкции и дизъюнкции)
Определение: |
Функция | называется двойственной функции , если .
Легко показать, что в этом равенстве f и g можно поменять местами, то есть функции f и g двойственны друг другу. Из простейших функций двойственны друг другу константы 0 и 1, а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе.
Если в булевом тождестве заменить каждую функцию на двойственную ей, снова получится верное тождество. В приведённых выше формулах легко найти двойственные друг другу пары.
Суперпозиции
Полнота системы, критерий Поста
Представление булевых функций
Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций
. Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре , который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы:- Как построить по данной функции представляющую её формулу?
- Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию?
- В частности: существует ли способ приведения произвольной формулы к эквивалентной её канонической форме, такой что, две формулы эквивалентны тогда и только тогда, когда их канонические формы совпадают?
- Как по данной функции построить представляющую её формулу с теми или иными заданными свойствами (например, наименьшего размера), и возможно ли это?
Положительные ответы на эти и другие вопросы существенно увеличивают прикладное значение выбранной системы функций.
Дизъюнктивная нормальная форма (ДНФ)
Конъюнктивная нормальная форма (КНФ)
Полином Жегалкина
Схемы из функциональных элементов
Литература
- Гаврилов Г. П., Сапоженко А. А. Сборник задач по дискретной математике. — М.: Наука, 1969.
- Кузнецов О. П., Адельсон-Вельский Г. М. Дискретная математика для инженера. — М.: «Энергия», 1980. — 344 с.
- Марченков С. С. Замкнутые классы булевых функций. — М.: Физматлит, 2000.
- Яблонский С. В. Введение в дискретную математику. — М.: Наука, 1986.
- Алексеев В. Б. Дискретная математика (курс лекций, II семестр). Сост. А. Д. Поспелов