Булевы функции
Доклад, 14 Декабря 2012, автор: пользователь скрыл имя
Описание работы
Алгебра логики - предельно важная для цифровых компьютеров тема. И с точки зрения их устройства, схемотехники, и с точки зрения их функционирования и программирования поведения. Действительно, мало-мальски сложное действие невозможно без обратной связи, без анализа условий выполнения. Например, "ЕСЛИ нам хочется пить, ТО мы пьём, ИНАЧЕ мы даже не думаем об этом".
Файлы: 1 файл
булевы функции.doc
— 209.50 Кб (Скачать файл)
ФЕДЕРАЛЬНОЕ
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
РОССИЙСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Доклад
«Булевы функции»
Липатова А.Н.
Проверил: проф. Жаров В. К.
Москва, 2012
Введение
Алгебра логики - предельно важная для цифровых компьютеров тема. И с точки зрения их устройства, схемотехники, и с точки зрения их функционирования и программирования поведения. Действительно, мало-мальски сложное действие невозможно без обратной связи, без анализа условий выполнения. Например, "ЕСЛИ нам хочется пить, ТО мы пьём, ИНАЧЕ мы даже не думаем об этом". "ЕСЛИ компьютер не работает И питание включено, ТО компьютер сгорел". "ЕСЛИ точка левее левой стороны квадрата ИЛИ правее правой, ТО точка расположена не в квадрате". "Ревёт ли зверь в лесу глухом, трубит ли рог, гремит ли гром...". "Кошелёк или жизнь".
Вот как трактует логику толковый словарь: "Логика - наука, изучающая способы обоснования суждений, доказательства, мышления и логического вывода. В математической логике используются для этого методы алгебры или теории алгоритмов". "Алгебра логики (булева алгебра) - раздел математики, изучающий методы оперирования логическими (булевыми) переменными, принимающими только два значения - истина и ложь. Предложен английским математиком Джорджем Булем". Добавим только, что помимо манипуляций константами "да" и "нет" логические переменные могут являться результатом применения к числам операторов отношения (меньше, больше, равно и т.п.).
В компьютерах булевы переменные представляются (кодируются) битами (разрядами двоичной системы счисления), где 1 обычно означает истину, а 0 - ложь. Вот ещё одно достоинство двоичной системы счисления! "Но да будет слово ваше: да, да; нет, нет; а что сверх этого, то от лукавого" (Евангелие от Матфея 5,37).
Обратите внимание: суть обсуждаемого здесь - в манипуляции высказываниями и их комбинациями для получения некоего единственного результата, который можно использовать, например, для выбора той или иной последовательности действий. Более того, поскольку логические переменные кодируются по тем же принципам, что и числа, символы и прочая информация, то можно комбинировать операции логики с операциями арифметики для реализации различных алгоритмов (например, быстрого алгоритма формирования циклического кода, заключающегося в делении полиномов и предназначенного для обнаружения и исправления ошибок при хранении и передаче данных).
Теперь отвлечёмся от интерпретации логических переменных и сосредоточимся на логических функциях.
"
Функция f, зависящая от n переменных x1, x2, ...., xn, называется булевой, или переключательной, если функция f и любой из ее аргументов Xi, (i E 1..n) принимают значения только из множества {О, 1}. Аргументы булевой функции также называются булевыми.
Произвольная булева функция задается одним из трех способов: матричным (табличным), геометрическим и аналитическим.При матричном способе булева функция f (х1, ...,хn) задается таблицей истинности (табл. 1.1 и 1.2), в левой части которой представлены все возможные двоичные наборы длины n, а в правой указывается значение функции на этих наборах.
Таблица 1.1 |
Таблица 1.2 |
||
х1х2х3 |
Номер |
||
000 |
0 |
0 |
0 |
Под двоичным набором y = < y1, y2,...,yn>
yi E {0, 1} понимается совокупность значений
аргументов х1, х2, ..., xn
булевой функции f. Двоичный набор имеет
длину n, если он представлен n цифрами
из множества {0,1}. В табл. 1.1 передставлены
все двоичные наборы длины 3.
Иногда двоичные наборы в таблице истинности
булевой функции удобно представлять
номерами наборов. Запишем аргументы х1,
х2, ..., xn в порядке возрастания
их индексов. Тогда любой двоичный набор
y = < y1, y2,...,yn> yi
E {0, 1} можно рассматривать как целое двоичное
число N:
N=y1*2n-1+y2*2n-2+...+yn
называемое номером набора y. Например,
двоичные наборы 101 и 111 имеют номера 5 и 7 соответственно.
Очевидно, любая булева функция может
быть задана таблицей истинности, в которой
двоичные наборы заменены своими номерами
(табл. 1.2).
Булевы функции, зависящие от большого
числа переменных, задавать таблицей истинности
неудобно в силу ее громоздкости. Например,
таблица истинности булевой функции 8
переменных будет содержать 28 = 256
строк. Поэтому для задания функций многих
переменных удобно использовать модификацию
таблицы истинности.
Рассмотрим способ построения такой таблицы
истинности для функции n переменных. Множество
из n переменных функции разбивается на
два подмножества: х1, х2, ...,
хj-1 и хj, хj+1, ..., хn.
Переменными x1, x2, ..., xn
отмечают строки таблицы истинности, задавая
в каждой строке значение соответствующего
двоичного набора длины j-1. Переменными
xj, xj+i, ..., xn отмечают
ее столбцы, задавая в каждом столбце значения
соответствующего двоичного набора длины
n-j+1. Значение функции записывается в клетке
на пересечении соответствующей строки
и столбца (табл. 1.3).
Таблица 1.3 |
||||
x1,x2,...xj-1 |
xj, xj+1, ...,xn | |||
|
00...0 |
0...1 |
... |
11...1 | |
00...0 |
... |
|||
00...1 |
... |
|||
... |
... |
... |
... |
... |
11...1 |
||||
При геометрическом способе булева
функция f (х1, ..., хn) задается
с помощью n-мерного куба. В геометрическом
смысле каждый двоичный набор у = <y1,
y2,...,yn> yi E {0,1} есть n-мерный
вектор, определяющий точку n-мерпого пространства.
Исходя из этого, все множество наборов,
на которых определена функция n переменных,
представляется вершинами n-мерного куба.
Отмечая точками вершины куба, в которых
функция принимает единичное (либо нулевое)
значение, получим геометрическое представление
функции. Например, булева функция, заданная
табл. 1.1, геометрически представляется
3-мерным кубом (рис. 1).
При аналитическом способе булева
функция задается формулами, т. е. аналитическими
выражениями, построенными на основе операций
булевой алгебры. Аналитический
способ задания булевых функций
занимает особое место в проектировании цифровых
автоматов. Фактически, все преобразования
над булевыми функциями, необходимые для
построения цифровых автоматов, ведутся
на аналитическом уровне.
Рассмотрим области определения булевых
функций. Как уже отмечалось, между двоичными
наборами и двоичными числами существует
взаимно однозначное соответствие. Следовательно,
существует 2n различных наборов
двоичных переменных.
Таким образом, областью определения булевой
функции n переменных при матричном способе
задания является множество всех возможных
двоичных наборов длины n, а при геометрическом
способе задания - множество всех вершин
n-мерного единичного куба.
Булеву функцию, определенную на всех
своих наборах, называют полностью определенной.
В табл. 1.1, 1.2 приведены примеры полностью определенных
булевых функций.
Булеву функцию n переменных называют неполностью определенной
или частичной, если
она определена не на всех двоичных наборах
длины n. Неполностью определенная булева
функция не попадает под определение,
данное в начале , но при произвольном
доопределении (на всех наборах, на которых
она не определена) это несоответствие
снимается.
Легко убедиться, что если булева функция
f не определена на m наборах аргументов,
то путем ее доопределения можно получить
2m различных полностью определенных
функций. В табл. 1.5 приведен пример неполностью
определенной булевой функции трех переменных.
Таблица 1.5 |
|
х1х2х3 |
F |
000 |
0 |
Существует не более чем 22^n различных булевых
функций n переменных. К этому выводу легко
прийти, пользуясь простыми комбинаторными
рассуждениями, и вспомнив, что на каждом
из 2n наборов функции могут принимать
два значения.
Функции двух переменных представлены
в табл. 1.6.
Наиболее часто употребляются следующие:
Таблица 1.6 |
||||||||||||||||
х1х2 |
f0 |
f1 |
f2 |
f3 |
f4 |
f5 |
f6 |
f7 |
f8 |
f9 |
f10 |
f11 |
f12 |
f13 |
f14 |
f15 |
|
00 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
f0 (x1, x2) = 0 - тождественный ноль
(константа 0);
f1 (x1, x2) = x1 * x2 - конъюнкция. Вместо знака
"*" иногда употребляется знак &
или /\. Эту функцию часто называют логическим
произведением или логическим умножением;
f3 (x1, х2) = x1 - повторение x1;
f5 (x1, x2) = x2 - повторение х2;
f6 (x1, x2) = х1
x2 - сложение по модулю 2 или сумма mod 2 (далее
+);
f7 (х1, х2) = x1 V x2 - дизъюнкция (логическое
ИЛИ);
f8 (x1, x2) = x1 | х2 - функция Вебба (стрелка Пирса);
f9 (х1, х2) = x1 ~ x2 - эквивалентность;
f13(x1, x2) = x1 —> x2 - импликация;
f14(x1, x2) = x1\x2 - штрих Шеффера;
f15(x1, x2) = 1-тождественная единица (константа
1).
Рассмотренные простейшие булевы функции
позволяют строить новые булевы функции
с помощью обобщенной операции, называемой операцией суперпозиции.
Фактически операция суперпозиции заключается
в подстановке вместо аргументов других
булевых функций (в частности аргументов).
Например, из функции f1 (x1, x2) с помощью
подстановки f3 (х4, x8), f2 = x3 вместо аргументов
х1 и х2 соответственно получаем функцию
f1 (f3 (x4, x8), x3). Последняя от переменных х1,
и х2 уже не зависит.
Отметим, что реально элементарной функции
соответствует реализующий ее элемент,
а суперпозиции булевых функций соответ-ствует
соединение элементов
Операция суперпозиции позволяет увидеть качественный
переход от n = 1 к n = 2. Действительно, суперпозиция
функций одного аргумента порождает функции
одного аргумента. Суперпозиция функций
двух аргументов дает возможность строить
функции любого числа аргументов (в приведенном
примере построена функция трех переменных).
Суперпозиция булевых функций представляется
в виде логических формул. Однако следует
отметить:
- одна и та же функция может быть представлена разными формулами;
- каждой формуле соответствует своя суперпозиция и, следова-тельно, своя схема соединений элементов;
- между формулами представления булевых функций и схемами, их реализующими, существует взаимооднозначное соответствие.
Очевидно, среди
схем, реализующих данную функцию, есть
наи-более простая. Поиск логической формулы, соответствующей
этой схеме, представляет большой практический
интерес, а преобразование формул булевых
функций основано на использовании соотноше-ний
булевой алгебры.
Для булевой алгебры определены одна одноместная
(унарная) операция "отрицание", две
двухместные (бинарные) операции конъюнкция
и дизъюнкция (обозначаются "*" (прим.
далее "*" упускается), "v" соответственно).
В этой алгебре справедливы три аксиомы:
- закон коммутативности - х v у = у V х, ху = ух;
- закон ассоциативности - (х v у) v z = х v(y v z), (х y) z = х(у z);
- закон дистрибутивности - х (у v x) = ху v хz, х v y * z = (х v y)(х v z).
Под бинарной операцией
на множестве А, в общем случае
пони-мают отображение декартового
произведения множеств (A Х А) в множество
А. Иными словами, результат применения бинарной
операции к любой упорядоченной паре элементов
из А есть также элемент из множества А.
Под унарной операцией на множестве А
понимают выделение (фиксацию) какого-либо
элемента множества А.
Преобразование формул булевых функций
применением только аксиом булевой алгебры
малоэффективно. Для упрощения формул
используется целый ряд соотношений.
Теоремы де Моргана
Алгебра Жегалкина
В ряде случаев,
преобразования над формулами булевых
функ-ций удобно призводить в алгебре Жегалкина.
Алгебра Жегалкина включает две двухместные
операции: конъюнкцию и сложение по модулю
2 (*,
(прим. далее + ) ), а также
константу 1. Здесь имеют место те же законы: