Изменения

Перейти к: навигация, поиск

Дискретное логарифмирование в группе

36 байт добавлено, 02:03, 18 сентября 2010
м
Нет описания правки
{{В разработке}}== Постановка задачи ==Рассмотрим [[конечная группа|конечную группу]] <tex>G</tex>. Для заданных <tex>a, b \in G</tex> необходимо найти такое минимальное <tex>n</tex>, что <tex>a^n=b</tex> или сказать, что таких нет.
Рассмотрим конечную группу <math>G</math>. Для заданного <math>a</math> необходимо найти такое минимальное <math>n</math>, что <math>a^n=e</math>. <br>Теперь рассмотрим '''обобщенную задачу поиска порядка''', также называемую '''задачей дискретного логарифмирования''': для заданных <math>a</math> и <math>b</math> из группы найти такое минимальное <math>n</math>, что <math>a ^ n = b</math>. <br>Алгоритм ==Очевидно, <mathtex>n < |G| </mathtex> (следует из принципа Дирихле). Пусть <mathtex>m = \lceil \sqrt{|G| } \rceil</mathtex>. Будем искать <mathtex>n</mathtex> в виде <mathtex>xm-y</mathtex>, где <mathtex>y \in 0 \dots m - 1</mathtex> и <mathtex>x \in 1 \dots m</mathtex>(такое представление существует и единственно на основании существования и единственности деления с остатком).Таким образом <br><mathtex>a ^ n = a ^ {xm - y} = b</math> <brtex>. Следовательно,:<math>a ^ {xm} = b a ^ {y}</math> <br><mathtex> {a ^ m} ^ x = b a ^ y </math> <brtex>
Далее мы выписываем все полученные выражения для левой и правой частей при всех допустимых <mathtex>x</mathtex> и <mathtex>y</mathtex> (или складываем в удобную структуру данных: отсортированный массив, хеш, дерево и т. д.). После чего ищем пересечение.  == Время работы алгоритма ==Для каждого элемента одной части поиск в структуре данных для другой части (в случае с отсортированным массивом) занимает время <mathtex>O(\log |G|m)</mathtex>. Учитывая, что время на предварительную обработку <mathtex>O(|G|m)</mathtex>, общее время работы алгоритма {{---}} <mathtex>O(m \log m) = O(\sqrt{|G| } \log \sqrt{|G|})</mathtex>. [[Категория: Теория групп]]
221
правка

Навигация