как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Алгебраические системы
3.2 Индексы
Пусть - группа,
- её элемент,
. Число
называется дискретным логарифмом элемента
по основанию
(пишут
). В случае, когда
- примитивный корень по модулю
, дискретный логарифм
ещё называют индексом числа
по модулю
при основании
. Пишут:
. Когда примитивный корень
фиксирован, можно также писать:
.
Дискретное логарифмирование в произвольной группе является трудноразрешимой задачей. Приведём один из примеров, когда оно всё-таки легко осуществимо.
Пример 3.7 Вычислить дискретный логарифм числа по основанию
по модулю
.
Решение. Порядок мультипликативной группы поля вычетов по модулю 102673 равен . Число, являющееся произведением большого количества небольших чисел, называется гладким. Для дискретного логарифмирования в таком поле существует алгоритм Полига-Хэллмана, который мы сейчас применим.
Если - решение нашей задачи, и
,
,
,
- остатки от деления
на
,
,
и
соответственно, то
![\begin{center}
\begin{tabular}{ll}
${\left({5}^{{M}_{1}}\right)}^{{x}_{1}}=\left({a}^{{M}_{1}}\right)~(\mod p)$,&
${\left({5}^{{M}_{2}}\right)}^{{x}_{2}}=\left({a}^{{M}_{2}}\right)~(\mod p)$, \\
${\left({5}^{{M}_{3}}\right)}^{{x}_{3}}=\left({a}^{{M}_{3}}\right)~(\mod p)$, &
${\left({5}^{{M}_{4}}\right)}^{{x}_{4}}=\left({a}^{{M}_{4}}\right)~(\mod p)$,\\
\end{tabular}
\end{center}](/sites/default/files/tex_cache/90ffb87de0193b83280027fb35f5a927.png)
где
![{M}_{1}=\frac{p-1}{16},{M}_{2}=\frac{p-1}{9},{M}_{3}=\frac{p-1}{23},{M}_{4}=\frac{p-1}{31}.](/sites/default/files/tex_cache/f1d58ea510e5a024128d04adc7366385.png)
Наоборот, если мы найдём ,
,
и
, а решение
задачи всегда существует (так как
- примитивный корень), то
будет совпадать с единственным решением
системы:
![\left\{\begin{array}{l}x'=x_1 ~(\mod 16), \\ x'=x_2 ~(\mod 9), \\ x'=x_3 ~(\mod 23),\\ x'=x_4 ~(\mod 31). \end{array}\right.](/sites/default/files/tex_cache/9aee8c13c1fdbc8fc8bbb19031d3c924.png)
Итак, для решения задачи, по китайской теореме об остатках нужно найти:
![\begin{center}
\begin{tabular}{ll}
${M}_{1}=6417,$& ${\widetilde{{M}}}_{1}={M}_{1}^{-1}=1~(\mod 16);$ \\
${M}_{2}=11408,$ & ${\widetilde{{M}}}_{2}={M}_{2}^{-1}=2~(\mod 9);$ \\
${M}_{3}=4464,$ & ${\widetilde{{M}}}_{3}={M}_{3}^{-1}=12~(\mod 23);$ \\
${M}_{4}=3312,$ & ${\widetilde{{M}}}_{4}={M}_{4}^{-1}=6~(\mod 31);$
\end{tabular}
\end{center} \end{center}](/sites/default/files/tex_cache/92c2ec5be833f46406c790688a808223.png)
![x={x}_{1} \cdot {M}_{1} \cdot {\widetilde{{M}}}_{1}+{x}_{2} \cdot {M}_{2} \cdot {\widetilde{{M}}}_{2}+{x}_{3} \cdot {M}_{3} \cdot {\widetilde{{M}}}_{3}+{x}_{4} \cdot {M}_{4} \cdot {\widetilde{{M}}}_{4}=\\6417{x}_{1}+22816{x}_{2}+53568{x}_{3}+19872{x}_{4}.](/sites/default/files/tex_cache/c286bd62ce4374ce25307ca351beb747.png)
Следовательно, нам нужно найти ,
,
,
.
Имеем:
![\begin{center}
\begin{tabular}{ll}
${97697}^{{x}_{1}}=55814~(\mod p),$ & ${170}^{{x}_{2}}=29684~(\mod p),$\\
${24920}^{{x}_{3}}=56216~(\mod p),$ & ${64646}^{{x}_{4}}=18591~(\mod p).$
\end{tabular}
\end{center}](/sites/default/files/tex_cache/b7d6850e468f4a9a6fa8df48237828be.png)
Поскольку порядок группы равен 23, а группы
- всего 31, то при различных
,
величины
и
пробегают, соответственно, по 23 и 31 различным значениям.
Тогда и
можно найти полным перебором, проверив
,
. В нашем случае
,
. Числа
и
также можно искать полным перебором, но для них можно ещё уменьшить количество попыток. Будем искать
![{x}_{1}={x}_{1,1}+2{x}_{1,2}+4{x}_{1,3}+8{x}_{1,4},](/sites/default/files/tex_cache/74dea9a116c4e1046b3c20cd9be1b55c.png)
где
Имеем:
![{\left({97697}^{{x}_{1}}\right)}^{8}={\left({97697}^{8}~(\mod p)\right)}^{{x}_{1.1}}={(-1)}^{{x}_{1,1}}={55814}^{8}=(-1)~(\mod p).](/sites/default/files/tex_cache/431737a3a33a792a66fdad3deca25996.png)
То есть . Отсюда
Далее,
![{\left({97697}^{{x}_{1}}\right)}^{4}={97697}^{4+8{x}_{1,2}}=15467 \cdot {(-1)}^{{x}_{1,2}}={55814}^{4}=87206~(\mod p).](/sites/default/files/tex_cache/f5035e9f04fce77535c746c30ed6dd0b.png)
Проверим оба варианта :
![15467 \cdot {(-1)}^{0} \neq 87206~(\mod p),](/sites/default/files/tex_cache/f2de964bb9ef8563fd7e9a2708b9eea6.png)
![15467 \cdot {(-1)}^{1} = 87206~(\mod p).](/sites/default/files/tex_cache/b2d1cbcefe8455a7979ce73c8a2e7823.png)
Отсюда .
Далее,
![{\left({97697}^{{x}_{1}}\right)}^{2}={97697}^{2+4+8{x}_{1,3}}=101570 \cdot {\left(-1\right)}^{{x}_{1,3}}={55814}^{2}=1103~(\mod p).](/sites/default/files/tex_cache/c4a4431067d0ddb19d687ee3daf22204.png)
Опять, из двух вариантов выбираем верный: .
Наконец,
![{97697}^{1+2+4+8{x}_{1,4}}=46859 \cdot {\left(-1\right)}^{{x}_{1,4}}=55814~(\mod p),](/sites/default/files/tex_cache/a12ff2637ee8e9040662b02781576e12.png)
откуда Проверяем:
![{97697}^{15}=55814~(\mod p)\Rightarrow {x}_{1}=15.](/sites/default/files/tex_cache/4cf518fdc167d0e5412f08c98d041994.png)
Аналогично находим .
По китайской теореме об остатках находим .
Для небольших бывает удобно вычислять все степени примитивного корня и строить на основе этих вычислений две таблицы, называемые таблицами индексов. Таблицы индексов используются для быстрого решения некоторых задач по модулю простого числа
.
Приведем эти таблицы для примитивного корня 2 по модулю 37:
Например, чтобы определить индекс по числу 13, нужно в первой таблице перейти к столбцу "1" и строке "3". Итак, . Наоборот, для нахождения числа по его индексу 11 нужно во второй таблице перейти в столбец "1" строку "1". Имеем:
.
Пример 3.8 Решим с помощью таблицы индексов сравнение:
![8x=-11\mod37.](/sites/default/files/tex_cache/59d88a28b3ba2c35db627c12f724c3b1.png)
Будем далее использовать примитивный корень и построенные для него выше таблицы. Правую часть сравнения заменяем положительным вычетом:
![8x=26\mod37.](/sites/default/files/tex_cache/9ed49943e0adb241aa2401a61fed5dd7.png)
"Индексируем" левую и правую части сравнения:
![{ind}\ 8+{ind}\ x={ind}\ 26~(\mod 36).](/sites/default/files/tex_cache/d0aaf603b0438feadf871830373fc652.png)
Находим в первой таблице для простого числа 37 значение и
и подставляем в сравнение. Получим:
![3+ind\ x=12~(\mod 36),](/sites/default/files/tex_cache/d8aa3b46dd7c34c8fd6dcdc5a3be2f39.png)
Откуда
![ind\ x=9~(\mod 36).](/sites/default/files/tex_cache/9de3e700bd357a9290d26d81d803d031.png)
По второй таблице находим число, соответствующее индексу 9. Получим:
Пример 3.9 С помощью индексов решить сравнение:
![13{x}^{4}=22~(\mod 37).](/sites/default/files/tex_cache/355b233439932fc11ff0d982212756ca.png)
Индексируем сравнение:
![ind\ 13+4\cdot ind\ x=ind\ 22.](/sites/default/files/tex_cache/583d6c3aa7f43559b805fab4b8a2206f.png)
По первой таблице индексов находим: ,
. Отсюда:
, или
. Последнему сравнению удовлетворяют
. Для каждого из них по второй таблице индексов найдем
.