![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа № 1 Алгоритм слияния: включение, объединение и пересечение множеств.
- •Теоретическая часть
- •Варианты заданий
- •Лабораторная работа № 2 Реализация булевых функций формулами.
- •Теоретическая часть
- •Варианты заданий
- •Лабораторная работа № 3. Построение и быстрое вычисление совершенной днф.
- •Теоретическая часть
- •Быстрое вычисление сднф
- •Построение сднф
- •Варианты заданий
- •Лабораторная работа № 4 Шестнадцатеричная система. Ведение в теорию кодирования
- •Теоретическая часть
- •Варианты заданий
Варианты заданий
,
,
, ,
, ,
,
,
, ,
,
,
,
,
, ,
,
,
,
,
, ,
,
,
Лабораторная работа № 2 Реализация булевых функций формулами.
Постановка задачи. Реализовать формулы над множеством булевых функций, не используя стандартные процедуры, функции и модули, предназначенные для работы с булевыми функциями.
Теоретическая часть
Рассмотрим элементарные булевы функции
определенные на множестве
и опишем их как некоторые нестандартные
функции произвольного алгоритмического
языка:
Дизъюнкция:
Diz(x,y): if (x=0) and (y=0) then 0 else 1;
Конъюнкция:
Kon(x,y): if (x=1) and (y=0) then 1 else 0;
Отрицание:
Ne(x): if (x=0) then 1 else 0;
Импликация:
Imp(x,y): if (x=1) and (y=0) then 0 else 1;
Сумма по модулю 2:
Mod2(x,y): if ((x=0) and (y=1)) or ((x=1) and (y=0)) then 1 else 0;
Эквивалентность:
Akv(x,y): Ne(Mod2(x,y));
Штрих Шеффера:
Sheff(x,y): Ne(Kon(x,y));
Стрелка Пирса:
Pirs(x,y): Ne(Diz(x,y)).
Формулой над множеством
называется всякое (и только такое)
выражение вида:
и
, где - нуль-местный, а
- n-местный функциональные символы и
- переменные их множества
.
, где
- s-местный функциональный символ и
,
- либо формула над , либо переменная из .
Пусть заданы на множестве булевых
функций заданы две формулы
и
.
Понятие функции
,
реализуемой формулой
над множеством связок
,
вводится следующим образом:
формуле
, где
, сопоставляется тождественная функция
;
если
(или
, где
), то
(соответственно
, где символ
надо понимать уже как обозначение для соответствующей элементарной булевой функции).
Пусть
- множество тех переменных, которые
встречаются хотя бы в одной их формул
или
.
Формулы
и
называются эквивалентными (обозначение:
),
если на всяком наборе
значений переменных
значения функций
и
,
реализуемых соответственно формулами
и
,
совпадают.
Лабораторная работа состоит в построении двух формул на классе булевых функций и проверке их тождественности.
Входные параметры: матрица размерности
всех различных наборов значений
переменных и две формулы, реализующие
булевы функции
переменных.
Выходные параметры:
,
если заданные формулы неэквивалентны
и
,
если заданные формулы эквивалентны.
Указания к выполнению лабораторной работы
Построить матрицу, реализующую все различные наборы значений переменных. Построение может быть основано на принципе записи десятичных чисел в двоичных кодах или вестись по столбцам матрицы, учитывая, что в последнем столбце 0 чередуется с 1 через одну строку, во втором столбце – через две строки, в третьем – через четыре строки и т.д. Алгоритм, выполняющий данное построение, должен быть записан в виде процедуры (
) или программного модуля (
). Замечание: алгоритм должен быть построен для n переменных, где n – любое натуральное число, задаваемое с экрана.
Реализовать приведенные выше булевы функции. Алгоритм оформить в виде функций (
).
Записать указанные в задании формулы с помощью построенных функций (например, запись
примет следующий вид: Imp(Kon(x,y),z)).
Продвигаясь в цикле по строкам матрицы, вычислить значения функций, реализованных заданными формулами, на каждом наборе.
Сравнить в цикле полученные вектора
и
. Результат сравнения , если полученные вектора различны и , если полученные вектора равны между собой.