Введение в схемы, автоматы и алгоритмы


Формулы


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

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

Формулы
. Все эти функции, кроме констант, называются логическими связками или логическими операциями. При этом для 2-местных функций из этого списка будем использовать инфиксную запись, в которой имя логической связки помещается между 1-ым и 2-ым аргументами.

Зафиксируем некоторое счетное множество переменных

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

Определение 1.2.

а) Базис индукции. 0, 1 и каждая переменная

Формулы
является формулой глубины 0, т.е.
Формулы
. Множество ее подформул состоит из нее самой.

б) Шаг индукции. Пусть

Формулы
и
Формулы
- формулы,
Формулы
. Тогда выражения
Формулы
и
Формулы

являются формулами. При этом

Формулы
, а
Формулы
. Множество подформул
Формулы
включает саму формулу
Формулы
и для
Формулы
все подформулы формулы
Формулы
, а для
Формулы
все подформулы формул
Формулы
и
Формулы

Каждой формуле

Формулы
сопоставим булеву функцию, которую эта формула задает, используя индукцию по глубине формулы.

Базис индукции. Пусть

Формулы
. Тогда
Формулы
или
Формулы

В первом случае

Формулы
задает функцию
Формулы
, во втором - функцию, тождественно равную константе
Формулы
.

Шаг индукции. Пусть

Формулы
- произвольная формула глубины
Формулы
. Тогда
Формулы

или

Формулы

для некоторой булевой связки

Формулы
. Так как
Формулы
то формулам
Формулы
и
Формулы
соответствующие функции
Формулы
и
Формулы
уже сопоставлены. Тогда формула
Формулы

задает функцию

Формулы
, а формула
Формулы

задает функцию

Формулы
.

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

Пример 1.1. Например, для формулы

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

Таблица 1.3. Функция

Формулы
Формулы
 
Формулы
 
Формулы
Формулы
  
Формулы
  
Формулы
Формулы
  
Формулы
Формулы

Формулы
  
Формулы
  
Формулы
  
Формулы
  
Формулы
Формулы

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

 0  0  0 1  0

 0  0  0 1  0

 0  1  1 0  1

 0  1  1 0  1

 1  1  0 1  0

 1  1  0 1  0

 1  1  1 0  1

 1  1  1 0  1

1

1

0

1

1

0

0

1

0  0  0  0  1  0

1  1  0  0  1  0

0  0  0  0  0  1

1  1  0  0  0  1

0  1  1  1  1  0

1  0  1  1  1  0

0  0  1  0  0  1

1  1  1  0  0  1

Каждая строка этой таблицы задает процесс вычисления функции

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



Содержание раздела