Устройство для умножения полиномов по модулю
Изобретение относится к вычислительной технике и, в частности, к модулярным нейрокомпьютерным средствам и предназначено для выполнения операции умножения двух полиномов по модулю. Техническим результатом является упрощение устройства и сокращение аппаратурных затрат. Указанный результат достигается за счет применения нейросетевого базиса и выполнения операций в полиномиальной системе классов вычетов расширенного поля Галуа GF(2v). Устройство содержит восемь нейронов в первом слое, причем первые четыре нейрона первого слоя предназначены для приема двоичного кода первого операнда, а вторые четыре нейрона первого слоя предназначены для приема двоичного кода второго операнда, шестнадцать нейронов во втором слое, реализующих операцию И, четыре нейрона в третьем слое, реализующих операцию суммирования по модулю два. 1 ил. 3 табл.
Реферат
Изобретение относится к вычислительной технике и, в частности к модулярным нейрокомпьютерным средствам, и предназначено для выполнения операции умножения двух полиномов по модулю.
Известно устройство для умножения чисел по модулю (Авторское свидетельство № 1697079 кл. G06F 7/72, 1988), которое содержит два блока элементов И, группу блоков умножения на константу по модулю, два кольцевых регистра сдвига, блок элементов ИЛИ, счетчик, элемент НЕ, три элемента И, шифратор.
Целью изобретения является упрощение устройства и сокращение аппаратурных затрат. Цель достигается за счет применения нейросетевого базиса и выполнения операций в полиномиальной системе классов вычетов расширенного поля Галуа GF(2v).
Техническим результатом, достигнутым при осуществлении заявленного изобретения, является сокращение аппаратурных затрат, необходимых на реализацию устройства для умножения полиномов по модулю.
Структура устройства умножения полиномов по модулю p(z)=z4+z+1 представлена на чертеже. Устройство представляет собой трехслойную нейронную сеть. В первом слое содержится восемь нейронов. Нейроны 1, 2, 3, 4 предназначены для приема двоичного кода первого операнда, а нейроны 5, 6, 7, 8 - для приема двоичного кода второго операнда. При этом старшие разряды операндов записываются соответственно в 1 и 5 нейроны.
Второй слой содержит 16 нейронов, выполняющих базовую операцию логическое И. Причем выход 1 нейрона первого слоя соединен со входами 9, 13, 17, 21 нейронов второго слоя. Выход 2 нейрона первого слоя соединен со входами 10, 14, 18, 22 нейронов второго слоя. Выход 3 нейрона первого слоя соединен со входами 11, 15, 19, 23 нейронов второго слоя. Выход 4 нейрона первого слоя соединен со входами 12, 16, 20, 24 нейронов второго слоя. Выход 5 нейрона первого слоя соединен со вторыми входами 9, 10, 11, 12 нейронов второго слоя. Выход 6 нейрона первого слоя соединен со вторыми входами 13, 14, 15, 16 нейронов второго слоя. Выход 7 нейрона первого слоя соединен со вторыми входами 17, 18, 19, 20 нейронов второго слоя. Выход 8 нейрона первого слоя соединен со вторыми входами 21, 22, 23, 24 нейронов второго слоя.
Третий слой сети содержит четыре нейрона, выполняющих базовую операцию суммирование по модулю два. Причем входы нейрона 25 третьего слоя подсоединены к выходам 9, 12, 15, 18, 21 нейронов второго слоя. Входы нейрона 26 третьего слоя подсоединены к выходам 9, 10, 13, 16, 19, 22 нейронов второго слоя. Входы нейрона 27 третьего слоя подсоединены к выходам 10, 11, 13, 14, 17, 20, 23 нейронов второго слоя. Входы нейрона 28 третьего слоя подсоединены к выходам 11, 14, 17, 24 нейронов второго слоя. С выходов нейронов 25, 26, 27, 28 третьего слоя снимается результат умножения двух полиномов по модулю p(z)=z4+z+1. При этом значение старшего разряда результата снимается с выхода 25 нейрона.
Устройство работает следующим образом. Пусть необходимо умножить два полинома A(z)=z3+z+1 и B(z)=z3+1 по модулю p(z)=z4+z+1. Операция умножения двух полиномов в поле осуществляется аналогично обычному умножению за исключением того, что операция суммирования выполняется по модулю два. Тогда
C(z)=A(z)B(z)modz4+z+1=(z3+z+1)(z3+1)modz4+z+1=(z6+z4+z3+z3+z+1)modz4+z+1=(z6+z4+z+1)modz4+z+1=z3+z2
Рассмотрим работу устройства умножения полиномов по модулю. Исходные полиномы A(z)=z3+z+1 и B(z)=z3+1 подаются на входы нейронов первого слоя. Сигналы на выходе нейронов первого слоя представлены в таблице 1.
Таблица 1. | ||||||||
Нейроны | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Сигнал на выходе | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
Данные сигналы подаются на соответствующие входы нейронов второго слоя. Сигналы на выходах нейронов второго слоя представлены в таблице 2.
Таблица 2. | ||||||||||||||||
Нейрон | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Сигнал на выходе | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
Данные сигналы подаются на входы соответствующих нейронов 25-28 третьего слоя. В таблице 3 представлены сигналы, поступающие на входы нейронов третьего слоя. Прочерки поставлены, где связь выход-вход между нейронами второго и третьего уровней отсутствует.
Таблица 3. | |||||||||||||||||
Нейрон | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | выход |
25 | 1 | - | - | 1 | - | - | 0 | - | - | 0 | - | - | 1 | - | - | - | 1 |
26 | 1 | 0 | - | - | 0 | - | - | 0 | - | - | 0 | - | - | 0 | - | - | 1 |
27 | - | 0 | 1 | - | 0 | 0 | - | - | 0 | - | - | 0 | - | - | 1 | - | 0 |
28 | - | - | 1 | - | - | 0 | - | - | 0 | - | - | - | - | - | - | 1 | 0 |
Таким образом, с выхода нейрона 25 снимается значение 1, что соответствует z3 в полиномиальной форме, с выхода нейрона 26 снимается значение 1, что соответствует z2 в полиномиальной форме, с выходов нейронов 27 и 28 третьего слоя снимаются значения 0. Следовательно, конечный результат умножения двух полиномов по модулю p(z)=z4+z+1 равен C(z)=z3+z2.
Устройство для умножения полиномов по модулю содержит восемь нейронов в первом слое, причем первый, второй, третий и четвертый нейроны первого слоя предназначены для приема двоичного кода первого операнда, а пятый, шестой, седьмой и восьмой нейроны первого слоя предназначены для приема двоичного кода второго операнда, шестнадцать нейронов во втором слое, реализующих операцию логическое И, четыре нейрона в третьем слое, реализующих операцию суммирование по модулю два, причем выход первого нейрона первого слоя соединен с первыми входами первого, пятого, девятого, тринадцатого нейронов второго слоя, выход второго нейрона первого слоя соединен с первыми входами второго, шестого, десятого, четырнадцатого нейронов второго слоя, выход третьего нейрона первого слоя соединен с первыми входами третьего, седьмого, одиннадцатого, пятнадцатого нейронов второго слоя, выход четвертого нейрона первого слоя соединен с первыми входами четвертого, восьмого, двенадцатого, шестнадцатого нейронов второго слоя, выход пятого нейрона первого слоя соединен со вторыми входами первого, второго, третьего, четвертого нейронов второго слоя, выход шестого нейрона первого слоя соединен со вторыми входами пятого, шестого, седьмого, восьмого нейронов второго слоя, выход седьмого нейрона первого слоя соединен со вторыми входами девятого, десятого, одиннадцатого, двенадцатого нейронов второго слоя, выход восьмого нейрона первого слоя соединен со вторыми входами тринадцатого, четырнадцатого, пятнадцатого, шестнадцатого нейронов второго слоя, входы первого нейрона третьего слоя соединены с выходами первого, четвертого, седьмого, десятого, тринадцатого нейронов второго слоя, входы второго нейрона третьего слоя соединены с выходами первого, второго, пятого, восьмого, одиннадцатого, четырнадцатого нейронов второго слоя, входы третьего нейрона третьего слоя соединены с выходами второго, третьего, пятого, шестого, девятого, двенадцатого, пятнадцатого нейронов второго слоя, входы четвертого нейрона третьего слоя соединены с выходами третьего, шестого, девятого, шестнадцатого нейронов второго слоя, выходы нейронов третьего слоя являются выходами устройства для умножения полиномов по модулю.