Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stovemodel.docx
Скачиваний:
29
Добавлен:
20.02.2016
Размер:
208.47 Кб
Скачать

Совершенная конъюнктивная и дизъюнктивная нормальные формы

Любая булева функция может иметь много представлений в виде ДНФ и КНФ. Особое место среди этих представлений занимают совершенные ДНФ (СДНФ) и совершенные КНФ (СКНФ).

Совершенная дизъюнктивная нормальная форма (СДНФ) – это ДНФ, в которой в каждый конъюнктивный одночлен каждая переменная xi из набора x1,x2,…,xn входит ровно один раз, причем входит либо сама xi , либо ее отрицание .

Совершенная конъюнктивная нормальная форма (СКНФ) – это КНФ, в которой в каждый дизъюнктивный одночлен каждая переменная xi из набора x1,x2,…,xn входит ровно один раз, причем входит либо сама xi , либо ее отрицание .

Существуют следующие теоремы:

Произвольную булеву функцию f(x1,x2,…,xn) можно задать формулой f(x1,x2,…,xn)=˅(), где дизъюнкция берется по всем τ=(τ1, τ2, …, τn), где f(τ)=1 , а xi=xi , если τi=1 и xi= , если τi=0.

Произвольную булеву функцию f(x1,x2,…,xn) можно задать формулой f(x1,x2,…,xn)=(), где конъюнкция берется по всем =(), где f(τ)=0 , а xi=xi , если =0 и xi= , если =1.

Каждая булева функция от n переменных, отличная от константы 0, имеет единственную СДНФ, и каждая булева функция от n переменных, отличная от константы 1, имеет единственную СКНФ. Эти утверждения называются теоремой о функциональной полноте. Они позволяют записывать булевы функции по их таблицам истинности.

Пример:

x1

x2

x3

f(x1,x2,x3)

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

0

0

0

1

0

1

1

1

1

0

0

1

1

1

0

Функция принимает значение 1 на наборах 001, 010, 101. Набору 001 по теореме соответствует элементарная конъюнкция ˄˄x3 , набору 010 соответствует конъюнкция ˄x2˄ и набору 101 – конъюнкция x1˄˄x3. Напомним, что для каждого набора из нулей и единиц τ1, τ2, τ3 выписываем конъюнкцию , причем, еслиτi=1, то соответствующая переменная xi входит в конъюнкцию без отрицания. Получаем СДНФ f(x1,x2,x3) =(˄˄x3)˅(˄x2˄)˅(x1˄˄x3) .

Построим теперь СКНФ для данной функции.

Функция принимает значение 0 на наборах 000, 011, 100, 110 и 111. Согласно второй теореме, набору 000 соответствует дизъюнкция x1˅x2˅x3, набору 011 – дизъюнкция x1˅˅, набору 100 – дизъюнкция ˅x2˅x3, набору 110 – дизъюнкция ˅˅x3, и, наконец, набору 111 соответствует дизъюнкция ˅˅. Таким образом, получаем СКНФ: f(x1,x2,x3)=(x1˅x2˅x3)˄(x1˅˅)˄(˅x2˅x3)˄(˅˅x3)˄(˅˅).

В данной формуле раскроем скобки, используя законы дистрибутивности и поглощения: f(x1,x2,x3)= (˄x2˄)˅(˅x3). Таким образом, мы получили минимальную ДНФ.

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

  1. Находим числа k, r, удовлетворяющие условиям 2k-1< m ≤ 2k , 2r-1< n ≤ 2r, где m – количество символов входного алфавита, n – размерность пространства состояний конечного автомата. Очевидно, что k и r соответственно, равны числу разрядов в двоичном представлении чисел m и n. В частности, если m=2 и n=3, то k=1 и r=2.

  2. Каждому qi из Q={q1, q2, …, qn} взаимно-однозначно ставим в соответствие двоичную последовательность длины r – двоичный код β(qi)=y1y2yr . Аналогично каждому ai ставим взаимно-однозначно в соответствие двоичные последовательности γ(ai)=x1x2xk . Отметим, что кодирование состояний, входных символов можно провести многими способами. При этом некоторые последовательности (коды) могут оказаться неиспользованными.

  3. Составляем следующую таблицу:

Код входного символа

Код текущего состояния

Код следующего состояния

x1

x2

xk

y1

y2

yr

1

2

r

0

0

0

0

0

0

γ1

γ2

γk

β1

β2

βr

1

1

1

1

1

1

Эта таблица содержит k+r+r столбцов и 2k+r строк. В первых k+r столбцах выписаны все наборы длины k+r. Каждый такой набор соответствует паре (γ, β), где β – возможный код некоторого состояния, γ – код входного символа.

  1. Заполнение последних столбцов таблицы. По таблице автомата или диаграмме Мура определяем φ(a, qi)=. Затем находим соответствующий код β()= .

  2. Определяем систему булевых функций. После выполнения предыдущего пункта может оказаться, что не все строки в таблице заполнены. Это произойдет, если хотя бы одно из чисел m, n не является степенью два. Таким образом, функции переходов окажутся не полностью определенными – на некоторых наборах их значения не определены. Мы их можем доопределить произвольным образом. Как правило, доопределенные функции производят так, чтобы получившиеся полностью определенные функции удовлетворяли тем или иным условиям оптимальности, например, представлялись минимальными ДНФ.

Вернемся теперь к микроволновой печке. В разработанной нами модели алфавит включает два символа, т.е. m=2 и, следовательно, k=1. Автомат принимает три состояния n=3, а значит, r=2. Пусть значение 0 обозначает событие ”Get the door”; а значению 1 сопоставим событие ”Press the button”. Состояния автомата будут описываться словами {00, 01, 10, 11}. Состоянию FoodInOut сопоставим слово 00, состоянию Stop сопоставим слово 01 и, наконец, состоянию Cooking слово 10. Функции будут не полностью определенными, поскольку слову 11 не сопоставляем никакого состояния. Теперь, согласно построенной нами таблице и диаграмме Мура построим таблицу конечного автомата на основе булевых функций.

x

y1

y2

1

2

0

0

0

0

1

0

0

1

0

0

0

1

0

0

0

0

1

1

1*

1*

1

0

0

0

0

1

0

1

1

0

1

1

0

1

0

1

1

1

1*

1*

В таблице символами* отмечены наборы переменных, на которых функции φ не определены. Положим значения функции на этих наборах равными 1.

Построим СКНФ этой функции. Функция φ1 принимает значения 0 на наборах 000, 001, 010, 100. Следовательно, элементарные дизъюнкции имеют вид: x˅y1˅y2, x˅y1˅, x˅˅y2 и ˅y1˅y2. Тогда φ1=(x˅y1˅y2)˄(x˅y1˅)˄(x˅˅y2)˄(˅y1˅y2). Используя закон дистрибутивности и поглощения, получаем минимальную ДНФ φ1=(x˄y1)˅(x˄y2)˅(y1˄y2). Аналогично строим СКНФ для функции φ2=(x˅y1˅)˄(x˅˅y2)˄(˅y1˅y2)˄(˅y1˅)˄(˅˅y2). Минимальная ДНФ равна φ2=(y1˄y2)˅(˄˄).

Канонические уравнения автомата

Если в момент времени t= 1,2, .. на вход автомата (, Q, φ, q0 , F) последовательно подаются входные сигналы (t) ={a1, a2, …, am}и при этом автомат находится в состоянии q(t)Q, то под воздействием символа a(t) автомат перейдет в новое состояние q(t+1)Q. Тогда функцию перехода можно записать следующим образом:

q(t+1)= φ(a(t), q(t)).

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

Возможна модель, когда состояние автомата в каждый такт определяется поданным на нее сигналом в данный такт и состоянием системы в предыдущий такт:

q(t+1)= φ(a(t+1), q(t)).

Эти уравнения называются каноническими уравнениями автомата первого рода.

Канонические уравнения микроволновой печки можно тогда записать следующим образом:

y1(t+1)=(x(ty1(t))˅(x(ty2(t))˅(y1(ty2(t));

y2(t+1)=(y1(ty2(t))˅((t(t(t)).

P.S. Понятие «конечный автомат» охватывает и те конечные системы, состояния которых определяются предысторией любой наперед заданной конечной длины. Однако, оно не охватывает системы с бесконечной предысторией. Можно рассматривать системы, которые помнят свои состояния и поступившие сигналы в предыдущее моменты времени. На самом деле, класс конечных автоматов, которые «помнят» конечное число предыдущих тактов, не шире класса систем, помнящих лишь предыдущий такт.

16

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