Справочник от Автор24
Поделись лекцией за скидку на Автор24

Дискретная математика. Часть 1

  • 👀 840 просмотров
  • 📌 797 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Дискретная математика. Часть 1» pdf
Лекция 2 по дискретной математики 16.02.2021 Этот файл следует смотреть в текстовом редакторе с моноширинным шрифтом, таким как Consolas. Это нужно для выравнивания колонок, чтобы схемы и таблицы отображались правильно. На лекции рассматривается разделы 8.2 и 8.3 в учебнике Алексеева (их следует прочитать), а также следующий материал. Теорема 8.1 о разложении функции по переменной в учебнике Алексеева. Для любой логической функции f(x1, ..., xn) справедливо тождество f(x1, x2, ..., xn) = x1 & f(1, x2, ..., xn) \/ (~x1) & f(0, x2, ..., xn) (1) Проверяется подстановкой x1 = 0 и x1 = 1 в обе части равенства. Функции f(1, x2, ..., xn) и f(0, x2, ..., xn) зависят от переменных x2, ..., xn. Их можно разложить по x2: f(1, ..., f(0, ..., x2, x3, ..., xn) = x2 & f(1, 1, x3, ..., xn) \/ (~x2) & f(1, 0, x3, xn) x2, x3, ..., xn) = x2 & f(0, 1, x3, ..., xn) \/ (~x2) & f(0, 0, x3, xn) Если подставить эти равенства в (1) и раскрыть скобки, получится f(x1, x2, ..., xn) = x1x2 & f(1, 1, x3, ..., xn) \/ x1(~x2) & f(1, 0, x3, ..., xn) \/ (~x1)x2 & f(0, 1, x3, ..., xn) \/ (~x1)(~x2) & f(0, 0, x3, ..., xn). Закономерность: вместо двух первых аргументов мы подставляем всевозможные значения 0 и 1. При этом если вместо какой-то переменной подставляется 1, то значение функции умножается на саму эту переменную, а если вместо этой переменной подставляется 0, то значение функции умножается на отрицание переменной. Если вспомнить обозначение x^0 = ~x x^1 = x то при подстановке a ∈ {0, 1} вместо xi, значение функции умножается на xi^a. Получившиеся функции от n-2 аргументов можно продолжать раскладывать по x3 и т.д. После раскладывания по переменным x1, ..., xk получается 2^k функций. Они называются компонентами, или подфункциями исходной функции. Пример. Разложим функцию f(x, y, z) = (~x)(y <-> z) + xy по всем переменным. f(x, y, z) = x & f(1, y, z) \/ (~x) & f(0, y, z) f(1, y, z) = (~1)(y <-> z) \/ 1y = y f(0, y, z) = (~0)(y <-> z) \/ 0y = y <-> z Таким образом, f(x, y, z) = xy \/ (~x)(y <-> z), что было очевидно сразу. Разложим получившиеся функции y и y <-> z по y. y = y1 \/ (~y)0 y <-> z = y(1 <-> z) \/ (~y)(0 <-> z) = yz \/ (~y)(~z) Таким образом, f(x, y, z) = xy1 \/ x(~y)0 \/ (~x)yz \/ (~x)(~y)(~z). Функции 1, 0, z и ~z можно разложить по z. Получится 1 = z1 \/ (~z)1 0 = z0 \/ (~z)0 z = z1 \/ (~z)0 ~z = z0 \/ (~z)1 Итого f(x, y, z) = xyz1 \/ xy(~z)1 \/ x(~y)z0 \/ x(~y)(~z)0 \/ (~x)yz1 \/ (~x)y(~z)0 \/ \/ (~x)(~y)z0 \/ (~x)(~y)(~z)1 = xyz \/ xy(~z) \/ (~x)yz \/ (~x)(~y)(~z) Получилась СДНФ функции f. Так будет и в общем случае: если разложить f(x1, ..., xn) по всем переменным, убрать конъюнкции с 0, а из оставшихся конъюнкций убрать 1, то получится СДНФ f. Это еще одно доказательства полноты системы функций {&, \/, ~}. Раздел 8.2.2 в учебнике Алексеева использует обратный процесс собирания функции для построения ее схемы из функциональных элементов. Сначала рассматриваются 2^(n-1) функций f(a1, ..., a(n-1), xn) для всевозможных a1, ..., a(n-1) ∈ {0, 1}. Каждая из этих функций зависит только от xn, поэтому она может быть одной из четырех: 1, 0, xn или ~xn. Каждую из этих функций можно реализовать схемой. Затем рассматриваются функции f(a1, ..., a(n-2), x(n-1), xn) = = x(n-1) & f(a1, ..., a(n-2), 1, xn) \/ (~x(n-1)) & f(a1, ..., a(n-2), 0, xn). Поскольку функции f(a1, ..., a(n-2), 1, xn) и f(a1, ..., a(n-2), 0, xn) уже реализованы схемами, можно также реализовать и f(a1, ..., a(n-2), x(n-1), xn). Этот процесс продолжается, пока не получится схема для f(x1, ..., xn). Рассмотрим один шаг этого процесса. Предположим, что схемы для функций f(a1, ..., a(k+1), x(k+2), ..., xn) для всевозможных констант a1, ..., a(k+1) ∈ {0, 1} уже построены. В частности, пусть S1 есть схема со входами x(k+2), ..., xn, которая реализует f(a1, ..., ak, 1, x(k+2), ..., xn), и пусть S0 есть схема с теми же входами, которая реализует f(a1, ..., ak, 0, x(k+2), ..., xn). Тогда функцию f(a1, ..., ak, x(k+1), ..., xn) со входами x(k+1), ..., xn можно построить следующим образом. +----+ | | +---+ | S1 |-----| & | | | +-| |-----------+ +----+ | +---+ | +----+ | +---+ +--| \/ | x(k+1) --+-| ~ |--+ +--| |--> +---+ | | +----+ +----+ | +---+ | | | +-| & | | | S0 |--------------| |--+ | | +---+ +----+ Здесь S1 и S0 имеют входы x(k+1), ..., xn, которые разветвляются и идут в каждую из этих двух схем. Таким образом, по сравнению с S1 и S0 добавляются 4 функциональных элемента. Обозначим эту надстройку следующим образом x(k+1) --+ | +----+ | +---+ | | +--| | | S0 |------| 4 |--> | | +--| | +----+ | +---+ | +----+ | | | | | S1 |---+ | | +----+ и будем считать, что входами этой схемы являются x(k+1), x(k+2), ..., xn в этом порядке. Заметим, что на данном шаге у нас имеется 2^k таких схем для каждого набора a1, ..., ak. Из них в последующих шагах собирается одна схема, реализующая f(x1, ..., xn). Рассмотрим пример построения схемы для функции f = (1, 4, 6, 7, 8, 10, 13, 14, 15). Она задается следующей таблицей истинности. x1 x2 x3 x4 f f(a1, a2, x3, x4) f(a1, x2, x3, x4) ------------+-------+-------------------------+-----------------------------0 0 0 0 | 0 | | 0 0 0 1 | 1 x4 | | ------------+-------+ (~x3)x4 \/ x3 & 0 = | 0 0 1 0 | 0 | = (~x3)x4 | 0 0 1 1 | 0 0 | | ------------+-------+-------------------------+ ~(x2)(~x3)x4 \/ x2(~x4 \/ x3) 0 1 0 0 | 1 | | 0 1 0 1 | 0 ~x4 | | ------------+-------+ (~x3)(~x4) \/ x3 & 1 = | 0 1 1 0 | 1 | = ~x4 \/ x3 | 0 1 1 1 | 1 1 | | ------------+-------+-------------------------+-----------------------------1 0 0 0 | 1 | | 1 0 0 1 | 0 ~x4 | | ------------+-------+ (~x3)(~x4) \/ x3(~x4) = | 1 0 1 0 | 1 | = ~x4 | 1 0 1 1 | 0 ~x4 | | ------------+-------+-------------------------+ (~x2)(~x4) \/ x2(x4 \/ x3) 1 1 0 0 | 0 | | 1 1 0 1 | 1 x4 | | ------------+-------+ (~x3)x4 \/ x3 & 1 = | 1 1 1 0 | 1 | = x4 \/ x3 | 1 1 1 1 | 1 1 | | ------------+-------+-------------------------+-----------------------------Если строить схему по СДНФ, то для каждого минтерма потребуется от 0 до 4 отрицаний и 3 конъюнкции. Поскольку в СДНФ 9 минтермов, для их соединения нужно 8 дизъюнкций. Общее количество элементов находится между 35 и 71. В таблице также показаны результаты склейки (противоположность разложения) по переменным x2, x3 и x4. Наконец, вся функция есть f(x1, x2, x3, x4) = (~x1)(~(x2)(~x3)x4 \/ x2(~x4 \/ x3)) \/ x1((~x2)(~x4) \/ x2(x4 \/ x3)). С помощью надстройки, которую мы обозначили через 4, для f можно построить следующую схему. +---+ x1 -------------------------| | +---+ | | x2 ------------------| | | | | | | | +---+ +---+ | | | | x3 ---| ~ |--| | | | | | +---+ | & |---| |--| | x4 ----------| | | 4 | | | +---+ | | | | | | | 4 | +----+ | | | | x3 ----------| | | | | | +---+ | \/ |--| | | | x4 ---| ~ |--| | +---+ | | +---+ +----+ | | x2 x4 x3 x4 | | +---+ | | ------------------| | | | +---+ | | | | ----------| ~ |---| | | | +---+ | 4 |--| | +----+ | | +---+ ----------| | | | | \/ |--| | ----------| | +---+ +----+ Здесь на первых шагах (при склейке по x3 и x4) мы использовали следующие упрощения. x0 = 0 x1 = x 0 \/ x = x ~xy \/ xy = y ~xy \/ x = y \/ x ~x \/ xy = ~x \/ y Также входы x2, x3, x4 показаны несколько раз, так как их разветвление усложнило бы схему. В этой схеме 6 + 3*4 = 18 элементов, что меньше количества при построении схемы непосредственно по СДНФ.
«Дискретная математика. Часть 1» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

Тебе могут подойти лекции

Автор(ы) Котова С.Н., Томилова А.Е., Ширикова Т.С.
Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot