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

Некоторые приложения теории кодирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

1.2. Линейный код и его характеристики

из кодовой матрицы нулевые столбцы. Поэтому под [n, k, d]q-кодом обычно понимается код без фиктивных координат.

Порождающей матрицей [n, k]q-кода C называется (k × n)-матрица G ранга k такая, что

C = {mG: m Fqk} = L(G).

(1.2)

Из (1.2) следует, что если G — порождающая матрица, то для любой невырожденной (k × k)-матрицы S матрица SG также является порождающей.

Проверочной матрицей [n, k]q-кода C называется ((n − k) × n)-матрица H ранга n − k, для которой выполняется равенство

GHT = O,

(1.3)

где G — некоторая порождающая (k × n)-матрица кода C. Из (1.3) вытекает, что линейный [n, k]q-код C может быть определен с помощью его проверочной матрицы H:

C = {c Fqn: HcT = 0nT−k}.

(1.4)

Определение 2. Пусть C — [n, k]q-код, H — его проверочная матрица. Вектор zHT = s называется синдромом вектора z Fnq относительно матрицы H.

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

Нами часто будет использоваться следующая теорема.

Теорема 1. В проверочной матрице H линейного [n, k, d]q-кода C набор из любых d − 1 столбцов является линейно независимым.

Доказательство. Предположим, что существует линейно зависимый набор столбцов H|i1 , ..., H|id−1 . Следовательно, существует такой ненулевой вектор z Fnq веса не более d − 1, что

zi1 H|i1 + ... + H|id−1 zid−1 = 0Tnk.

Иначе это равенство можно переписать в следующем виде: HzT = 0Tn−k. Учитывая (1.4), получаем, что z C. Однако это противоречит тому, что код C имеет минимальное расстояние d, в то время как wt(z) d − 1.

11

Глава 1. Линейные блоковые коды

Определение 3. Пусть C – линейный [n, k]q-код с проверочной матрицей H. Подпространство C пространства Fnq , порожденное строками матрицы H, называется кодом, дуальным к коду C:

C = L(H) = {cFnq: c C c, c= 0}.

Определение 4. [n, k, d]q-код C называется кодом, перестановочно эквивалентным [n, k, d]q-коду D, если существует такая подстановка σ из симметрической группы Sn, что

D = σ(C) = {(cσ(1), ..., cσ(n)): (c1, ..., cn) C}.

Подгруппа группы Sn, такая, что σ(C) = C, называется группой перестановочных автоморфизмов кода C и обозначается PAut(C).

Под (n×n)-матрицей перестановки будем понимать матрицу, в которой в каждом столбце и в каждой строке одна единица поля. Будем говорить, что (n × n)-матрица перестановки Pσ соответствует подстановке σ Sn, если для любого вектора x = (x1, ..., xn) выполняется равенство:

(xσ−1(1), ..., xσ−1(n)) = xPσ.

В Pσ в первом столбце единица расположена в строке с номером σ−1(1), во втором столбце единица расположена в строке с номером σ−1(2) и т.д.

Так как для [n, k]q-кода C порождающая матрица G имеет ранг k, то среди столбцов этой матрицы найдутся k линейно независимых столбцов. Множество номеров координат τ, |τ| = k, такое, что rank(G|τ ) = k, называется информационной совокупностью. Число всех информационных совокупностей для [n, k]q-кода C очевидно не превышает nk .

Для любого [n, k]q-кода C можно найти такую подстановку σ Sn, что множество [k] будет являться информационной совокупностью перестановочно эквивалентного ему кода σ(C). Поэтому без нарушения общности часто полагают, что [k] является информационной совокупностью кода C. Удобство состоит в том, что в этом случае порождающая и проверочная матрицы кода C могут быть представлены в виде:

G = [Ik|P ], H = [−P T |In−k].

(1.5)

Говорят, что матрица G имеет систематический вид, а сам код называет-

12

1.3. Минимальные векторы

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

Теорема 2. Для [n, k, d]q-кода C выполняется неравенство

 

n − k d − 1.

(1.6)

Доказательство. Без нарушения общности можно считать, что порождающая матрица G кода C имеет систематический вид (1.5). Неравенство (1.6) вытекает из того, что вес каждой строки матрицы в систематическом виде не превышает n − k + 1.

Неравенство (1.6) называется неравенством Синглтона, а [n, k, d]q-код, для которого выполняется равенство в (1.6), называется кодом с макси-

мальным достижимым расстоянием (МДР-кодом).

Теорема 3. Если C — линейный [n, k, n −k + 1]q-код, то C — линейный [n, n − k, k + 1]q-код.

1.3. Минимальные векторы

Кодовый вектор c из [n, k, d]q-кода C называется минимальным, если

|{x C : supp(x) supp(c)}| = q − 1.

Другими словами, для минимального вектора c C нестрогое вложение supp(x) supp(c) выполняется для x C, только если c = ax для некоторого a Fq \ {0}. Множество всех минимальных векторов кода C обозначим M(C). В любом ненулевом линейном [n, k, d]q-коде C существуют минимальные векторы. Такими могут быть не только векторы, на которых реализуется минимальное кодовое расстояние.

Теорема 4. Пусть G = [Ik|P ] — порождающая матрица систематического [n, k, d]q-кода C. Строки матрицы G являются минимальными кодовыми векторами.

Доказательство. Доказательство вытекает из единственности порождающей матрицы в систематическом виде.

13

Глава 1. Линейные блоковые коды

1.4. Сумма кодов

Пусть C0 Fnq и C1 Fnq — линейные коды размерности k0 и k1 соответственно. Рассмотрим сумму (внутреннюю) кодов

C0 + C1 = {c0 + c1 : c0 C0, c1 C1} = C.

(1.7)

Так как коды C0 и C1 могут пересекаться не только по нулевому вектору, то k = dim(C) k0 + k1.

Теорема 5. Пусть H — проверочная матрица кода вида (1.7). Тогда строки H — это векторы любого базиса пространства L(H0) ∩L(H1), где H0 и H1 — проверочные матрицы кодов C0 и C1 соответственно.

Доказательство. Пусть H — проверочная матрица кода C. В пространстве L(H0) ∩ L(H1) находятся векторы, которые ортогональны, как

векторам C0, так и векторам C1. Поэтому L(H0) ∩ L(H1) L(H). Предположим, что это вложение строгое. То есть существует ненулевой вектор

h L(H) \ L(H0) ∩L(H1) . Так как H — базис пространства, ортогонального пространству C = C0 + C1, то вектор h ортогонален всем векторам из C0 и всем векторам из C1, следовательно, h L(H0) ∩ L(H1), что противоречит предположению.

1.5. Покрывающий код

Множество C( Fnq ) называется покрывающим кодом с радиусом покрытия R, если R – такое минимальное натуральное число, для которого выполняется условие:

x Fnq c C: ρ(c, x) R.

Из этого определения вытекает, что если H – проверочная матрица [n, k]q- кода C с радиусом покрытия R, то для любого вектор-столбца s Fnq −k найдется такой вектор y Fnq веса Хэмминга не более R, что

HyT = s.

14

1.6. Вопросы для самоконтроля

Если C — линейный код с радиусом покрытия R, то множество

x + C = {x + c : c C}

является покрывающим кодом с радиусом покрытия R. Множество x + C также называется смежным классом кода C с представителем x.

1.6. Вопросы для самоконтроля

1.Носитель, вес, расстояние.

2.Линейный код, кодовая, порождающая и проверочная матрицы.

3.Дуальный код, перестановочно эквивалентные коды, информационная совокупность, систематический вид.

4.Связь характеристик n, k и d.

15

Глава 2

Схема защиты в канале с помехами

2.1. Постановка задачи

При передаче данных в пространстве (в системах связи) или во времени (в системах хранения) в соответствующих цифровых каналах передачи данных (ЦКПД) могут возникать помехи, искажающие передаваемые сигналы. Это, в свою очередь, может привести к тому, что данные на выходе канала будут отличаться от данных, переданных на его вход. Например,

врадиоканалах помехи присутствуют практически всегда: 1) радиоволны от одного источника, отражаясь от разных поверхностей, накладываются друг на друга; 2) чем дальше приемник от источника, тем вероятнее, что принятый сигнал будет отличаться от переданного. Помехи возникают и

всистемах хранения: 1) например, в SSD-накопителях (Solid-State Drive, твердотельные накопители) каждая ячейка имеет ограниченное число циклов перезаписи, и со временем ячейка может выйти из строя, «застряв»

вкаком-то фиксированном значении, которое невозможно поменять; 2) в распределенных системах хранения (SAN – Storage Area Network), состоящих их множества накопителей (сетевых узлов, компьютеров), отдельные элементы могут выходить из строя.

Для борьбы с искажениями в ЦКПД часто применяются линейные блоковые коды. Входными данными ЦКПД в этом случае являются кодовые векторы кода, а выходом — искаженные векторы той же длины (ЦКПД, в которых происходит вставка или удаление отдельных координат, в настоящем пособии не рассматриваются). Алфавит, которому принадлежат значения координат искаженного вектора зависит от типа искажений в ЦКПД.

16

2.2. Обнаружение ошибок

Вектор, получаемый на выходе ЦКПД Ch, при условии, что входом является кодовый вектор c, будем обозначать z = Ch(c).

Обычно различают два типа искажений в ЦКПД: ошибки и стирания. В случае ошибок места искаженных координат кодового вектора неизвестны, а вектор z на выходе такого ЦКПД Ch обычно представляется в виде:

z = Ch(c) = c + e,

(2.1)

где c – кодовый вектор, e – вектор аддитивной помехи. Получателю векторы c и e при приеме из канала вектора z неизвестны. В случае стираний искаженные (стертые) координаты известны. Стирание координаты на практике может означать, например, неисправность ячейки памяти или отдельного узла, где хранилось значение координаты (в случае, когда ЦКПД представлен системой хранения), или потерю сетевого пакета (ЦКПД здесь

– это сеть связи). Часто стертые координаты обозначают символом . Например, вектор на выходе канала со стираниями Ch, когда кодовым вектором на входе является 16, может иметь вид:

z= Ch(16) = (1, , , 1, , 1).

Вканале могут также быть искажения обоих типов.

Одной из задач является подбор такого кода для ЦКПД, чтобы все или почти все искажения могли быть исправлены эффективным декодером для этого кода или обнаружены. (Здесь и далее под «эффективным» алгоритмом будем понимать алгоритм, вычислительная сложность которого в среднем ограничена некоторым полиномом от размера входных данных)

2.2. Обнаружение ошибок

Пусть C — [n, k, d = 2t + 1]q-код. Принятый из ЦКПД вектор z = c + e, в котором нет стираний, обычно сначала проверяется на наличие ошибок. Такая проверка сводится к вычислению синдрома вектора z (см. определение 2). Если синдром равен 0n−k, то считается, что ошибок в векторе z нет, и процедура декодирования не запускается, а сразу запускается процедура извлечения информационного вектора из кодового. Если же синдром отличен от нулевого вектора, то wt(e) > 0, и требуется запуск процедуры

17

Глава 2. Схема защиты в канале с помехами

декодирования. Отметим, что при wt(e) t ошибка может быть исправлена, а при wt(e) > t, в общем случае, нет.

Если C — систематический код, то в качестве порождающей матрицы может использоваться матрица в систематическом виде. Поэтому извлечение информационного вектора из кодового — это считывание первых k символов из кодового вектора.

Теорема 6. Линейный блоковый [n, k, d]q-код C позволяет обнаруживать dошибок, где 0 < d< d.

Доказательство. Вытекает из того, что в C нет ненулевых векторов веса менее d. Поэтому синдромы таких векторов будут ненулевыми.

2.3. Исправление ошибок. Декодер в ближайшее кодовое слово

Одним из способов исправления искажений в кодовых словах линейного [n, k]q-кода C является поиск кодового слова c C, расстояние Хэмминга до которого от принятого вектора z Fnq наименьшее. Этот способ называется декодированием в ближайшее кодовое слово. Наивная реализация такого способа состоит в переборе всех кодовых слов и выборе того c, для которого ρ(c, z) наименьшее (см. алгоритм 1). Такая реализация требует |C| = qk сравнений, что при больших q и k может оказаться неприемлемым или вычислительно невозможным.

Алгоритм 1: NaiveDecoder — наивное декодирование в ближайшее кодовое слово

Вход: z

Выход: c – кодовый вектор

1c := 0n, ∆ = wt(z)

/*Вычислить расстояние от принятого вектора до всех кодовых слов

 

 

 

и выбрать вектор с наименьшим расстоянием

*/

2

for cC do

 

3

 

 

if ρ(c, z) < ∆ then

 

4

 

 

 

 

c := c, ∆ = ρ(c, z)

 

 

 

 

 

 

 

 

5

вернуть c

 

 

 

 

 

 

 

 

18

2.3. Исправление ошибок. Декодер в ближайшее кодовое слово

Следующая теорема для [n, k, d]q-кода C устанавливает связь между числом исправляемых ошибок и стираний, с одной стороны, и кодовым расстоянием d, с другой стороны, при использовании декодирования в ближайшее кодовое слово.

Теорема 7. При декодировании в ближайшее кодовое слово линейный [n, k, d]q-код C гарантированно исправляет t ошибок и p стираний, если

d 2t + 1 + p.

(2.2)

Доказательство. Пусть c = (c1, ..., cn) C. Без потери общности можно считать, что при передаче по ЦПКД стираются значения в первых p координатах, а ошибки происходят в следующих t координатах. Таким образом, множество номеров координат [n] принятого из канала вектора z можно разбить на три подмножества:

[n] = τe τn {t + p + 1, ..., n}, τe = [p], τn = {p + 1, . . . , , p + t}.

При этом

, i τe,

z =

c

+ e

, e = 0, i

 

τ

,

(2.3)

i

i

i

i ̸

n

 

 

c , i {p + 1, . . . , , p + t},

i

Так как часть координат стерта, то при декодировании в ближайшее кодовое слово будет выбран тот кодовый вектор c˜ C, для которого значение ρ(c˜|[n]\τe, z|[n]\τe) будет наименьшим. Покажем, что таким вектором c˜ будет только c, если выполняются условия теоремы. Предположим, что существует другой вектор y C, такой, что

ρ(y˜|[n]\τe, z|[n]\τe) ρ(c|[n]\τe, z|[n]\τe)

Так как координаты ошибок и стираний не пересекаются, то, с учетом (2.3), по неравенству треугольника для метрики Хэмминга получаем следующую цепочку неравенств:

ρ(c, y) ρ(c|[n]\τe, y|[n]\τe) + p

ρ(c|τn, z|τn) + ρ(z|τn, y|τn) + p = 2t + p.

19

Глава 2. Схема защиты в канале с помехами

А это противоречит условию теоремы на кодовое расстояние d.

Из (2.2) и (1.6) вытекает, что если t и p – соответственно число гарантированно исправляемых [n, k, d]q-кодом C ошибок и стираний, то

n − p 2t + k.

(2.4)

2.4. Исправление стираний

Для исправления стираний может быть применен следующий универсальный алгоритм. Пусть C — линейный [n, k, d = p+1]q-код, G = [g1, ..., gn]

— его порождающая матрица, состоящая из n столбцов g1,...,gn, m Fkq . Закодируем m: mG = c. Пусть при передаче по каналу в c произошло не более p стираний. Без нарушения общности будем считать, что стирания произошли в первых p позициях. Тогда принятый вектор z имеет вид:

z = ( , ..., , cp+1, ..., cn).

Предположим, что существуют два таких вектора m и m, что

mG|p+1,...,n = mG|p+1,...,n = (cp+1, ..., cn).

Но это означает, что d p, что противоречит условию. Поэтому исходный

вектор m — единственное решение уравнения mG|p+1,...,n = (cp+1, ..., cn) относительно неизвестного m. Из единственности решения вытекает, что

rank(G|p+1,...,n) = k. Следовательно, декодирование стираний может быть реализовано так, как показано в алгоритме 2.

2.5. Декодирование по информационным совокупностям

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

— Information Set Ddecoding). Этот алгоритм (см. алгоритм 3) имеет меньшую вычислительную сложность, чем NaiveDecoder (см. алгоритм 1).

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]