русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-23; просмотров: 683; Нарушение авторских прав


В некоторых случаях бывает удобно выразить булеву функцию только через конъюнкцию, дизъюнкцию и отрицание.

Например, это удобно из-за того, что выражения с этими операциями удобно подставлять одно в другое.

 

Для вычисления СКНФ и СДНФ нам пригодится только что построенная таблица.

 

x y z f СДНФ СКНФ
 
 
 
 
 
 
 
 

 

Правило построения СДНФ: выбрать те и только те строки, в которых значение функции равно 1, затем в этих строках записать конъюнкцию x, y, z по следующему правилу:

Если соответствующая переменная равна 0, то пишем её с отрицанием, если она равна 1, то пишем без отрицания.

Например, во второй строке мы пишем , поскольку в соответствующей строке были значения x = 0, y = 0, z = 1.

СДНФ записывают как дизъюнкцию этих выражений. При этом иногда операцию конъюнкции не пишут, подобно тому как для умножения не пишут операцию умножения.

В итоге получаем: СДНФ = .

 

Построение СКНФ в некотором смысле двойственно к построению СКНФ.

 

Вместо строк со значением 1 берём строки со значением 0, вместо дизъюнкции – конъюнкция, а вместо конъюнкции дизъюнкцию.

 

И одно принципиальное отличие – там, где значение переменной равно 0, мы берём её без отрицания, а там, где это значение равно 1, берём с отрицанием. Сравните первую и третью строки, выражения в которых равны соответственно и .

 

Выражение для СКНФ можно получить, перемножив все эти дизъюнкции.



 

СКНФ = .

 

Следующее важное действие – упростить СДНФ.

 

Это можно сделать с помощью действий, аналогичных вынесению множителя за скобку.

 

Итак, упрощённая форма СДНФ в данном случае равна .

 

Показать логическую схему, причём написать, что для первоначальной записи потребовалось бы очень много элементов: импликация, эквивалентность, и так далее. А для СКНФ достаточно трёх элементов: И, ИЛИ и НЕ.

 

Привести пример составления схемы для СДНФ и для упрощённой ДНФ.

 

Но, как во многих задачах на упрощение, возникает вопрос: можно ли упростить выражение дальше? Точнее сказать – можно ли получить выражение, содержащее ещё меньше букв и равное данному?

 

Ответ даёт метод минимизирующих карт.

 

Для его применения составьте таблицу такого вида.

 

f Значения переменных x y z xy xz yz xyz
z
y
y z yz
x
x z xz
x y xy
x y z xy xz yz xyz

 

Каждую переменную, x, y и z, мы снабжаем или не снабжаем отрицанием в соответствии со значениями переменных.

Например, если во втором столбце 001, то x и y с отрицаниями, а z – без отрицания.

А в остальных столбцах переменные сопровождаются отрицаниями в соответствии с третьим, четвёртым и пятым столбцами.

 

Теперь производим вычёркивание по следующему принципу.

Сначала вычёркиваем все строки, в которых значение функции равно нулю. В данном примере вычёркиваются строки с номерами 1, 3, 4 и 5.

Затем в каждом столбце, если элемент был один раз вычеркнут, он вычёркивается во всех оставшихся клетках столбца. Например, если во второй сверху клетке шестого столбца элемент был вычеркнут, то в третьей сверху клетке его также вычеркнем.

Теперь из оставшихся элементов, взяв по одному элементу из строки, составим самое короткое выражение.

В данном примере из второй и шестой строк имеет смысл взять два одинаковых выражения , а из седьмой и восьмой строк – два одинаковых выражения xy, поскольку при вычислении дизъюнкции получим: .

 

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

Если преобразования дали такой же ответ, что и метод минимизирующих карт, это добавляет уверенности в ответе.

Если они дали ответ длиннее, то, возможно, вы не до конца использовали возможности упрощения.

А если преобразования дали ответ короче, чем метод минимизирующих карт, то такая ситуация теоретически противоречива: метод минимизирующих карт даёт самую короткую форму записи.

 

В качестве упражнения на булевы функции можно рассматривать вычисление функции , где f – функция от трёх переменных.

 

Задачу можно решать двумя способами.

 

Первый способ: найти значения выражений для всех значений пары x, y. Затем подставить полученные значения в функцию от трёх переменных.

Например: если x = y = 0, то (по таблице истинности для функции f).

Дополнительное условие для этой задачи: по таблице истинности необходимо определить формулу для полученной функции от двух переменных. Например, xy или x XOR y.

 

Второй способ: подставить в исходную формулу для функции (например, ) вместо переменной y выражение , а вместо переменной z выражение , затем упростить выражение.

 



<== предыдущая лекция | следующая лекция ==>
Некоторые равенства о булевых функциях двух переменных | Многочлен Жегалкина


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 8.583 сек.