Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДМ_Глава 2_БФ.doc
Скачиваний:
27
Добавлен:
15.11.2019
Размер:
4.32 Mб
Скачать

Глава 2. Булевы функции

Часть 1

§ 2.1. Булевы функции и способы их задания

2.1.1. Понятие булевой функции.

Определение. Упорядоченный набор , где , называется булевым вектором.

Числа называются координатами вектора, число - его длиной. Кратко такой вектор обозначают .

Например, (0,0), (0,1), (1,0), (1,1) - булевы векторы длины 2; (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1) - булевы векторы длины 3.

Упражнение 2.1. Сколько существует булевых векторов длины n?

◄ Используем для подсчета правило произведения. Напомним, что звучит оно так: если объект может быть выбран способами и после каждого из таких выборов объект в свою очередь может быть выбран способами, то выбор « и » в указанном порядке может быть осуществлен способами.

При построении конкретного булевого вектора будем последовательно выбирать n объектов – его координат. Первую координату можно выбрать двумя способами, взяв в качестве либо 0, либо 1; вторую координату также можно выбрать двумя способами, взяв в качестве либо 0, либо 1 и т.д., и, наконец, n-ю координату также можно выбрать двумя способами, взяв в качестве либо 0, либо 1. Таким образом, последовательный выбор n координат можно сделать способами. Следовательно, число булевых векторов длины n равно .►

Множество всех булевых векторов длины называют единичным -мерным кубом и обозначают . Весом вектора называется число его координат, равных 1. Сами векторы называются вершинами куба . Расстоянием (Хэмминга) между вершинами и куба называется число , равное числу координат, в которых они различаются. Вектора и называются соседними, если , и противоположными, если .

Например, расстояние между векторами и равно 2. Векторы и - соседние, а и – противоположные.

Решив Задачу 2.1, мы показали, что .

Упражнение 2.2. а) Сколько существует булевых векторов длины 16, у которых у которых ?

б) Сколько существует булевых векторов длины , которые одинаково читаются слева направо и справа налево?

а) Для подсчета используем правило произведения. Чтобы составить требуемый вектор, нам достаточно последовательно выбрать восемь координат . В качестве каждой из них можно взять одно из двух чисел: 0 или 1. Таким образом, общее число векторов требуемого вида равно .

б) Решить самостоятельно.►

Упражнение 2.3. а) Перечислить булевы векторы длины 4, вес которых равен 2.

б) Найти число булевых векторов длины n, вес которых равен k.

а) , , , , , .

б) Каждый такой вектор определяется набором k номеров единичных координат. Каждый такой набор представляет собой неупорядоченную выборку из n элементов по k, в которой элементы не повторяются. Напомним, что такие выборки называются сочетаниями из n элементов по k. Их число равно .►

Положим . Число называется номером булева вектора.

В частности, если имеем: . Пусть например, , тогда .

Упражнение 2.2. Перечислить в порядке возрастания номеров:

а) булевы векторы длины 2;

б) булевы векторы длины 3.

а) Для каждого булева вектора длины 2 вычислим номер:

, ,

, .

Следовательно, искомый порядок таков: (0,0), (0,1), (1,0), (1,1).

б) решить самостоятельно.►

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

Чтобы задать булеву функцию от переменных достаточно указать ее значение (0 или 1) для каждого набора значений аргументов . Удобно использовать для этого таблицу истинности:

0

0

0

0

0

0

0

1

0

0

1

0

1

1

1

1

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

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

Например, запись , означает, что - функция от 2-х переменных и , , , .

Упражнение 2.5. Сколько существует булевых функций от переменных?

◄ Поскольку каждая булева функция от переменных однозначно определяется вектором значений длины , то булевых функций от переменных столько, сколько булевых векторов длины , т.е. . ►

Множество булевых функций от переменных обозначают , множество всех булевых функций - . Решив задачу 2, мы показали, что .