Полином Жегалкина
Теоретическая часть
Алгоритм
Блок-схемы
Листинг программы
Тестирование программы
Заключение
Список использованной литературы:
Цель работы
Целью данной работы является изучение булевых функций, разработка алгоритма их представления в виде полинома Жегалкина и написания программы, реализующей этот алгоритм.
Введение
В курсе дискретной математики изучаются функции, область определения которых тАУ дискретное множество. Простейшим (но нетривиальным) таким множеством является множество, состоящее из двух элементов.
Теоретическая часть
Полнота и замкнутость
Определение 1: Система функций Ваиз P2 (множества всех булевых функций) называется функционально полной, если любая булева функция может быть записана в виде формулы через функции этой системы.
Пример:
1) Само множество ;
2);
3) - не полна.
Теорема 1. Пусть даны две системы функций из
, (I)
. (II)
Известно, что система I полная и каждая функция системы I выражается через функции системы II. Тогда система II является полной.
Доказательство: Пусть . В силу полноты системы I , функцию h можно выразить в виде формулы .
По условию теоремы
Поэтому
Вач. т. д.
Примеры:
1) Ва- полная.
2) Ва- тоже полная, так как .
3) Ва- тоже полная.
4) Ва- тоже полная, так как
,
,
. ((2) тАУ I)
5) Ва- неполная.
Докажем это от противного.
Предположим, что .
Но .
Противоречие.
6) Ва- неполная (сохраняет константу 0).
6тАЩ) Ва- полная.
7) Ва- неполная (сохраняет константу 1).
8)
Ватогда взяв в качестве системы I систему 2) можно заключить, система функций 8) тАУ полная. Тем самым, справедлива
Теорема Жегалкина. Каждая функция из Ваможет быть выражена при помощи полинома по модулю 2 тАУ (полинома Жегалкина):
Ва,
где . (1)
Имеем: число разных сочетаний Варавно числу подмножеств множества из n элементов. Каждое aik может принимать одно из 2-х значений {0,1}. Тогда число разных полиномов Жегалкина равно , т.е. равно числу различных булевых функций.
Т. о. получаем единственность представления функций через полином Жегалкина.
Способы представления функции в виде полинома Жегалкина
1) Алгебраические преобразования
Ва.
Пример:
2) Метод неопределенных коэффициентов
Ва- искомый полином Жегалкина (реализующий функцию ).
Вектор Ваиз формулы (1) будем называть вектором коэффициентов полинома .
Нам нужно найти неизвестные коэффициенты .
Поступаем так. Для каждого составим Вауравнение Ва, где Ва- выражение, получаемое из (1) при . Это дает систему из Вауравнений с Ванеизвестными, она имеет единственное решение. Решив систему, находим коэффициенты полинома .
3) Метод, базирующийся на преобразовании вектора значения функции
Пусть - вектор значений функции.
Разбиваем вектор Вана двумерные наборы:
.
Операция T определена следующим образом:
.
Применяем операцию Т к двумерным наборам:
Используя построенные наборы, конструируем четырехмерные наборы, которые получаются в результате применения операции Т к четырехмерным наборам, выделяемым из .
Затем от четырехмерных наборов переходим (аналогично) к восьмимерным и т.д., пока не построим - мерный набор. Он и будет искомым вектором коэффициентов полинома .
Пример:
Пусть вектор значений функций = (0,0,0,1,0,1,1,1)
Полученный вектор является искомым векторов коэффициентов полинома .
Определение 2: Пусть M тАУ некоторое подмножество функций из P2. Замыканием M называется множество всех булевых функций, представимых в виде формул через функции множества M. Обозначается [M].
Замечание. Замыкание инвариантно относительно операций введения и удаления фиктивных переменных.
Примеры.
1) M=P2, [M]=P2.
2) M={1,x1Åx2}, [M] тАУ множество L всех линейных функций вида
, (ciÎ{0,1}).
Свойства замыкания:
1) Если М замкнуто, то [M]=M;
2) [[M]]=[M];
3) M1ÍM2 Þ [M1]Í[M2];
4) [M1ÈM2]Ê[M1]È[M1].
Определение 3. Класс (множество) M называется (функционально) замкнутым, если [M]=M.
Примеры.
1) Класс M=P2 функционально замкнут;
2) Класс {1,x1Åx2} не замкнут;
3) Класс L замкнут (линейное выражение, составленное из линейных выражений линейно).
Новое определение полноты. M тАУ полная система, если [M]=P2.
булевой функция полином жигалкин
В данной программе был реализован метод неопределенных коэффициентов для построения полинома Жегалкина.
1. Получить таблицу истинности для определенного количества переменных;
2. Заполнить значения функции для каждого из наборов таблицы истинности;
3. Последовательно вычислить неизвестные коэффициенты;
4. Записать функцию в виде полинома Жегалкина с вычисленными коэффициентами.
x1 | x2 | x3 | f |
0 | 0 | 0 | f1 |
0 | 0 | 1 | f2 |
0 | 1 | 0 | f3 |
0 | 1 | 1 | f4 |
1 | 0 | 0 | f5 |
1 | 0 | 1 | f6 |
1 | 1 | 0 | f7 |
1 | 1 | 1 | f8 |
Ва.
Листинг программы:
#include
#include
int FuncVolume (int &f)
{
Ваdo {cout <<"Vvedite znachenit funkcii na dannom nabore :"< Ваcin>>f; Ваif ((f!=0)&&(f!=1)) ВаВаВаВаВаВаВаВа cout<<"Error!!!Funkciya mojet prinimat' znachenie libo 0 libo 1!\n"; Ва} Ваwhile ((f!=0)&&(f!=1)); Ваreturn f; } void main() { Ваclrscr(); Ваconst N=8; Ваint m[5]; Ваint f[N],a[N]; Ваfor (int i =0; i Ва{ ВаFuncVolume (f[i]); Ва} Ваa[0]= f[0]; Ваa[3]=f[0]^f[1]; Ваa[2]=f[0]^f[2]; Ваa[1]=f[0]^f[4]; Ваm[0]=f[1]^a[2]^a[3]; Ваa[5]=m[0]^f[3]; Ваm[1]=f[1]^a[1]^a[3]; Ваa[6]=m[1]^f[5]; Ваm[2]=f[1]^a[1]^a[2]; Ваa[4]=m[2]^f[6]; Ваm[3]=a[3]^a[4]^a[5]; Ваm[4]=m[2]^m[3]^a[6]; Ваa[7]=m[4]^f[7]; Ваcout<<"\n\nTablica istinnosti dlya dannoy funkcii : \n\n"; Ваcout<<"x_1ВаВаВаВаВаВаВа x_2ВаВа x_3ВаВа f\n\n"; Ваcout<<" 0 Ва0 ВаВаВаВа Ва0 ВаВаВаВа Ва"< Ва<<"\n 0 ВаВаВаВа Ва0 ВаВаВаВа Ва1 ВаВаВаВа Ва"< Ва<<"\n 0 ВаВаВаВа Ва1 ВаВаВаВа Ва0 ВаВаВаВа Ва"< Ва<<"\n 0 ВаВаВаВа Ва1 ВаВаВаВа Ва1 ВаВаВаВа Ва"< Ва<<"\n 1 ВаВаВаВа Ва0 ВаВаВаВа Ва0 ВаВаВаВа Ва"< Ва<<"\n 1 ВаВаВаВа Ва0 ВаВаВаВа Ва1 ВаВаВаВа Ва"< Ва<<"\n 1 ВаВаВаВа Ва1 ВаВаВаВа Ва0 ВаВаВаВа Ва"< Ва<<"\n 1 ВаВаВаВа Ва1 ВаВаВаВа Ва1 ВаВаВаВа Ва"< Ваcout<<"\n\nZnachenie koefficientov v polimome Jigalkina : \n\n" ; Ваfor (i=0; i Ва{ Ваcout<<"a_"< Ваcout<<"Polinom Jigalkina dlya dannoy funkcii imeet vid : \n f = "< <<"^("< Ва< Ваgetch(); } Тестирование программы: На каждом наборе вводятся единицы, то есть функция является тождественной единицей. Простейшая проверка на правильность работы программы: Так же реализована проверка на правильный ввод данных: Заключение В курсовой работе был реализован метод неопределенных коэффициентов для представления функции в виде полинома Жегалкина. По данному алгоритму на языке С++ была написана программа, результат которой был продемонстрирован. Список использованной литературы 1. Яблонский С.В. Введение в дискретную математику. тАФ М.: Наука. тАФ 1986 2. Н.А.Ахметова, З.М.Усманова Дискретная Математика. Функции алгебры логики учебное электронное издание тАУ Уфа тАУ 2004 3. Гаврилов Г. П., Сапоженко А. А. Задачи и упражнения по дискретной математике: Учебное пособие. тАУ 3-е изд., перераб. тАУ М.: ФИЗМАТЛИТ, 2005. Вместе с этим смотрят: РЖнварiантнi пiдпростори. Власнi вектори i власнi значення лiнiйного оператора Автокорреляционная функция. Примеры расчётов Актуальные проблемы квантовой механики Алгебра и алгебраические системы