Главная страница
Навигация по странице:

  • Способы задания булевых функций. 1. Табличный способ задания (таблица истинности)

  • 2. Векторный способ задания булевой функции. Вектор значений функции.

  • 3. Задание булевой функции с помощью носителя

  • 4. Геометрический способ задания булевой функции

  • 5. Задание функции с помощью формулы

  • 2. Специальные представления булевых функций . Дизъюнктивная и конъюнктивная нормальные формы

  • Совершенная дизъюнктивная нормальная форма (СДНФ)

  • Совершенная конъюнктивная нормальная форма (СКНФ)

  • Многочлен Жегалкина

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


    Скачать 0.81 Mb.
    Название1. Булевы функции и способы их задания
    Дата19.01.2023
    Размер0.81 Mb.
    Формат файлаpdf
    Имя файлаLekcija_1.pdf
    ТипДокументы
    #894267

    1. Булевы функции и способы их задания.
    Определение. Набор ̃ (
    ), где
    { }
    ̅̅̅̅̅̅̅̅̅ называется булевым или двоичным набором (вектором). Элементы набора называются компонентами или координатами. Число - длиной набора ̃.
    Определение. Множество всех двоичных наборов длины образует мерный булев куб (
    )
    Пример 1. Изобразить графически для
    {( ) ( )} –состоит из двух наборов, каждый из которых
    можно изобразить точкой на прямой ОХ.
    рис.1
    {( ) ( ) ( ) ( )} –состоит из четырех наборов,
    каждый из которых можно изобразить точкой на плоскости ХОY,
    являющейся вершиной единичного квадрата с соответствующими
    координатами.
    рис.2
    {( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )}
    состоит из восьми наборов, каждый из которых можно изобразить
    точкой пространстве ХYZ, являющейся вершиной единичного куба с
    соответствующими координатами

    рис.3
    Замечание 1. Число различных двоичных наборов длины равно
    (
    )
    Доказательство:
    Рассмотрим двоичный набор ̃ (
    )
    длины n. Поскольку
    каждая компонента может принимать одно из двух возможных
    значений либо 0 либо 1, то для заполнения каждой из nпозиций
    двоичного набора имеется 2 варианта. Таким образом, число всех
    возможных вариантов (
    )

    Определение. Каждому двоичному набору ̃ (
    ) можно взаимно однозначно сопоставить целое неотрицательное число ( ̃) такое что:
    ( ̃) ∑ называемое номером набора. ( ̃)
    .
    Например, для наборов из трех переменных номера будут такими:
    ( )
    ( )
    ( )
    ( )
    ( )
    ( )
    ( )
    ( )

    Расположение двоичных наборов одной длины по порядку возрастания их номеров называется стандартным или лексикографическим расположением наборов.
    Определение. Функция (
    ) областью определения которой является -мерный булев куб (
    ), а областью значениймножество
    { } называется булевой функцией или функцией алгебры логики.
    Множество всех булевых функций зависящих от n переменных принято обозначать
    ( )
    Способы задания булевых функций.
    1. Табличный способ задания (таблица истинности)
    Любую булеву функцию (
    ) можно представить в виде таблицы состоящей из двух столбцов: в первом в лексикографическом порядке расположены все двоичные наборы длины (всего строк), во втором в каждой строке записано значение, которое функция принимает на этом наборе
    (
    )
    ( )
    ( )
    ( )
    ( )
    ( )
    ( )
    Пример 2. Табличный способ задания функции двух переменных
    (
    )
    Наборы в первом столбце расположены в порядке возрастания номеров:
    ( )
    ( )
    ( )

    ( )
    Во втором столбце расположены значения, которые функция принимает на соответствующих наборах.
    ( )
    ( )
    ( )
    ( )
    2. Векторный способ задания булевой функции. Вектор значений
    функции.
    Поскольку в таблице истинности различных функций - переменных первый столбец всегда одинаковый, то функцию можно однозначно определить вектором соответствующим второму столбцу таблицы истинности:
    ̃ (
    )
    Где координата равна значению функции на наборе с номером
    Пример 3. Вектор значений функции из примера 2 будет равен
    ̃ ( )
    Замечание 2. |
    ( )|
    Доказательство: так как вектор значений
    ̃ (
    )
    функции n-переменных имеет
    координат, каждая из которых
    может принимать лишь два возможных значения: либо 0 либо 1,
    тогда число различных наборов длины
    будет равно
    . Значит и
    различных булевых функций от n-переменных будет
    , поскольку
    между булевой функций и ее вектором значений имеется взаимно
    однозначное соответствие.
    Пример 4. Функция задана вектором значений
    ̃ ( )
    Найдите таблицу истинности функции .
    Поскольку в векторе значений функции восемь координат и
    , то значит это функция от 3-х переменных ( ). Запишем таблицу истинности функции: первый столбик – все двоичные наборы трех
    переменных расположенные в лексикографическом порядке, во второй столбик сверху вниз запишем вектор значений функции.
    Таблица истинности данной функции:
    ̃
    3. Задание булевой функции с помощью носителя.
    Определение. Множество всех наборов ̃ (
    ) на которых функция (
    ) принимает значение 1 называется носителем функции
    { ̃
    | ( ̃) }
    Определение. Множество всех наборов ̃ (
    ) на которых функция (
    ) принимает значение 0 называется дополнением носителя функции
    ̅
    ̅
    { ̃
    | ( ̃) }
    Поскольку
    ̅
    , то если мы перечислим все наборы на которых функция принимает значение 1 (т.е. зададим носитель) – это будет достаточно для однозначного задания булевой функции.
    Пример 5. Найти носитель функции из примера 2.
    {( ) ( )},
    ̅
    {( ) ( )}
    Пример 6. Найти носитель функции из примера 4.
    {( ) ( ) ( ) ( )},
    ̅
    {( ) ( ) ( ) ( )}
    4. Геометрический способ задания булевой функции.
    Этот способ удобно применять для функций зависящих не более чем от
    4-х переменных. Для функций 1, 2,3 -х переменных на булевом кубе
    отмечают (например "жирными" точками) вершины соответствующие наборам принадлежащим носителю функции. Для функций 4-х переменных используют карту Карно (см.)
    Пример 7. Изобразить геометрически функции из примера 2 и из
    примера 4.
    ̃ ( )
    ̃ ( )
    рис.4
    5. Задание функции с помощью формулы.
    Двоичные функции одной переменной
    Существует всего 4 двоичные функции зависящие от одной переменной
    |
    ( )|
    Приведем таблицы истинности этих функций
    ( )
    ( )
    ( )
    ( )
    ( ) – тождественный нуль
    ( ) – тождественная единица
    ( ) тождественная функция
    ( ) ̅ – функция отрицание, или инверсия
    Двоичные функции двух переменных
    Двоичных функций двух переменных всего 16
    |
    ( )|

    Приведем таблицы истинности некоторых из них
    |
    1. или – функция конъюнкция, логическое умножение, логическое «и» ( ).
    2.
    – функция дизъюнкция, логическое сложение, логическое
    «или» ( )
    3.
    функция сложение по модулю 2, «исключающее или».
    Значение функции равно остатку от деления алгебраической суммы чисел и на 2.
    4.
    функция эквивалентность, логическое тождество. Функция принимает значение 1, на наборах где . Заметим, что значение функции «эквивалентность» на каждом наборе противоположно значению функции «сложение по модулю 2». Значит функцию
    «эквивалентность» можно выразить формулой:
    ̅̅̅̅̅̅
    5.
    функция импликация, «логическое следование». Для запоминания значений, которые принимает функция можно использовать правило: «из лжи может следовать все что угодно из истины следует только истина» (0-ложь, 1-истина)
    6.
    | штрих Шеффера, «не и»
    |
    ̅̅̅̅̅̅
    7.
    стрелка Пирса, «не или»
    ̅̅̅̅̅̅̅
    Перечисленные функции одной и двух переменных называются элементарными булевыми функциями. Другие двоичные функции двух и более переменных можно выразить через элементарные булевы функции с помощью формул.
    Если функция задана формулой, то говорят что, формула реализует или представляет данную функцию.
    Формулы, реализующие одну и туже функцию называются эквивалентными или равносильными.

    Порядок выполнения действий в формулах:
    1. Сначала выполняются действия в скобках
    2. Функция «отрицание переменной» выполняется прежде других булевых функций. При этом учитывается, что если отрицание относится к некоторой функции, то скобки вокруг нее могут быть опущены, например: ( )
    ̅̅̅̅̅̅̅̅̅
    ̅̅̅̅̅̅̅.
    3. выполняется раньше чем и (логическое умножение выполняется раньше сложения)
    Пример 8. Для функции заданной формулой ( ) ( )
    ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ найти вектор значений ̃.
    Искомая функция является функцией трех переменных ( ).
    Определим порядок действий: 5
    ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
    ( ) ( )
    Сначала выполняем действия в скобках и , потом логическое умножение , затем логическое сложение , функция инверсия выполняется последней так как относится к формуле, а не к переменной.
    Каждое получившихся из пяти действий соответствует элементарной булевой функций:
    ̅
    Запишем результаты этих действий в общую таблицу:
    ̅
    Последний столбец таблицы истинности является вектором значений искомой функции

    ̃( ) ( )
    Основные законы алгебры логики.
    1. Коммутативность (переместительный закон)
    Функция означает любую из функций |
    Отметим, из всех элементарных булевых функций, только функция импликация не является перестановочной: , все остальные функции не зависят от порядка переменных, например: и
    2. Ассоциативность (сочетательный закон)
    ( ) ( ), где { }
    3. Дистрибутивность (распределительный закон)
    ( )
    ( )
    ( )( )
    4. Законы де Моргана
    ̅̅̅̅̅̅ ̅ ̅
    ̅̅̅̅̅̅̅ ̅ ̅
    5. Закон двойного отрицания
    ̿
    6. Закон идемпотентности и
    7. Закон противоречия
    ̅
    8. Закон исключения третьего
    ̅
    9. Свойства констант
    ̅
    10. Закон поглощения
    ( )
    11. Закон склеивания
    ̅
    12. Законы сложения по модулю два

    ̅
    ̅
    В справедливости этих законов, можно убедиться путем сопоставления таблиц истинности для левой и правой частей равенств.
    2. Специальные представления булевых функций.
    Дизъюнктивная и конъюнктивная нормальные формы
    Введем обозначение
    {
    ̅ то есть
    ̅ и
    Определение. Логическое произведение переменных или их отрицаний называется элементарной конъюнкций
    Например,
    ,
    ̅
    ,
    ̅
    ̅
    – элементарные конъюнкции.
    Определение. Логическая сумма переменных и их отрицаний называется элементарной дизъюнкцией например:
    ,
    ̅
    ,
    ̅
    ̅
    – элементарные дизъюнкции.
    Замечание 1. В элементарную конъюнкцию или дизъюнкцию не может
    одновременно входить переменная и ее отрицание. (
    ̅
    ̅
    не
    является элементарной конъюнкцией).
    Определение. Количество переменных и отрицаний переменных входящих в элементарную конъюнкцию (дизъюнкцию) называется ее рангом (обозначение )
    Например, для ранг равен 1
    ( ), для
    ̅
    ̅
    ранг равен 3 ( )

    Определение. Дизъюнктивная нормальная форма ( )– это формула, в которой функция представлена в виде дизъюнкции элементарных конъюнкций.
    Определение. Конъюнктивная нормальная форма ( )– это формула, в которой функция представлена в виде конъюнкции элементарных дизъюнкций.
    Определение. Сумма всех рангов элементарных конъюнкций
    (дизъюнкций) входящих в форму называется рангом формы (или сложностью формы)
    Совершенная дизъюнктивная нормальная форма (СДНФ)
    Определение. Представление функции в виде дизъюнкции элементарных конъюнкций построенных по всем наборам принадлежащим носителю функции называется совершенной дизъюнктивной нормальной формой
    (СДНФ)
    (
    )
    ̃
    Алгоритм построения СДНФ.
    1. Находим наборы
    ̃ (
    ) входящие в носитель функции
    , такие что (
    )
    2. Для каждого набора составляем соответствующую ему элементарную конъюнкцию
    ̃
    3. Соединяем все полученные конъюнкции знаком
    , получившаяся форма является СДНФ
    ̃
    ̃
    Пример 1. Найти СДНФ функции заданной вектором значений
    ̃ ( )
    Выпишем таблицу истинности данной функции ( ).
    Подчеркнем наборы принадлежащие носителю функции, по каждому из этих наборов составляем элементарную конъюнкцию
    ̃
    ̅ ̅ ̅
    ̅ ̅

    ̅ ̅
    ̅
    Составляем СДНФ
    ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
    Теорема 1. Любая булева функция, не являющаяся константой, может быть представленная СДНФ.
    Замечание 1.
    |
    | , где |
    |- число наборов в носителе.
    Доказательство. Каждая из элементарных конъюнкций, входящих в
    СДНФ имеет ранг n, число таких конъюнкций равно числу наборов в
    носителе функции, следовательно
    |
    | .
    Совершенная конъюнктивная нормальная форма (СКНФ)
    Определение. Представление функции в виде конъюнкции элементарных дизъюнкций построенных по всем наборам принадлежащим дополнению носителя функции называется совершенной конъюнктивной нормальной формой (СКНФ)
    (
    )
    ̃
    ̅
    (
    ̅
    ̅
    ̅
    )
    Алгоритм построения СКНФ:
    1. Находим наборы
    ̃ (
    ) входящие в дополнение носителяфункции
    ̅
    , т.е. такие что (
    ) .
    2. Для каждого набора составляем соответствующую ему элементарную дизъюнкцию
    ̃
    ̅
    ̅
    ̅
    3. Соединяем все полученные дизъюнкции знаком
    , получившаяся форма является СКНФ
    ̃
    ̅
    ̃
    Пример 2. Найти СКНФ функции заданной вектором значений
    ̃ ( ) из примера 1.

    Подчеркнем наборы принадлежащие дополнению носителю функции, по каждому из этих наборов составляем элементарную дизъюнкцию
    ̃
    ̅
    ̅
    ̅
    ̅
    ̅
    ̅
    ̅
    ̅ ̅
    ̅
    ̅
    ̅
    ̅ ̅
    Составляем СДНФ
    ( ̅ )( ̅ ̅)( ̅ ̅)
    Теорема 2. Любая булева функция, не являющаяся константой, может быть представленная как СКНФ.
    Замечание 2.
    |
    ̅
    | , где |
    ̅
    |- число наборов принадлежащих дополнению носителя.
    Замечание 3. Если функция является тождественной константой ( ̃) или ( ̃) , ее тоже можно представить в виде суперпозиции переменной, отрицания переменной, , .
    Например, возможны следующие представления: ̅ и ̅
    Многочлен Жегалкина
    Определение. Формула вида
    ( ̃) называется многочленом Жегалкина.
    Другими словами это сумма по модулю два всех возможных элементарных конъюнкций, не содержащих отрицаний.
    - либо 0 либо 1
    Теорема 3 (Жегалкин И.И.). Любая булева функция представима в виде многочлена Жегалкина причем единственным образом (с точностью до перестановки слагаемых).

    Рассмотрим два алгоритма для нахождения многочлена Жегалкина.
    Алгоритм 1 построения многочлена Жегалкина (посредством СДНФ)
    1. В СДНФ функции заменить все символы на символы .
    2. Выносим за скобки одинаковые сомножители и упрощаем формулу, применяя закон: ̅ ( ̅) (так как ̅ ).
    3. Все отрицания переменных
    ̅
    заменяем на выражения
    4. Раскрываем скобки, применяя сочетательный и распределительный законы алгебры логики, приводим подобные члены, вычеркивая одинаковые пары слагаемых, поскольку .
    5. Полученный в результате преобразований многочлен будет многочленом Жегалкина для данной функции.
    Пример 3. Найти многочлен Жегалкина для функции из примера 1, используя СДНФ.
    В примере 1 мы нашли СДНФ для ̃ ( )
    ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
    1. Заменяем знак на знак
    ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
    2. Вынесем за скобки общие множители и упростим формулу, учитывая что ̅
    ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅( ̅ ) ̅ ̅ ( ̅ ) ̅ ̅ ̅ ̅
    3. Заменим все отрицания переменных
    ̅
    и раскроем скобки
    ̅ ̅ ̅ ̅ ( )( ) ( )( )
    ( ) ( )
    Вычеркиваем одинаковые пары слагаемых, так как
    Алгоритм 2 построения многочлена Жегалкина (метод треугольника)
    1. Выписываем левый столбец таблицы истинности (он одинаков для всех функций переменных)
    2. Вектор значений функции выписываем горизонтально в первую строку, т.е. около набора из всех нулей.

    3. Заполняем строку стоящую ниже: находим сумму по модулю 2 всех пар соседних элементов вышестоящей строки.
    В каждой следующей строке элементов будет на 1 меньше чем впредыдущей, в последней строке будет 1 элемент
    4. Крайние левые значения полученных строк будут коэффициентами многочлена Жегалкина (конъюнкция будет состоять из тех переменных, которые в наборе стоящим в данной строке в первом столбце принимают значение 1)
    Пример 4. Найти многочлен Жегалкина для функции ̃ ( ) из
    примера 1 используяметод треугольника.
    1. Заполним первый столбец таблицы истинности и расположим вектор значений функции в первой строке
    1 1 0 0 1 0 1 1 2. Заполним вторую строку: берем два соседних элемента это 1 и 1, находим их сумму по модулю 2, так как , то получившийся 0 записываем во вторую строку, между элементами которые складывали
    1 1 0 0 1 0 1 1 0 берем следующие два соседних элемента первой строки это 1 и 0, находим их сумму по модулю 2, так как , то получившийся 1 записываем во вторую строку, между элементами которые складывали
    1 1 0 0 1 0 1 1 0 1

    3. Аналогично поступаем с каждой парой соседних элементов первой строки, записываем получившиеся суммы во вторую строку
    1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 4. Потому же принципу заполняем оставшиеся строки
    1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1
    5. Первый (наклонный столбик) получившегося треугольника – это коэффициенты многочлена Жегалкина. Подчеркиваем 1 стоящие в наклонном столбике и наборы переменных в соответствующей строке.
    1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1
    Для подчеркнутых наборов построим конъюнкции по правилу: в конъюнкцию входят переменные равные 1 на рассматриваемом наборе.
    Выпишем конъюнкции для нашего примера.

    1 1 0 0 1 0 1 1 1- свободный член
    0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1
    Составляем многочлен Жегалкина. Коэффициент, находящийся в строке надо поставить перед конъюнкцией, выписанной в этой строке и соединить между собой получившиеся произведения знаком . Если некоторый коэффициент равен нулю, то такая конъюнкция не будет входить в многочлен Жегалкина (
    ), поэтому на 0 в наклоном столбике можно не обращать внимания. Если коэффициент равен 1, то соответствующую конъюнкцию мы записываем в многочлен
    Жегалкина, однако сам коэффициент перед конъюнкцией не пишут
    (
    ). Многочлен Жегалкина в нашем примере:
    Пример 5. (задание типового расчета)
    Для функции заданной формулой
    (( ) ( ̅ )) (( ̅| ) ( ̅ ̅))
    ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ найдите таблицу истинности, вектор значений, носитель функции и его дополнение, СДНФ, СКНФ и многочлен Жегалкина.
    1. Построим таблицу истинности. Разобьем функцию на элементарные, согласно правилам порядка выполнения действий в формулах.
    значение функции записано в первом столбике таблицы истинности
    ̅ – второй столбик
    – третий столбик
    четвертый столбик
    | пятый столбик
    ̅шестой столбик
    ̅седьмой столбик

    восьмой столбик
    девятый столбик
    ̅ десятый столбик
    одиннадцатый столбик x y z
    1 2
    3 4
    5 6
    7 8
    9 10 11 0
    0 0
    0 1
    0 0
    1 1
    1 1
    0 1
    1 0
    0 1
    0 1
    1 0
    0 1
    0 1
    0 1
    1 0
    1 0
    1 1
    0 0
    1 0
    1 1
    0 1
    1 0
    1 1
    1 1
    1 1
    0 0
    0 0
    1 0
    0 1
    0 0
    1 0
    1 1
    1 1
    1 1
    0 1
    1 1
    0 1
    1 0
    0 0
    1 1
    0 1
    0 1
    1 1
    1 0
    0 0
    1 0
    1 0
    1 1
    0 1
    1 1
    1 1
    0 0
    0 0
    1 0
    0 0
    0 1
    1 2. Вектор значений ̃ ( ) (последний столбик таблицы истинности).
    3.Носитель функции
    {( ) ( ) ( ) ( ) ( ) ( ) ( )}
    ̅̅̅ = {(011)} - дополнение носителя.
    4.
    ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ , .
    5.
    ̅ ̅
    ,
    6. Найдем многочлен Жегалкина
    1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0


    написать администратору сайта