Вычисление порядка элемента в группе — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{В разработке}}
+
== Постановка задачи ==
 +
Пусть <tex>G</tex> — [[группа]], <tex>a \in G</tex>. Требуется найти [[порядок элемента]] <tex>a</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>
+
По следствию из [[теорема Лагранжа|теоремы Лагранжа]] порядок элемента является делителем [[порядок группы|порядка группы]].  
Очевидно, <math>n < |G| </math> (следует из принципа Дирихле). Пусть <math>m = \lceil |G| \rceil</math>. Будем искать <math>n</math> в виде <math>xm-y</math>, где <math>y \in 0 \dots m - 1</math> и <math>x \in 1 \dots m</math>.<br>
+
Таким образом достаточно рассмотреть <tex>a^n</tex>, где <tex>n \in X</tex>, <tex>X</tex> — делители порядка группы.
<math>a ^ n = a ^ {xm - y} = b</math> <br>
 
<math>a ^ {xm} = b a ^ {y}</math> <br>
 
<math> {a ^ m} ^ x = b a ^ y </math> <br>
 
  
Далее мы выписываем все полученные выражения для левой и правой частей при всех допустимых <math>x</math> и <math>y</math> (или складываем в удобную структуру данных: отсортированный массив, хеш, дерево и т. д.). После чего ищем пересечение. Для каждого элемента одной части поиск в структуре данных для другой части (в случае с отсортированным массивом) занимает время <math>O(log |G|)</math>. Учитывая, что время на предварительную обработку <math>O(|G|)</math>, общее время работы алгоритма − <math>O(|G| log |G|)</math>.
+
=== Алгоритм ===
 +
# Найти все делители <tex>|G|</tex> перебором от 1 до <tex>\sqrt{|G|}</tex>
 +
# Для каждого делителя <tex>n</tex> проверить значение <tex>a^n</tex>. Наименьший <tex>n</tex>, такой что <tex>a^n = e</tex>, является порядком элемента <tex>a</tex> в группе.
 +
 
 +
=== Алгоритмическая сложность ===
 +
Перебор от <tex>1</tex> до <tex>\sqrt{|G|}</tex> выполняется за <tex>O(\sqrt{|G|})</tex>. Возведение <tex>a</tex> в степень <tex>n</tex> выполняется за <tex>O(\log n)</tex>. Следовательно время выполнения <tex>O(\sqrt{|G|} \cdot \log{|G|})</tex>.
 +
 
 +
[[Категория:Теория групп]]

Текущая версия на 01:57, 18 сентября 2010

Постановка задачи[править]

Пусть [math]G[/math]группа, [math]a \in G[/math]. Требуется найти порядок элемента [math]a[/math].

Решение[править]

По следствию из теоремы Лагранжа порядок элемента является делителем порядка группы. Таким образом достаточно рассмотреть [math]a^n[/math], где [math]n \in X[/math], [math]X[/math] — делители порядка группы.

Алгоритм[править]

  1. Найти все делители [math]|G|[/math] перебором от 1 до [math]\sqrt{|G|}[/math]
  2. Для каждого делителя [math]n[/math] проверить значение [math]a^n[/math]. Наименьший [math]n[/math], такой что [math]a^n = e[/math], является порядком элемента [math]a[/math] в группе.

Алгоритмическая сложность[править]

Перебор от [math]1[/math] до [math]\sqrt{|G|}[/math] выполняется за [math]O(\sqrt{|G|})[/math]. Возведение [math]a[/math] в степень [math]n[/math] выполняется за [math]O(\log n)[/math]. Следовательно время выполнения [math]O(\sqrt{|G|} \cdot \log{|G|})[/math].