Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]


Таблицы булевых функций и булев оператор

Таблицы булевых функций и булев оператор


Булева функция от п переменных может быть задана таблицей, состоящей из двух столбцов и 2^n строк. В первом столбце перечисляются все наборы из \mathbb{B}^n в лексикографическом порядке, а во втором — значения функции на наборах. Форма таблицы произвольной булевой функции приведена ниже (табл. 6.1).


\begin{aligned} \mathit{Table~6.1}~&\\ \begin{array}{|c|c|}\hline x_1\ldots x_n & f(x_1,\ldots, x_n) \\\hline 0\ldots0 & f(0,\ldots,0)\\ \ldots & \ldots\\ (\alpha_{k,1}\ldots \alpha_{k,n}) & f(\alpha_{k,1},\ldots, \alpha_{k,n})\\ \ldots & \ldots\\ 1\ldots1 & f(1,\ldots,1)\\\hline \end{array}& \end{aligned}

В (k+1)-й строке таблицы расположен набор \widetilde{\alpha}_k=(\alpha_{k,1}\ldots \alpha_{k,n}), являющийся двоичным кодом числа k (при 0\leqslant k\leqslant 2^n-1).


Рассмотрим некоторые примеры булевых функций, которые будем задавать посредством таблиц.


При n=1 имеем четыре булевы функции (табл. 6.2).


\begin{aligned} \mathit{Table~6.2}~&\\ \begin{array}{|c||c|c|c|c|} \hline x& f_1(x)& f_2(x)& f_3(x)& f_4(x)\\\hline 0&0&0&1&1\\ 1&1&0&1&0\\\hline \end{array}& \end{aligned}

Функцию f_1 называют тождественной функцией, а функцию f_4 — отрицанием. Функции f_2 и f_3 являются функциями (от одного переменного), принимающими постоянное значение (0 и 1 соответственно). Их также зачастую называют константой 0 и константой 1. Постоянные функции, разумеется, могут быть определены и при любом (большем 1) числе переменных.


В табл. 6.3 указаны семь (из 2^{2^2}=16) наиболее важных для дальнейшего изложения булевых функций от двух переменных.


\begin{aligned} \mathit{Table~6.3}~&\\ \begin{array}{|c|c||c|c|c|c|c|c|c|} \hline x_1& x_2& f_1& f_2& f_3& f_4& f_5& f_6& f_7\\\hline 0&0&0&0&0&1&1&1&1\\ 0&1&1&0&1&1&0&1&0\\ 1&0&1&0&1&0&0&1&0\\ 1&1&1&1&0&1&1&0&0\\\hline \end{array}& \end{aligned}

Поскольку каждая булева функция от двух переменных есть одновременно и бинарная операция на множестве \{0;1\}, то естественно для таких функций использовать запись, принятую для бинарных операций: x\,\omega\,y вместо \omega(x,y).


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


\begin{array}{ll}f_1(x_1,x_2)=x_1\lor x_2,&\qquad f_4(x_1,x_2)=x_1\to x_2,\\[2pt] f_2(x_1,x_2)=x_1\cdot x_2,&\qquad f_5(x_1,x_2)=x_1\sim x_2,\\[2pt] (f_2(x_1,x_2)=x_1\land x_2)&\qquad f_6(x_1,x_2)=x_1\mid x_2,\\[2pt]f_3(x_1,x_2)=x_1\oplus x_2,&\qquad f_7(x_1,x_2)=x_1\downarrow x_2. \end{array}

Функцию f_1 называют дизъюнкцией, f_2 — конъюнкцией, f_3 — сложением по модулю 2 (\operatorname{mod}2), f_4 — импликацией, f_5 — эквивалентностью, f_6 — штрихом Шеффера, f_7 — стрелкой Пирса.


Дизъюнкция и конъюнкция, как видно, — это операции двухэлементной булевой алгебры — объединение и пересечение соответственно (тогда как функция отрицания есть не что иное, как дополнение в этой булевой алгебре). В то же время дизъюнкция и конъюнкция — это не что иное, как одноименные логические операции. Очевидным образом с логическими связками, помимо отрицания, соотносятся импликация и эквивалентность (хотя их обозначения как булевых функций несколько отличаются от обозначений в математической логике). Таблицы для введенных булевых функций являются тогда не чем иным, как формой представления таблиц истинности.


Далее, можно заметить, что сложение по модулю 2 совпадает с операцией сложения кольца вычетов \mathbb{Z}_2 по модулю 2, штрих Шеффера есть отрицание конъюнкции, а стрелка Пирса — отрицание дизъюнкции, т.е.


x_1\mid x_2=\overline{x_1\cdot x_2},\qquad x_1\downarrow x_2= \overline{x_1\lor x_2}.

Приведем для примера таблицу булевой функции от трех переменных (табл. 6.4).


\begin{aligned} \mathit{Table~6.4}~&\\ \begin{array}{|c||c|c|c||c|} \hline & x_1& x_2& x_3& f(x_1,x_2,x_3)\\\hline \scriptstyle{\mathsf{0}}& 0&0&0&0\\ \scriptstyle{\mathsf{1}}& 0&0&1&0\\ \scriptstyle{\mathsf{2}}& 0&1&0&0\\ \scriptstyle{\mathsf{3}}& 0&1&1&1\\ \scriptstyle{\mathsf{4}}& 1&0&0&0\\ \scriptstyle{\mathsf{5}}& 1&0&1&1\\ \scriptstyle{\mathsf{6}}& 1&1&0&1\\ \scriptstyle{\mathsf{7}}& 1&1&1&1\\\hline \end{array}& \end{aligned}

Эта функция называется мажоритарной функцией или функцией голосования. Заметим, что в первом столбце табл. 6.4 для каждого набора из \{0;1\}^3 указан его номер, т.е. число, двоичным кодом которого служит данный набор.


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


Кроме того, полезно иметь в виду, что, записывая таблицу булевой функции от п переменных, нет необходимости каждый раз перечислять все наборы длины n — достаточно записать вектор значений булевой функции, понимая, что i-я компонента этого вектора есть значение функции на i-м наборе (двоичном коде числа i).


Тогда мажоритарная функция f может быть задана так: f=(0,0,0,1,0,1,1,1).


Можно также перечислить номера тех наборов, на которых функция принимает значение 1: f=\{3,5,6,7\}.




Булев оператор


Обобщением понятия булевой функции служит понятие булева оператора. Булев оператор — это произвольное отображение вида


f\colon\mathbb{B}^n\to\mathbb{B}^m
(6.3)

для произвольных n,m\in\mathbb{N}\cup\{0\}.


Булев оператор (6.3) может быть задан посредством семейства булевых функций в виде


\left\{\!\begin{gathered}y_1=f_1(x_1,x_2,\ldots,x_n),\hfill\\ y_2= f_2(x_1,x_2, \ldots, x_n),\hfill\\[-7pt] \vdots \\[-5pt] y_m=f_m(x_1,x_2,\ldots,x_n).\hfill \end{gathered}\right.
(6.4)

Функции f_i в (6.4) будем называть координатными функциями булева оператора (6.3). Бели ввести векторы переменных \boldsymbol{y}=(y_1,y_2,\ldots,y_m) и \boldsymbol{x}= (x_1,x_2,\ldots,x_n), то булев оператор (6.3), заданный семейством координатных функций (6.4), можно записать в таком виде:


\boldsymbol{y}=f(\boldsymbol{x}).
(6.5)
Математический форум (помощь с решением задач, обсуждение вопросов по математике).
Кнопка "Поделиться"
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved