реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Быстрые алгоритмы арифметики в полях Галуа?
andrex
сообщение Feb 25 2009, 12:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Здравствуйте!

Мне пока известно лишь то, что умножение в GF(2^8) реализуется сложением индексов и с использованием таблицы.
Буду благодарен за любую информацию о других существующих алгоритмах.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 12:46
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(andrex @ Feb 25 2009, 16:24) *
 умножение в GF(2^8)

Чего так сложно? Умножение над GF(2^8) эквивалентно взятию самого младшего байта произведения 
Go to the top of the page
 
+Quote Post
andrex
сообщение Feb 25 2009, 13:37
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Цитата(_Pasha @ Feb 25 2009, 18:46) *
Чего так сложно? Умножение над GF(2^8) эквивалентно взятию самого младшего байта произведения 

Что-то у меня так не получается. Например, в матлабе gf(10, 8)*gf(10, 8) = 68. Как это получить предлагаемым Вами способом?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 25 2009, 13:51
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(andrex @ Feb 25 2009, 17:37) *
 Например, в матлабе

gf(x,m) 
Цитата
Создает массив элементов конечного поля из матрицы x. Конечное поле имеет 2^m элементов


Я же говорил о перемножении двух чисел в поле 2^8
Go to the top of the page
 
+Quote Post
andrex
сообщение Feb 25 2009, 13:59
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Цитата(_Pasha @ Feb 25 2009, 19:51) *
gf(x,m) 

Я же говорил о перемножении двух чисел в поле 2^8

Значит, наверно, я непонятно выразился.
Имеем поле GF(2^8), основанное на полиноме x^8 + x^4 + x^3 + x^2 + 1.
Нужен алгоритм быстрого перемножения чисел из этого поля. Собственно, в приведенном примере ( gf(10, 8)*gf(10, 8) = 68 ) показано, что требуется сделать.

Кстати, насколько я понимаю, в данном случае матлабовская функция gf(x,m) делает x элементом поля GF(2^m), и по умолчанию использует приведенный выше полином.

Сообщение отредактировал andrex - Feb 25 2009, 14:10
Go to the top of the page
 
+Quote Post
kons
сообщение Feb 28 2009, 11:57
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



А что тут придумаешь? Таблично.
- анализ на a==0 или b==0
- берем логарифм a (для GF(2^10) - таблица 1024xshort)
- по той же таблице - логарифм b
- сумма по модулю 2^10-1
- антилогарифм (другая таблица, тоже 1024xshort)
Способы ускорения:
- часто требуется умножать массив на константу, ее логарифм взять заранее, далее - иметь спецфункцию GF_mul_exp(GF_val a, GF_log B )
- чтобы не тратить время на проверки равенства 0 и взятие по модулю - иметь расширенную вчетверо таблицу антилогарифмов:
log(0)=2*2^N, таблица расширена просто: exp(2^N...2*2^N-2) = exp(1...2^N-1), при x>2*2^N-2 exp(x)=0
Go to the top of the page
 
+Quote Post
andrex
сообщение Feb 28 2009, 13:12
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-01-09
Пользователь №: 43 650



Цитата(kons @ Feb 28 2009, 17:57) *
А что тут придумаешь? Таблично.

Спасибо, в общем-то так и делаю.
Go to the top of the page
 
+Quote Post
kons
сообщение Feb 28 2009, 19:14
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Цитата(andrex @ Feb 28 2009, 16:12) *
Спасибо, в общем-то так и делаю.

А в чем проблема? Что может быть быстрее таблицы, особенно если избавиться от добавочных проверок? Как вариант - храните элементы в логарифмическом представлении. Но тогда складывать по таблицам придется - шило на мыло...
Go to the top of the page
 
+Quote Post
evg123
сообщение Mar 4 2009, 14:48
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Есть книга Морелос-Сарагоса "Искусство помехоустойчивого кодирования", есть сайт
http://the-art-of-ecc.com
Там куча примеров программ работы с полями Галуа (БЧХ, Рид-Соломон)
По полиному генерируются две таблицы - основная и логарифмическая и имеются две простые функции сложения и умножения, которые обращаются к этим таблицам.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016