Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DiskretMat(lab).doc
Скачиваний:
8
Добавлен:
17.11.2019
Размер:
1.84 Mб
Скачать

Теоретическая часть

Любая булева функция может быть представлена в виде

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

Быстрое вычисление значения СДНФ имеет не только теоретическое, но и большое практическое значение. Например во многих современных программах с графическим интерфейсом для составления сложных логических условий используется наглядный бланк в виде таблицы: в клетках записываются условия, причем клетки одного столбца считаются соединенными конъюнкцией, а столбцы – дизъюнкцией, т.е. образуют ДНФ (или наоборот, в этом случае получается КНФ). В частности, так устроен графический интерфейс QBE, применяемый для формулировки логических условий при запросе к СУБД.

Быстрое вычисление сднф

Входные параметры: матрица V размерности всех различных наборов значений переменных, формула, реализующая СДНФ.

Выходные параметры: вектор F соответствующих значений СДНФ.

Алгоритм быстрого вычисления реализуется на основе процедуры next, которая осуществляет переход к следующему «слагаемому» ДНФ, как только в текущем слагаемом обнаруживает «сомножитель», равный нулю, и осуществляет выход из цикла, как только одно из «слагаемых» равно единице.

Построение сднф

Входные параметры: вектор X идентификаторов переменных (array[1..n] of char), матрица V размерности всех различных наборов значений переменных, вектор F соответствующих значений функции.

Выходные параметры: вектор - последовательность символов, образующих запись формулы СДНФ для заданной функции (array[1..m] of string), где , - число единиц в векторе F.

  1. Автоматически (в цикле) определить число единиц в векторе F. Дальнейшие циклы обрабатывают только те строки матрицы V, которые соответствуют значению 1 в векторе F.

  2. rez[2ni+(l+2(l-1))]:=X[l], , если V[i,l]=1, ;

  3. rez[2ni+(l+2(l-1))]:=-X[l], , если V[i,l]=0, ;

  4. rez[j]:=&, где j четно, rez[p]:=V, где p кратно 2n.

Указания к выполнению лабораторной работы

  1. Методом элементарных преобразований построить СДНФ для заданной функции.

  2. Воспользовавшись процедурой (программным модулем) построения всех различных наборов значений переменных, выполненной в лабораторной работе № 2, построить таблицу истинности для полученной СДНФ. Вычисление результирующего вектора G должно осуществляться с помощью процедуры (procedure) next.

  3. Во избежание ошибок при построении СДНФ, построить таблицу истинности для первоначальной функции f(x1,…,xn), используя функции, приведенные в лабораторной работе № 2. Сравнить (в цикле) полученный вектор F с уже построенным вектором G. Результат сравнения , если полученные вектора различны и , если полученные вектора равны между собой.

  4. Если , то выполнить алгоритм построения формальной записи СДНФ.

Варианты заданий

  1. ;

  2. ;

  3. ;

  4. .

Лабораторная работа № 4

Шестнадцатеричная система. Ведение в теорию кодирования

Постановка задачи. Построение битового рисунка, закодированного в шестнадцатеричной системе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]