Upload
alex-dainiak
View
903
Download
19
Embed Size (px)
DESCRIPTION
Задача исправления и обнаружения ошибок. Геометрическая интерпретация. Типы ошибок. Метрики Хемминга и Левенштейна. Кодовое расстояние. Основные задачи теории кодов, исправляющих ошибки. Коды Варшамова—Тененгольца, алгоритмы исправления одиночных ошибок выпадения и вставки символов. Простейшие границы для параметров кодов, исправляющих ошибки замещения: границы сферической упаковки, Синглтона.
Citation preview
Теория кодированияМФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Коды, исправляющие ошибки
Основная модель канала связи:
Канал связи(в котором могут
происходить ошибки)
Кодер Декодер
Исходное сообщение
Закодированное сообщение(записанное в алфавите канала)
Принятое сообщение(возможно, с ошибками)
Декодированное сообщение(после исправления ошибок);должно совпасть с исходным
Типы ошибок
• Ошибки замещения: муха → мука• Симметричные
• Несимметричные
• Ошибки стирания: муха → му?а
• Ошибки выпадения: муха → уха
• Ошибки вставки: мука → мурка
• Комбинации перечисленных типов
Типы ошибок
Всегда задаются ограничения на «ненадёжность» канала, например:
• верхняя оценка числа ошибок на одно сообщение(детерминированные ограничения)
• вероятность возникновения ошибки на один символ сообщения(вероятностные ограничения)
Чаще всего алфавит канала двоичный: 0,1
Коды
Пусть 𝔸𝑞 — алфавит канала, 𝔸𝑞 = 𝑞.
𝑞-ичным кодом называется любое подмножество 𝐶 ⊆ 𝔸𝑞
𝑛
𝑛 — длина кода (длина кодовых слов)
𝐶 — мощность кода (число кодовых слов)
Чаще всего рассматривают двоичные коды, т.е. когда 𝑞 = 2 и 𝔸𝑞 = 0,1 .
Для произвольного двоичного слова 𝒂 будем через 𝒂 обозначать вес слова, т.е. величину
# 𝑖 ∣ 𝑎𝑖 ≠ 0
Обнаружение/исправление ошибок
Пусть 𝒂 и 𝒃 — слова в алфавите канала.
Обозначим через 𝑑 𝒂, 𝒃 минимальное число ошибок, в результате которых 𝒂 может перейти в 𝒃.
Способ кодирования позволяет обнаруживать 𝑘 ошибок, если для любых различных кодовых сообщений 𝒂′ и 𝒂′′
при передаче в канал 𝒂′ на выходе не может получиться 𝒂′′
(если в канале произошло не более 𝑘 ошибок).
Иначе говоря, 𝑑 𝒂′, 𝒂′′ > 𝑘.
Обнаружение/исправление ошибок
Способ кодирования позволяет исправлять 𝑘 ошибок, если при передаче в канал различных кодовых сообщений 𝒂′ и 𝒂′′
на выходе из канала будут получаться различные сообщения (при условии, что с каждым отдельным сообщением в канале происходит не более 𝑘 ошибок).
Формально:∄𝒂′, 𝒂′′ ∈ 𝐶, 𝒂: 𝒂′ ≠ 𝒂′′ ∧ 𝑑 𝒂′, 𝒂 ≤ 𝑘 ∧ 𝑑 𝒂′′, 𝒂 ≤ 𝑘
Метрика
Особенно удобно, когда 𝑑 является метрикой:
• ∀𝒂, 𝒃 𝑑 𝒂, 𝒃 = 𝑑 𝒃, 𝒂
• ∀𝒂 ≠ 𝒃 𝑑 𝒂, 𝒃 > 0
• ∀𝒂 𝑑 𝒂, 𝒂 = 0
• ∀𝒂, 𝒃, 𝒄 𝑑 𝒂, 𝒃 ≤ 𝑑 𝒂, 𝒄 + 𝑑 𝒄, 𝒃
Так бывает не всегда. Например, если в канале есть только ошибки вставки и никаких других, то при 𝒂 ≠ 𝒃 по крайней мере одна из двух величин 𝑑 𝒂, 𝒃 , 𝑑 𝒃, 𝒂 вовсе не определена.
Метрика Хемминга
Если рассматриваются слова одной и той же длины, а в каналевозможны только ошибки типа замещения (любые), то 𝑑 𝒂, 𝒃 =𝑑Х 𝒂, 𝒃 , где
𝑑Х 𝒂, 𝒃 ≔ # 𝑖 ∣ 𝑎𝑖 ≠ 𝑏𝑖
Функционал 𝑑Х — метрика Хемминга,
𝑑Х 𝒂, 𝒃 — расстояние Хемминга между 𝒂 и 𝒃
Метрика Левенштейна
Если в канале происходят ошибки выпадения/вставки, то канал описывается метрикой Левенштейна:
𝑑Л 𝒂, 𝒃 ≔ min # выпадений и вставок, переводящих 𝒂 в 𝒃
Например:
• 𝑑Л «𝑎𝑏𝑎», «𝑎𝑎» = 1
• 𝑑Л «𝑎𝑏𝑏𝑎𝑏𝑎», «𝑎𝑏𝑎𝑎𝑏» = 3
Кодовое расстояние
Пусть 𝑑 ⋅,⋅ — метрика и 𝐶 — код.
Кодовым расстоянием кода 𝐶 называется величина 𝑑 𝐶 ≔ min
𝒂≠𝒃𝒂,𝒃∈𝐶
𝑑 𝒂, 𝒃
Кодовое расстояние определяет устойчивость к ошибкам:
• 𝐶 обнаруживает 𝑡 ошибок ⇔ 𝑑 𝐶 > 𝑡
• 𝐶 исправляет 𝑡 ошибок ⇔ 𝑑 𝐶 > 2𝑡
Геометрическая интерпретация
Шар радиуса 𝑟 с центром в 𝒂 — это множество𝑆𝑟 𝒂 ≔ 𝒃 ∣ 𝑑 𝒂, 𝒃 ≤ 𝑟
Если в канал передавалось 𝒂, то на выходе из канала может быть любое слово 𝒃 ∈ 𝑆𝑡 𝒂 .
Значит, код обнаруживает 𝑡 ошибок т. и т.т., когда никакое кодовое слово не попадает в шар радиуса 𝑡 с центром в другом кодовом слове:
𝒂
𝑡
𝒃
Геометрическая интерпретация
Код исправляет 𝑡 ошибок т. и т.т., когда при передаче в канал различных кодовых слов на выходе получаются различные слова,
то есть когда шары радиуса 𝑡 с центрами в кодовых словах не пересекаются:
𝒂 𝒃
Основные задачи теории кодов, исправляющих ошибкиОсновная задача: строить коды, для которых
• число кодовых слов как можно больше,
• кодовое расстояние как можно больше,
• длина кодовых слов как можно меньше.
Задачи, связанные с ресурсами:
• Процессы кодирования и декодирования (исправление ошибок) должны быть возможно менее трудоёмкими по количеству операций и по памяти
Основные задачи теории кодов, исправляющих ошибкиОсновная задача: строить коды, для которых
• число кодовых слов как можно больше,
• кодовое расстояние как можно больше,
• длина кодовых слов как можно меньше.
Геометрически, это задача об упаковке
• возможно большего числа шаров,
• возможно большего радиуса,
• в пространстве возможно меньшей размерности.
Коды Варшамова—Тененгольца
• Пример кодов, исправляющих ошибки выпадения/вставки
• Простой алгоритм исправления ошибок
Коды Варшамова—Тененгольца
Код Варшамова—Тененгольца длины 𝑛:
𝐶 ≔ 𝑎1𝑎2 … 𝑎𝑛 ∣
𝑖=1
𝑛
𝑖𝑎𝑖 ≡ 0 mod 𝑛 + 1
Для мощности кода справедлива формула (без доказательства)
𝐶 = 12 𝑛+1
𝑑| 𝑛+1𝑑 нечётно
𝜙 𝑑 2 𝑛+1 𝑑
Асимптотически это максимально возможная мощность кода, исправляющего одну ошибку выпадения/вставки символа.
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Пусть 𝐶 — код В.—Т. длины 𝑛, и пусть 𝒂 ∈ 𝐶.
Пусть в канал передали 𝒂 = 𝑎1 … 𝑎𝑛, и на выходе получили слово 𝒂′ ≔ 𝑎1
′ … 𝑎𝑛−1′ = 𝑎1 … 𝑎𝑘−1𝑎𝑘+1 … 𝑎𝑛
(символ 𝑎𝑘 выпал).
Наша задача: по 𝒂′ восстановить 𝒂.
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Восстановить 𝒂 — не то же самое, что восстановить пару 𝑘, 𝑎𝑘 .
Например, если 𝒂′ = 1001, то 𝒂 = 10001, но мы не узнаем, какой именно из нулей выпал.
Положим𝑛0 ≔ # 𝑖 > 𝑘 𝑎𝑖 = 0𝑛1 ≔ # 𝑖 > 𝑘 𝑎𝑖 = 1
Заметим, что если 𝑎𝑘 = 0, то 𝒂 можно восстановить по 𝒂′, если известно 𝑛1.
Аналогично, если 𝑎𝑘 = 1, то 𝒂 можно восстановить по 𝒂′, если известно 𝑛0.
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Рассмотрим суммы
𝑆 ≔
𝑖=1
𝑛
𝑖𝑎𝑖 и 𝑆′ ≔
𝑖=1
𝑛−1
𝑖𝑎𝑖′
Заметим, что
𝑆 − 𝑆′ =
𝑖=1
𝑛
𝑖𝑎𝑖 −
𝑖=1
𝑘−1
𝑖𝑎𝑖 +
𝑖=𝑘
𝑛−1
𝑖𝑎𝑖+1 =
𝑖=𝑘
𝑛
𝑖𝑎𝑖 −
𝑖=𝑘+1
𝑛
𝑖 − 1 𝑎𝑖
= 𝑘𝑎𝑘 +
𝑖=𝑘+1
𝑛
𝑎𝑖
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Получаем
𝑆′ = 𝑆 − 𝑘𝑎𝑘 +
𝑖=𝑘+1
𝑛
𝑎𝑖 = 𝑆 − 𝑘𝑎𝑘 − 𝑛1
Так как 𝑆 ≡ 0 mod 𝑛 + 1 , то 𝑆′ ≡ −𝑛1 − 𝑘𝑎𝑘 mod 𝑛 + 1
Если 𝑎𝑘 = 0, то −𝑆′ ≡ 𝑛1.
Если 𝑎𝑘 = 1, то −𝑆′ ≡ 𝑛1 + 𝑘 = 𝑛 − 𝑘 − 𝑛0 + 𝑘 = 𝑛 − 𝑛0
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Итак,
• если 𝑎𝑘 = 0, то −𝑆′ mod 𝑛 + 1 = 𝑛1,
• если 𝑎𝑘 = 1, то −𝑆′ mod 𝑛 + 1 = 𝑛 − 𝑛0.
Осталось определить, чему равно 𝑎𝑘.
Заметим, что 𝒂′ ≥ 𝑛1,𝒂′ ≤ 𝑛 − 1 − 𝑛0
Отсюда 𝑛1 ≤ 𝒂′ < 𝑛 − 𝑛0.
То есть, если −𝑆′ mod 𝑛 + 1 ≤ 𝒂′ , то это 𝑛1, а в противном случае это 𝑛 − 𝑛0.
Коды Варшамова—Тененгольца: исправление одной ошибки выпадения
Итоговый алгоритм восстановления 𝒂 по 𝒂′:
• Вычисляем величину
𝑇 ≔ −
𝑖=1
𝑛−1
𝑖𝑎𝑖′ mod 𝑛 + 1
• Если 𝑇 ≤ 𝒂′ , то в слово 𝒂′ вставляем перед 𝑇-й с конца единицей символ 0.
• Если 𝑇 > 𝒂′ , то в слово 𝒂′ вставляем перед 𝑛 − 𝑇 -м с конца нулём символ 1.
Коды Варшамова—Тененгольца: исправление одной ошибки вставки
Теперь рассмотрим задачу, когда 𝒂′ получено из 𝒂 вставкой символа:
𝒂′ = … 𝑎𝑘 𝑥𝑎𝑘+1 …
(Если 𝑘 = 0, то 𝒂′ = 𝑥𝒂; если 𝑘 = 𝑛, то 𝒂′ = 𝒂𝑥)
Тогда 𝑆′ = 𝑆 + 𝑘 + 1 𝑥 + 𝑖>𝑘 𝑎𝑖, и значит
𝑆′ ≡ 𝑘 + 1 𝑥 +
𝑖>𝑘
𝑎𝑖 = 𝑘 + 1 𝑥 + 𝑛1
Положим 𝑇 ≔ 𝑆′ mod 𝑛 + 1 .
Коды Варшамова—Тененгольца: исправление одной ошибки вставки
𝒂′ = … 𝑎𝑘 𝑥𝑎𝑘+1 …𝑆′ ≡ 𝑘 + 1 𝑥 + 𝑛1
Положим 𝑇 ≔ 𝑆′ mod 𝑛 + 1 .
Есть два случая, когда 𝑇 = 0:
• 𝑘 + 1 𝑥 + 𝑛1 = 0. Тогда 𝑥 = 0 и 𝑎𝑘+1 = ⋯ = 𝑎𝑛 = 0.
• 𝑘 + 1 𝑥 + 𝑛1 = 𝑛 + 1. Тогда 𝑥 = 1 и 𝑎𝑘+1 = ⋯ = 𝑎𝑛 = 1.
В обоих случаях 𝒂 получается из 𝒂′ удалением последнего символа.
Коды Варшамова—Тененгольца: исправление одной ошибки вставки
𝒂′ = … 𝑎𝑘 𝑥𝑎𝑘+1 …𝑇 ≡ 𝑘 + 1 𝑥 + 𝑛1
Теперь рассмотрим случай, когда 𝑇 = 𝒂′ > 0.
Это возможно только в одном из двух случаев:
• 𝑎1 = ⋯ = 𝑎𝑘 = 𝑥 = 0
• 𝑎1 = ⋯ = 𝑎𝑘 = 𝑥 = 1
В любом случае, если 𝑇 = 𝒂′ , то 𝒂 получается из 𝒂′ удалением первого символа.
Коды Варшамова—Тененгольца: исправление одной ошибки вставки
𝒂′ = … 𝑎𝑘 𝑥𝑎𝑘+1 …𝑇 ≡ 𝑘 + 1 𝑥 + 𝑛1
Остался случай 0 < 𝑇 ≠ 𝒂′ .
• Если 𝑥 = 0, то 𝑇 = 𝑛1 < 𝒂′ .
• Если 𝑥 = 1, то 𝑇 = 𝑘 + 1 + 𝑛1 > 𝒂′ . При этом оказывается, что
𝑇 = 𝑘 + 1 + 𝑛 − 𝑘 − 𝑛0 = 𝑛 + 1 − 𝑛0.
В обоих случаях нужная для восстановления 𝒂 информация у нас есть.
Коды Варшамова—Тененгольца
Возможные обобщения кодов В.—Т.:
• Произвольный фиксированный модуль 𝑙 > 𝑛:
𝑎1𝑎2 …𝑎𝑛 ∣ 𝑖=1𝑛 𝑖𝑎𝑖 ≡ 0 mod 𝑙
• Дополнительные соотношения, например:
𝑎1𝑎2 …𝑎𝑛 ∣ 𝑖=1𝑛 𝑖𝑎𝑖 ≡ 𝑖=1
𝑛 𝑖2𝑎𝑖 ≡ 0 mod 𝑙
Ошибки замещения
• Односторонние ошибки. Например, если в двоичном канале возможны только замещения вида 0 → 1 или только 1 → 0.Канал связи в этом случае называется несимметричным.
• Двусторонние (симметричные) ошибки. Если возможно замещение символов 𝑏1 → 𝑏2, то возможно и замещение 𝑏2 → 𝑏1.
• Канал связи, в котором ошибки только симметричные, называется симметричным.
Ошибки замещения
Коды Варшамова—Тененгольца могут исправлять единичные односторонние ошибки замещения:
• Если 𝒂′ получается из 𝒂 замещением 𝑖-го символа с 0 на 1, то 𝑆′ ≡ 𝑖 mod 𝑛 + 1
• Если 𝒂′ получается из 𝒂 замещением 𝑖-го символа с 1 на 0, то 𝑆′ ≡ −𝑖 mod 𝑛 + 1
(Исправлять оба типа ошибок одновременно коды Варшамова—Тененгольца не могут.)
Обозначение кодов
Далее будем изучать коды, исправляющие ошибки замещения, значит, метрика по умолчанию — метрика Хемминга.
Обозначение кода с заданными параметрами
Если 𝐶 — 𝑞-ичный код с длиной слов 𝑛, числом слов 𝑀 и кодовым расстоянием 𝑑, то пишут:
«𝐶 является 𝑛, 𝑀, 𝑑 𝑞-кодом»
Если код двоичный, то символ 𝑞 не указывают.
Граница сферической упаковки
Теорема. (Граница Хемминга (R.W. Hamming), граница сферической упаковки)Для любого 𝑛, 𝑀, 𝑑 𝑞-кода имеем
𝑀 ≤𝑞𝑛
𝑆 𝑑−1 2 𝟎
В двоичном случае
𝑀 ≤2𝑛
𝑘=0
𝑑−1 2 𝑛𝑘
Коды, достигающие эту границу, называются совершенными или плотно упакованными.
Граница сферической упаковки
Доказательство теоремы:Пусть 𝐶 = 𝒂1, 𝒂2, … , 𝒂𝑀 — 𝑛, 𝑀, 𝑑 𝑞-код.
Так как 𝑑 𝐶 = 𝑑, то шары радиуса 𝑑 − 1 2 с центрами в кодовых словах не пересекаются:
𝔸𝑞𝑛𝒂1
𝒂2
𝒂𝑀⋯
Отсюда 𝑞𝑛 ≥ 𝑗=1𝑀 𝑆 𝑑−1 2 𝒂𝑗 = 𝑀 ⋅ 𝑆 𝑑−1 2 𝟎
«Анти-Хемминг»
Теорема. (В некотором смысле, обратная границе Хемминга)Пусть числа 𝑞, 𝑛, 𝑀, 𝑑 ∈ ℕ таковы, что
𝑀 ≤𝑞𝑛
𝑆𝑑 𝟎.
Тогда существует 𝑛, 𝑀, 𝑑 𝑞-код.
«Анти-Хемминг»
Доказательство теоремы:Пусть 𝐶 = 𝒂1, … , 𝒂 𝐶 — код максимальной мощности с кодовым расстоянием 𝑑 и длиной слов 𝑛.
Тогда шары радиуса 𝑑 с центрами в кодовых словах покрывают целиком множество 𝔸𝑞
𝑛 (иначе код 𝐶 можно было пополнить любым из слов, не лежащих ни в одном из этих шаров).
Отсюда 𝑗=1𝐶 𝑆𝑑 𝒂𝑗 ≥ 𝑞𝑛,
следовательно 𝐶 ≥ 𝑀.𝒂1
𝒂2
𝒂 𝐶
⋯𝒂3
Граница Синглтона
Теорема. (R.C. Singleton)Для любого 𝑛, 𝑀, 𝑑 𝑞-кода имеем
𝐶 ≤ 𝑞𝑛−𝑑+1
Коды, на которых достигается граница Синглтона, называются MDS-кодами (maximum distance separable codes).
Граница Синглтона
Доказательство:
Пусть 𝐶 = 𝒂1, … , 𝒂𝑀 — 𝑛, 𝑀, 𝑑 𝑞-код.
Рассмотрим слова 𝒂𝑖′
𝑖=1𝑀 , где 𝒂𝑖
′ получено из 𝒂𝑖 отбрасыванием𝑑 − 1 последних координат.
Так как 𝑑 𝒂𝑖 , 𝒂𝑗 ≥ 𝑑 для любых 𝑖, 𝑗, то все слова 𝒂𝑖′ различны. Их
количество не превосходит числа всех 𝑞-ичных слов длины 𝑛 − 𝑑 + 1 .
Поэтому и 𝑀 ≤ 𝑞𝑛−𝑑+1.
На лекции мы рассмотрели:
• Исправление ошибок, кодовое расстояние
• Коды Варшамова—Тененгольца
• Простые границы мощностей кодов