Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рахман П.А. - Кодирование информации

.pdf
Скачиваний:
49
Добавлен:
17.03.2015
Размер:
2.01 Mб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Филиал ФГБОУ ВПО УГНТУ в г. Стерлитамаке

Кафедра автоматизированных технологических и информационных систем

П.А. РАХМАН

КОДИРОВАНИЕ ИНФОРМАЦИИ С ПРИМЕНЕНИЕМ КОДОВ РИДА-СОЛОМОНА

Учебное пособие по выполнению самостоятельной и практической работы

Стерлитамак, 2012

2

УДК 519.725.2 + 512.624.2 ББК 32.811.4я73 Р27

Рецензенты зам. директора по учебной и научной работе

филиала УГАТУ в г. Стерлитамаке, доктор технических наук, профессор Галиев А.Л.;

зав. лаб. технологии и переработки ПВХ инженерно-производственного центра ОАО «Каустик»,

член-корр. РАЕН, доктор технических наук, профессор Нафикова Р.Ф.

Рахман П.А.

Р27 Кодирование информации с применением кодов Рида-Соломона: учебное пособие / П.А. Рахман. – Уфа: УГНТУ, 2012 – 167 с.

Посвящено технологии кодирования информации с применением кодов Рида-Соломона для повышения надежности хранения и передачи информации. В пособии приведены основы алгебры конечных полей и алгебраической теории кодирования, алгоритмы кодирования и декодирования кодов РС, а также вероятностный анализ искажений.

Предназначено для аспирантов и студентов технических вузов, обучающихся по направлению «220700 – Автоматизация технологических процессов и производств», изучающих дисциплины «Математические основы передачи информации» и «Диагностика и надежность автоматизированных систем».

УДК 519.725.2 + 512.624.2 ББК 32.811.4я73

© Уфимский государственный нефтяной технический университет, 2012

3

Введение

Одна из наиболее острых проблем в информационных технологиях – это защита данных от разрушения. Как каналы передачи данных, так и носители информации на сегодняшний день остаются далекими от совершенства, несмотря на все усилия производителей современных аппаратных средств. Кабельные и беспроводные линии передачи информации подвержены воздействию внешних помех, искажающих форму передаваемых сигналов и тем самым делающих невозможным однозначное распознавание информации на стороне приемника, магнитные и оптические носители информации чувствительны к физическим повреждениям, делающим невозможным чтение информации из отдельных участков на поверхности носителя. В такой ситуации особенно актуальным становится применение специальных технологий информационного резервирования, позволяющих, как минимум, обнаруживать искажения, а как максимум, не только обнаруживать, но и исправлять искажения.

В течение большей части второй половины XX века математики и специалисты по аппаратным и программным средствам ЭВМ и проблемам передачи данных упорно бились над тем, чтобы разработать технологию, позволяющую кодировать информацию таким образом, чтобы при разрушении случайно выбранных ее блоков, эти блоки можно было восстановить. После того, как была заложена математическая основа для кодирования, разработаны эффективные алгоритмы кодирования и декодирования, технология ближе к концу прошлого века стала более или менее устоявшейся, и получила такое широкое распространение, что ее возможностями прямо или косвенно пользуется большинство людей мира, причем многие даже не подозревают о ее существовании. Технология применяется при приеме и передаче данных в сетях передачи данных, а также при чтении и записи данных в системах хранения данных, использующих различные виды носители информации.

1. Кратко о конечных полях и общей алгебре.

Основная трудность в понимании технологии кодирования заключается в том, что она базируется не на привычной со школы алгебре бесконечного поля действительных чисел, а на специальной алгебре конечного поля Галуа [1, 2, 3]. Более того, сама по себе технология кодирования базируется на, так называемой, алгебраической теории кодирования [6-14]. Соответственно, чтобы разобраться в технологии, необходимо сначала познакомиться с основами общей алгебры [1, 5] и алгебраическими структурами, рассматриваемыми в ней, в том числе с конечным полем Галуа.

Алгебра. Пусть задано некоторое множество элементов G. Пусть задан набор операций { 1, , m} с некоторыми заданными арностями {n1, ,nm}, каждая

i я :1 i m из которых любым ni элементам из множества G ставит в соответствие некоторый элемент из этого же множества. Если ni 1, то операция i называется унарной

(одноместной), если ni 2, то операция i называется бинарной (двуместной), и так далее.

Тогда множество G, c заданным набором операций { 1, , m} называется алгебраической

структурой или просто алгеброй. При этом множество элементов G также называют носителем или основой алгебры, вектор арностей {n1, ,nm} называют типом, а набор

операций { 1, , m} называют сигнатурой. Носитель G не обязательно конечен, но не пуст: |G | 0. Арность любой из операций конечна, набор операций также конечен.

4

Особо отметим, что в определении алгебраической структуры неявно (выраженное в словесной форме) присутствует важнейшее свойство замкнутости алгебраической структуры. Любая операция, принадлежащая набору операций алгебраической структуры, заданной конечной арности, выполняемая над соответствующим числом элементов множества, являющегося основой алгебраической структуры, обязательно дает элемент, который также принадлежит этому множеству. Если это свойство не выполнено, то не может быть речи ни о какой-либо алгебраической структуре (алгебре).

Ярким примером алгебраической структуры, хорошо известным еще со школьной скамьи, является поле действительных чисел <R, {+, ·}>, состоящее из бесконечного множества действительных чисел R и двух бинарных операций: сложения и умножения, ставящих любым двум элементам множества R в соответствие некоторый третий элемент из этого множества. Кроме того, обе операции обладают рядом свойств, которые мы обсудим подробнее ниже при рассмотрении понятия поля.

Самой простой алгебраической структурой является структура, состоящая из множества элементов G и одной единственной унарной операции, ставящей в соответствие любому элементу множества G некоторый другой элемент этого множества. Однако, мы не будем подробно останавливаться на простейших структурах, и перейдем к рассмотрению структур, состоящих из множества элементов, и одной или двух бинарных операций.

Полугруппа. Алгебраическая структура, состоящая из некоторого множества элементов G и одной бинарной операции, обозначим ее значком , ставящей в соответствие любым двум элементам a и b множества G некоторый третий элемент c этого множества, называется полугруппой, если бинарная операция обладает единственным свойством:

Свойство ассоциативности: a,b,c G:(a b) c a (b c).

Простейшим примером полугруппы является множество непустых слов, составленных из букв некоторого алфавита, и заданной бинарной операции конкатенации двух слов: выписывания букв первого слова и дописывания к ним букв второго слова.

Моноид. Алгебраическая структура, состоящая из некоторого множества элементов G и одной бинарной операции, обозначим ее значком , ставящей в соответствие любым двум элементам a и b множества G некоторый третий элемент c этого множества, называется моноидом, если бинарная операция обладает двумя свойствами:

Свойство ассоциативности: a,b,c G :(a b) c a (b c).

Существование нейтрального элемента e относительно бинарной операции такого, что операция любого элемента a множества G c нейтральным элементом e снова дает элемент a: a G, e G:e a a e a.

Простейшим примером моноида является множество слов, включая пустое слово, составленных из букв некоторого алфавита, и заданной бинарной операции конкатенации двух слов. Заметим, что пустое слово – это и есть нейтральный элемент моноида. Очевидно, что конкатенация любого непустого слова с пустым словом дает исходное непустое слово.

Отметим также, что подмножество всех элементов множества G за исключением нейтрального элемента e, вместе с заданной бинарной операцией, образуют полугруппу. Иными словами, моноид по определению содержит в себе полугруппу.

Группа. Алгебраическая структура, состоящая из некоторого множества элементов G и одной бинарной операции, обозначим ее значком , ставящей в соответствие любым двум элементам a и b множества G некоторый третий элемент c этого множества, называется группой, если бинарная операция обладает следующими тремя свойствами:

Свойство ассоциативности: a,b,c G :(a b) c a (b c).

Существование нейтрального элемента: a G, e G:e a a e a.

Существование для каждого элемента множества G такого обратного элемента относительно бинарной операции, что операция элемента с обратным ему элементом дает нейтральный элемент e: a G, a G :a a a a e .

5

Определение 1. Если для бинарной операции дополнительно выполняется свойство коммутативности: a,b G :a b b a, то группа называется коммутативной (абелевой) по заданной бинарной операции, или более коротко: коммутативной (абелевой) группой.

Определение 2. Если под операцией понимается операция сложения, обозначаемая знаком +, то группа называется аддитивной, нейтральный элемент называется нулем (нулевым элементом), обозначается 0, а обратный элемент обозначается –a. Если под операцией понимается операция умножения, обозначаемая знаком ·, то группа называется

мультипликативной, нейтральный элемент называется единицей (единичным элементом)

и обозначается 1, а обратный элемент обозначается a-1.

Определение 3. Число элементов множества G, составляющего группу, называют порядком группы. Если порядок группы бесконечен, то такая группа называется бесконечной. Если же порядок группы конечен, то группа называется конечной.

Определение 4. Конечная группа называется циклической, если множество ее элементов представляет собой последовательность из результатов u-кратной композиции некоторого, так называемого, порождающего элемента ζ группы с самим собой при помощи бинарной операции , где 0 u q 1, причем q – наименьшее целое, при котором начинаются «повторения», иными словами u-кратная композиция дает такой же результат, что и 0-кратная композиция. При этом за результат 0-кратной композиции принимается нейтральный элемент e, который также по определению входит в группу. Иными словами циклическая группа состоит из q элементов: {e, e ζ, (e ζ) ζ, …, (…(e ζ) ζ ζ)} и бинарной операции . Порядок циклической группы равен числу q элементов группы.

Таким образом, мы рассмотрели три ключевые алгебраические структуры с одной бинарной операцией: полугруппу, моноид и группу. Перейдем теперь к рассмотрению алгебраических структур с двумя бинарными операциями.

Кольцо. Пусть задано множество элементов G и две бинарные операции: сложения, обозначим ее + и умножения, обозначим ее ·, ставящие любым двум элементам множества G некоторый третий элемент этого множества. Пусть множество элементов G вместе с бинарной операцией сложения образует коммутативную аддитивную группу: соблюдается свойство ассоциативности и коммутативности относительно операции сложения, существует нейтральный элемент по сложению, и для каждого элемента существует обратный элемент по сложению. Также пусть множество G вместе с бинарной операцией умножения образует мультипликативную полугруппу: соблюдается свойство ассоциативности относительно операции умножения. Наконец, пусть дополнительно соблюдается свойство дистрибутивности операции умножения относительно операции сложения, причем как слева,

так и справа: a,b,c G :a (b c) a b a c и a,b,c G :(b c) a b a c a. В таком случае множество элементов G и две бинарные операции: сложения и умножения, обладающие всеми вышеперечисленными свойствами, образуют алгебраическую структуру, называемую кольцом. Таким образом, в кольце с множеством элементов G и двумя бинарными операциями по определению соблюдаются следующие шесть свойств:

Ассоциативность по сложению: a,b,c G :(a b) c a (b c).

Существование нейтрального элемента по сложению: a G, 0 G:0 a a 0 a.

Существование для каждого элемента множества G обратного элемента по сложению

a G, a G:a ( a) ( a) a 0.

Коммутативность по сложению: a,b G : a b b a.

Ассоциативность по умножению: a,b,c G :(a b) c a (b c).

Дистрибутивность операции умножения (слева и справа) относительно операции сложения: a,b,c G :a (b c) a b a c и a,b,c G :(b c) a b a c a.

Определение 1. Если операция умножения в кольце обладает дополнительным свойством коммутативности: a,b G : a b b a, то кольцо называется коммутативным по умножению, или более коротко: коммутативным кольцом.

6

Определение 2. Если во множестве элементов кольца существует нейтральный элемент по умножению, называемый единицей и обозначаемый 1, такой, что умножение любого элемента a множества G на нейтральный элемент по умножению снова дает элемент a, иными словами: a G, 1 G:1 a a 1 a, то кольцо называют кольцом с единицей.

В качестве примера можно привести коммутативное кольцо с единицей, состоящее из множества целых чисел Z и двух заданных бинарных операций: сложения + и умножения ·.

Поле. Пусть задано множество элементов G и две бинарные операции: сложения, обозначим ее + и умножения, обозначим ее ·, ставящие любым двум элементам множества G некоторый третий элемент этого множества. Пусть множество элементов G и две бинарные операции сложения и умножения образуют коммутативное кольцо с единицей (выполняются шесть свойств кольца, а также два дополнительных свойства коммутативности по умножению и существования нейтрального элемента по умножению). Пусть дополнительно соблюдается еще одно свойство: для каждого ненулевого элемента (не являющегося нейтральным элементом по сложению, то есть нулем) существует обратный элемент по умножению, иными словами a G:a 0; a 1 G:a a 1 a 1 a 1. Тогда множество G и две бинарные операции сложения и умножения образуют алгебраическую структуру, называемую полем. Таким образом, в поле с множеством элементов G и двумя бинарными операциями по определению соблюдаются следующие девять свойств:

Ассоциативность по сложению: a,b,c G :(a b) c a (b c).

Существование нейтрального элемента по сложению: a G, 0 G:0 a a 0 a.

Существование обратного элемента по сложению для каждого элемента множества G:

a G, a G :a ( a) ( a) a 0.

Коммутативность по сложению: a,b G : a b b a.

Ассоциативность по умножению: a,b,c G :(a b) c a (b c).

Дистрибутивность операции умножения (слева и справа) относительно операции

сложения: a,b,c G :a (b c) a b a c и a,b,c G :(b c) a b a c a.

Коммутативность по умножению: a,b G : a b b a.

Существование нейтрального элемента по умножению: a G, 1 G :1 a a 1 a.

Существование обратного элемента по умножению для каждого ненулевого элемента множества G: a G:a 0, a 1 G:a a 1 a 1 a 1.

Число элементов множества G, составляющего поле, называют порядком поля. Порядок поля с бесконечным числом элементов бесконечен, и такое поле называется бесконечным. Если же число элементов конечно, то поле называется конечным.

Ярким примером поля является бесконечное поле действительных чисел, состоящее из множества действительных чисел R и двух бинарных операций сложения + и умножения ·.

Поле Галуа. Если число элементов поля конечно, то мы имеем конечное поле, которое также называют полем Галуа по имени их первого исследователя, Эвариста Галуа. Поле Галуа обозначается GF(q). Аббревиатура GF – это сокращение от словосочетания Galois Field, а q – число элементов поля по определению является порядком поля.

Определение 1. Поле Галуа GF(q) по определению содержит единичный элемент 1 (нейтральный элемент по умножению). Тогда, наименьшее целое число 0 такое, что

1 1 1 1 0, называют характеристикой поля. Отметим также, что при помощи

слагаемых

единичного элемента поля можно породить циклическую аддитивную группу порядка . Определение 2. Пусть задан ненулевой элемент a поля Галуа GF(q). Наименьшее

целое число 0 такое, что a a a a 1, называют порядком элемента a. Отметим

множителей

также, что при помощи элемента a, порядок которого равен , можно породить циклическую мультипликативную группу порядка .

7

Особо отметим, что поля Галуа существуют не для любого q. Согласно общей алгебре, поле Галуа можно построить только для числа q, являющегося либо простым числом p, либо некоторой степенью простого числа, то есть pm, где m – целое число 2.

Определение 3. Поле порядка q, являющегося простым числом p, называют простым полем Галуа и обозначают GF(p), а поле порядка q = pm, называют расширенным полем Галуа и обозначают GF(pm), и оно является расширением простого поля GF(p).

Согласно общей алгебре для заданного числа q, равного простому числу p или некоторой его степени pm, существует одно и только одно поле Галуа GF(q).

Простое поле Галуа. Ярким примером простого поля Галуа является поле GF(2) = <{0, 1}, {+, ·}>, состоящее всего из двух элементов: 0, являющегося нейтральным элементом по сложению, и 1, являющегося нейтральным элементом по умножению, а также двух операций, сложения и умножения, со следующими «таблицами сложения и умножения»:

 

 

0

1

 

 

0

1

GF(2):

 

 

 

 

 

 

 

 

 

0

0

1

0

0

0

 

1

1

0

1

0

1

Заметим, что обратным элементом по сложению для 0 является сам элемент 0, а для элемента 1 – сам элемент 1. Обратным элементом по умножению для единственного ненулевого элемента 1 – сам элемент 1. Порядок поля равен 2, поскольку поле содержит всего два элемента, кроме того, характеристика поля также равна 2, поскольку 1 1 0, т.е. две единицы в сумме уже дают нулевой элемент.

Отметим, что простое поле GF(2) является наименьшим возможным простым полем. Приведем еще один пример простого поля GF(3) = <{0, 1, 2}, {+, ·}>, с нейтральным элементом по сложению: 0, с нейтральным элементом по умножению: 1, и со следующими

«таблицами сложения и умножения»:

 

0

1

2

 

 

0

1

2

 

 

 

 

 

 

 

 

 

 

 

0

0

1

2

0

0

0

0

GF(3):

1

2

0

1

0

1

2

1

2

2

0

1

2

0

2

1

Заметим, что обратным элементом по сложению для 0 является сам элемент 0, для 1 – элемент 2, для 2 – элемент 1. Обратным элементом по умножению элемента 1 является сам элемент 1, а для элемента 2 – сам элемент 2. Порядок поля равен 3, поскольку поле содержит всего три элемента, кроме того, характеристика поля также равна 3, поскольку 1 1 1 (1 1) 1 2 1 0, т.е. три единицы в сумме уже дают нулевой элемент.

Наконец, приведем пример простого поля GF(5) = <{0, 1, 2, 3, 4}, {+, ·}>, с нейтральным элементом по сложению: 0, с нейтральным элементом по умножению: 1, и со следующими «таблицами сложения и умножения»:

 

0 1

2 3 4

 

 

0

1

2

3

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

2

3

4

0

0

0

0

0

0

1

1

2

3

4

0

1

0

1

2

3

4

GF(5):

2

3

4

0

1

2

0

2

4

1

3

2

3

3

4

0

1

2

3

0

3

1

4

2

4

4

0

1

2

3

4

0

4

3

2

1

Заметим, что обратным элементом по сложению для 0 является сам элемент 0, для 1 – элемент 4, для 2 – элемент 3, для 3 – элемент 2, для 4 – элемент 1. Обратным элементом по умножению для 1 является сам элемент 1, для 2 – элемент 3, для 3 – элемент 2, для 4 – сам элемент 4. Порядок поля равен 5, поскольку оно состоит из пяти элементов. Кроме того, характеристика поля равна 5, поскольку сумма из 5 единичных элементов уже дают нулевой элемент: 1 1 1 1 1 (((1 1) (1 1)) 1) ((2 2) 1) (4 1) 0.

8

Арифметика и свойства простого поля. На примере вышеприведенных трех простых полей, мы можем провести ряд аналогий с полем действительных чисел:

Элементы простого поля GF(p) – это не что иное, как множество различных неотрицательных остатков по модулю простого числа p. Под «остатком по модулю простого числа p», понимается остаток, получаемый при выполнении операции деления по правилам поля действительных чисел <R, {+, ·}> некоторого целого числа, принадлежащего множеству действительных чисел R, на простое число p, также принадлежащего множеству R. Остаток по модулю p принято обозначать как mod p.

Операция сложения, заданная для простого поля GF(p) – это не что иное, как операция сложения по правилам поля действительных чисел <R, {+, ·}> с последующим вычислением остатка суммы по модулю p.

Операция умножения, заданная для простого поля GF(p) – это не что иное, как операция умножения по правилам поля действительных чисел <R, {+, ·}> с последующим вычислением остатка произведения по модулю p.

Обратный элемент по сложению для нулевого элемента 0 простого поля GF(p) – это сам нулевой элемент 0. Обратный элемент для ненулевого элемента a это элемент, который можно вычислить, как p a, где вычитание выполняется по правилам поля действительных чисел <R, {+, ·}>. Заметим, что если к разности p a дополнительно применять вычисление остатка по модулю p, иными словами, использовать формулу (p a)mod p для вычисления обратного элемента простого поля GF(p) по сложению, то формула будет справедливой для всех элементов поля, включая нулевой элемент.

Обратного элемента по умножению для нулевого элемента 0 не существует. Обратный элемент по умножению для ненулевого элемента a простого поля GF(p)

является решением уравнения (a b)mod p 1, заданного в поле действительных

чисел <R, {+, ·}>, такое, что решение b a 1 также является элементом поля GF(p). Согласно общей алгебре, вышеприведенные «аналогии» с привычным для нас полем

действительных чисел, справедливы для любого простого поля Галуа GF(p). Иными словами, для любого простого поля GF(p) справедливо следующее:

 

p P: p 2& a R:a {0,1, , p 1} a GF(p).

 

 

p P: p 2 & a,b GF(p) a b

(a b)mod p .

 

 

 

 

 

 

 

 

GF(p)

 

 

 

R,{ ,}

 

 

p P: p 2 & a,b GF(p)

a b

(a b)mod p.

(1.1)

 

 

 

 

 

 

 

GF(p)

 

 

 

R,{ ,}

 

 

p P: p 2 & a GF(p)

a (p a)mod p .

 

 

 

 

 

 

 

GF(p)

 

 

R,{ ,}

 

p P: p 2 & a GF(p):a 0, a 1 GF(p):a a 1 1

GF(p)

(a a 1)mod p 1.

R,{ ,}

Таким образом, мы получили важные «связующие звенья» между операциями, выполняемыми в простом поле Галуа GF(p), и привычными для нас операциями поля действительных чисел <R, {+, ·}>. Заметим также, что операция сложения элементов, умножения элементов и вычисления обратного элемента по сложению для простого поля выполняются с помощью не более двух соответствующих действий в поле действительных чисел. Что же касается операции вычисления обратного элемента по умножению, то она представляет собой некоторую процедуру поиска элемента, удовлетворяющего уравнению (a x)mod p 1, и требует значительно большего времени для ее выполнения.

Отметим также, что рассмотренную выше «арифметику» простого поля GF(p) также называют модулярной арифметикой [4, 5], поскольку все операции с элементами поля выполняются по модулю p с точки зрения традиционной алгебры действительных чисел.

9

Теперь отдельно остановимся на вычислении обратного элемента по умножению в простом поле GF(p) для некоторого ненулевого элемента a. Очевидно, что для небольших

простых полей, обратный элемент b a 1 можно найти простым перебором всех ненулевых элементов простого поля с проверкой каждого из них на условие (a b)mod p 1. В принципе можно вообще избавиться от необходимости какого-либо перебора, если заранее сгенерировать «таблицу обратных элементов по умножению», и тогда поиск обратного элемента по умножению сведется к однократному обращению к этой таблице. Однако, в случае достаточно большого поля, полный перебор становится слишком медлительным по времени, а для хранения большой «таблицы обратных элементов» может потребоваться слишком много памяти. В таком случае можно применять алгоритм вычисления обратного элемента по умножению, базирующийся на расширенном алгоритме Евклида.

Идея алгоритма заключается в следующем. С одной стороны условие (a b)mod p 1 эквивалентно условию a b p t 1, где t - частное от деления a b на простое число p . С другой стороны расширенный алгоритм Евклида позволяет найти наибольший общий делитель НОД(a, p) для чисел a и p , а также g и h такие, что a g p h НОД(a, p). А теперь заметим, что p простое число, которое делится только на себя и единицу, а это значит, что наибольшим общим делителем для a и p может быть только 1: НОД(a, p) 1. В такой ситуации имеет место быть равенство: a g p h 1. Следует особо отметить, что с учетом того, что p простое число, а число a, будучи ненулевым элементом поля GF(p), находится в диапазоне [1, p 1], расширенный алгоритм Евклида дает ненулевое число g , которое принадлежит одному из двух диапазонов: [ (p 1)/2, 1] или [1,(p 1)/2]. В случае,

если число

g 0,

можно установить прямую

связь между равенством a g p h 1 и

условием a b p t

1 поиска обратного элемента по умножению:

b g и t h . В случае,

если число

g 0,

то

мы

можем воспользоваться свойством

остатков

по модулю:

gmod p (g p)mod p,

и

тогда равенство

a g p h 1 мы

можем

преобразовать

следующим образом a g p h 1 a (g

p) a p p h 1 a (g p)

p (h a) 1, и

установить связь с условием a b p t 1

в виде: b g p и t a h .

Обобщая все

вышесказанное, мы можем окончательно записать связь между b и g , а также между t и h:

 

g,

g 0

h,

g 0

a g p h НОД(a, p)

p P

b

 

g 0

; t

;

НОД(a, p) 1

;

g p,

a h,

g 0

1 a p 1

Теперь кратко рассмотрим суть расширенного алгоритма Евклида, определяющий

наибольший общий делитель для двух чисел

a и p , и вычисляющий числа g и h. В

математическом виде алгоритм можно записать следующим образом:

 

r(0)

p

g(0)

0

h(0) 1

 

r(1)

a

g(1)

1

h(1) 0

 

s 2 n:r(n) 0

 

 

 

 

 

 

 

 

q(s)

 

(s 2)

q

(s)

r

(s 1)

r

(s)

r

 

 

 

 

 

(s)

 

 

 

 

 

 

 

 

r

 

g(s) g(s 2) g(s 1) q(s)

 

h

(s)

h

(s 2)

h

(s 1)

q

(s)

 

 

 

 

 

НОД(a, p) r(n 1)

 

 

g g(n 1)

 

(1.2)

 

 

 

 

 

h h

(n 1)

 

 

 

 

 

 

 

 

 

 

Особо отметим, что при работе алгоритма все операции: сложения, вычитания и умножения, а также деления «в столбик» одного числа на другое число с целью нахождения частного и остатка от деления – выполняются по правилам арифметики поля действительных чисел, и все промежуточные результаты вычислений рассматриваются также как действительные числа. Интерпретация результатов как элементов простого поля GF(p) производится после вычисления чисел b и t по приведенным выше соотношениям.

 

 

 

10

 

 

 

«Ядром»

алгоритма

является

ключевое

рекуррентное

соотношение

r(s 2)

q(s) r(s 1)

r(s) , с помощью

которого на каждой итерации, начиная с итерации s 2,

вычисляется текущий остаток r(s)

и частное

q(s) от деления остатков r(s 2)

на r(s 1) двух

«предыдущих» итераций. В качестве «начальных» условий для алгоритма принимаются: r(0) p и r(1) a. В расширенном алгоритме Евклида на каждой итерации частное q(s)

также используется для формирования чисел g

и

h

при помощи двух

дополнительных

рекуррентных соотношений: g(s) g(s 2) g(s 1)

q(s)

 

и

h(s) h(s 2)

h(s 1)

q(s) ,

причем в

качестве «начальных» условий для них принимаются:

g(0) 0, g(1)

1, h(0) 1

и h(1) 0.

Алгоритм выполняется до тех пор,

пока на некотором шаге s n не будет получен остаток

r(n) 0. В этом случае алгоритм

завершается, а

в

качестве результатов принимаются

результаты предпоследней итерации: НОД(a, p) r(n 1) , g g(n 1) и h h(n 1) .

Отметим, что поскольку в нашем случае цель – поиск обратного элемента по умножению в простом поле GF(p), то вычисление числа h нам фактически не требуется, для получения обратного элемента по умножению достаточно вычислить число g .

Рассмотрим пример вычисления обратного элемента по умножению в простом поле GF(p) при помощи вышеописанного алгоритма.

Пример. Вычислим в простом поле GF(97) обратный элемент по умножению для элемента a 10. Сначала применим расширенный алгоритм Евклида для чисел a 10 и

p 97,

и определим число g . В качестве «начальных» условий алгоритма принимаются

r(0)

p 97 , r(1)

a 10, g(0) 0 и g(1) 1.

 

 

 

 

 

 

 

 

Начинаем

с

итерации

s 2. Делим

число

r(0) 97 на

число r(1) 10,

получаем

частное

q(2)

9

и

остаток r(2) 7

от деления. Используя частное

q(2) ,

также вычисляем

g(2)

g(0) g(1) q(2)

0 1 9 9.

 

 

 

 

 

 

 

 

 

Переходим к

итерации

s 3. Делим

число

r(1)

10 на

число

r(2) 7,

получаем

частное

q(3)

1

и остаток r(3)

3

от деления. Используя частное

q(3) ,

также вычисляем

g(3)

g(1) g(2) q(3)

1 ( 9) 1 10.

 

 

 

 

 

 

 

 

Переходим к итерации s 4. Делим число r(2)

7

на число r(3)

3, получаем частное

q(4)

2

и

остаток

r(4) 1

от

деления.

Используя

частное

q(4) ,

также

вычисляем

g(4)

g(2) g(3) q(4)

9 10 2 29.

 

 

 

 

 

 

 

 

Переходим к итерации s 5. Делим число r(3)

3

на число r(4) 1, получаем частное

q(5)

3

и остаток r(5)

0 от деления. Поскольку остаток от деления равен нулю, то работа

алгоритма на этом завершается, а в качестве результатов принимаются результаты вычислений на предпоследней итерации: НОД(a, p) r(4) 1 и g g(4) 29.

Поскольку в результате работы расширенного алгоритма Евклида мы получили отрицательное число g 29, то в качестве итогового результата, являющегося обратным

элементом по умножению для элемента

a 10 в простом поле GF(97) принимается число

b g p 29 97 68.

 

Проверим полученный результат:

(a b)mod p (10 68)mod97 680mod97 1. Таким

образом, мы убедились в том, что элемент b 68 является обратным элементом по умножению для элемента a 10 в простом поле GF(97).

Примечание. Следует отметить, что вышерассмотренный алгоритм также может применяться для поиска обратного элемента по умножению в коммутативном кольце с единицей, состоящем из множества целых неотрицательных чисел, являющихся остатками по модулю некоторого целого числа n > 1, не являющегося простым числом. Однако, в кольце по определению не для всякого ненулевого элемента существует обратный элемент по умножению, и для таких элементов наибольший общий делитель НОД(a,n) 1.