SlideShare a Scribd company logo
Теория кодирования
МФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Коды, исправляющие ошибки
Основная модель канала связи:
Канал связи
(в котором могут
происходить
ошибки)
Кодер Декодер
Исходное сообщение
Закодированное сообщение
(записанное в алфавите канала)
Принятое сообщение
(возможно, с ошибками)
Декодированное сообщение
(после исправления ошибок);
должно совпасть с исходным
Типы ошибок
• Ошибки замещения: муха → мука
• Симметричные
• Несимметричные
• Ошибки стирания: муха → му?а
• Ошибки выпадения: муха → уха
• Ошибки вставки: мука → мурка
• Комбинации перечисленных типов
Типы ошибок
Всегда задаются ограничения на «ненадёжность» канала,
например:
• верхняя оценка числа ошибок на одно сообщение
(детерминированные ограничения)
• вероятность возникновения ошибки на один символ сообщения
(вероятностные ограничения)
Чаще всего алфавит канала двоичный: 0,1
Коды
Пусть 𝔸 𝑞 — алфавит канала, 𝔸 𝑞 = 𝑞.
𝑞-ичным кодом называется любое подмножество
𝐶 ⊆ 𝔸 𝑞
𝑛
𝑛 — длина кода (длина кодовых слов)
𝐶 — мощность кода (число кодовых слов)
Чаще всего рассматривают двоичные коды, т.е. когда 𝑞 = 2 и 𝔸 𝑞 = 0,1 .
Для произвольного двоичного слова 𝒂 будем через 𝒂 обозначать вес
слова, т.е. величину
# 𝑖 ∣ 𝑎𝑖 ≠ 0
Обнаружение/исправление ошибок
Пусть 𝒂 и 𝒃 — слова в алфавите канала.
Обозначим через 𝑑 𝒂, 𝒃 минимальное число ошибок, в результате
которых 𝒂 может перейти в 𝒃.
Способ кодирования позволяет обнаруживать 𝑘 ошибок, если для
любых различных кодовых сообщений 𝒂′ и 𝒂′′
при передаче в канал 𝒂′ на выходе не может получиться 𝒂′′
(если в канале произошло не более 𝑘 ошибок).
Иначе говоря, 𝑑 𝒂′, 𝒂′′ > 𝑘.
Обнаружение/исправление ошибок
Способ кодирования позволяет исправлять 𝑘 ошибок, если
при передаче в канал различных кодовых сообщений 𝒂′
и 𝒂′′
на выходе из канала будут получаться различные сообщения
(при условии, что с каждым отдельным сообщением в канале
происходит не более 𝑘 ошибок).
Формально:
∄𝒂′, 𝒂′′ ∈ 𝐶, 𝒂: 𝒂′ ≠ 𝒂′′ ∧ 𝑑 𝒂′, 𝒂 ≤ 𝑘 ∧ 𝑑 𝒂′′, 𝒂 ≤ 𝑘
Метрика
Особенно удобно, когда 𝑑 является метрикой:
• ∀𝒂, 𝒃 𝑑 𝒂, 𝒃 = 𝑑 𝒃, 𝒂
• ∀𝒂 ≠ 𝒃 𝑑 𝒂, 𝒃 > 0
• ∀𝒂 𝑑 𝒂, 𝒂 = 0
• ∀𝒂, 𝒃, 𝒄 𝑑 𝒂, 𝒃 ≤ 𝑑 𝒂, 𝒄 + 𝑑 𝒄, 𝒃
Так бывает не всегда. Например, если в канале есть только ошибки
вставки и никаких других, то при 𝒂 ≠ 𝒃 по крайней мере одна из
двух величин 𝑑 𝒂, 𝒃 , 𝑑 𝒃, 𝒂 вовсе не определена.
Метрика Хемминга
Если рассматриваются слова одной и той же длины, а в канале
возможны только ошибки типа замещения (любые), то 𝑑 𝒂, 𝒃 =
𝑑Х 𝒂, 𝒃 , где
𝑑Х 𝒂, 𝒃 ≔ # 𝑖 ∣ 𝑎𝑖 ≠ 𝑏𝑖
Функционал 𝑑Х — метрика Хемминга,
𝑑Х 𝒂, 𝒃 — расстояние Хемминга между 𝒂 и 𝒃
Метрика Левенштейна
Если в канале происходят ошибки выпадения/вставки,
то канал описывается метрикой Левенштейна:
𝑑Л 𝒂, 𝒃 ≔ min # выпадений и вставок, переводящих 𝒂 в 𝒃
Например:
• 𝑑Л «𝑎𝑏𝑎», «𝑎𝑎» = 1
• 𝑑Л «𝑎𝑏𝑏𝑎𝑏𝑎», «𝑎𝑏𝑎𝑎𝑏» = 3
Кодовое расстояние
Пусть 𝑑 ⋅,⋅ — метрика и 𝐶 — код.
Кодовым расстоянием кода 𝐶 называется величина
𝑑 𝐶 ≔ min
𝒂≠𝒃
𝒂,𝒃∈𝐶
𝑑 𝒂, 𝒃
Кодовое расстояние определяет устойчивость к ошибкам:
• 𝐶 обнаруживает 𝑡 ошибок ⇔ 𝑑 𝐶 > 𝑡
• 𝐶 исправляет 𝑡 ошибок ⇔ 𝑑 𝐶 > 2𝑡
Геометрическая интерпретация
Шар радиуса 𝑟 с центром в 𝒂 — это множество
𝑆𝑟 𝒂 ≔ 𝒃 ∣ 𝑑 𝒂, 𝒃 ≤ 𝑟
Если в канал передавалось 𝒂, то на выходе из канала может быть
любое слово 𝒃 ∈ 𝑆𝑡 𝒂 .
Значит, код обнаруживает 𝑡 ошибок т. и т.т., когда никакое кодовое
слово не попадает в шар радиуса 𝑡 с центром в другом кодовом
слове:
𝒂
𝑡
𝒃
Геометрическая интерпретация
Код исправляет 𝑡 ошибок т. и т.т., когда при передаче в канал
различных кодовых слов на выходе получаются различные слова,
то есть когда шары радиуса 𝑡 с центрами в кодовых словах не
пересекаются:
𝒂 𝒃
Основные задачи теории кодов,
исправляющих ошибки
Основная задача: строить коды, для которых
• число кодовых слов как можно больше,
• кодовое расстояние как можно больше,
• длина кодовых слов как можно меньше.
Задачи, связанные с ресурсами:
• Процессы кодирования и декодирования (исправление ошибок)
должны быть возможно менее трудоёмкими
по количеству операций и по памяти
Основные задачи теории кодов,
исправляющих ошибки
Основная задача: строить коды, для которых
• число кодовых слов как можно больше,
• кодовое расстояние как можно больше,
• длина кодовых слов как можно меньше.
Геометрически, это задача об упаковке
• возможно большего числа шаров,
• возможно большего радиуса,
• в пространстве возможно меньшей размерности.
Коды Варшамова—Тененгольца
• Пример кодов, исправляющих ошибки выпадения/вставки
• Простой алгоритм исправления ошибок
Коды Варшамова—Тененгольца
Код Варшамова—Тененгольца длины 𝑛:
𝐶 ≔ 𝑎1 𝑎2 … 𝑎 𝑛 ∣
𝑖=1
𝑛
𝑖𝑎𝑖 ≡ 0 mod 𝑛 + 1
Для мощности кода справедлива формула (без доказательства)
𝐶 = 1
2 𝑛+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.
На лекции мы рассмотрели:
• Исправление ошибок, кодовое расстояние
• Коды Варшамова—Тененгольца
• Простые границы мощностей кодов

More Related Content

PDF
Yoga nidra
PPTX
JNANA YOGA (PATH OF KNOWLEDGE)
PDF
Introduction to Yoga - A short Course
PPT
Panchkosha &amp;health
PPTX
Cyclic Meditation
PPTX
SOCIOLOGY PROJECT.pptx
PPTX
PPTX
Brugertests - gør det selv, og gør det rigtigt (Internet Week Denmark)
Yoga nidra
JNANA YOGA (PATH OF KNOWLEDGE)
Introduction to Yoga - A short Course
Panchkosha &amp;health
Cyclic Meditation
SOCIOLOGY PROJECT.pptx
Brugertests - gør det selv, og gør det rigtigt (Internet Week Denmark)

What's hot (11)

PPT
Yoga Training.ppt
PDF
Antarang yoga sadhana
PPTX
Lecture 3 The philosophical foundation of yoga.pptx
PPTX
Yoga for arthritis
PPT
Prasna upanishad
PDF
Meditation for Holistic Health - Cyclic meditation Sky is the Limit....Expans...
PPTX
Vividh angi vividh yog
PDF
Yoga question answer
PDF
Stress Management Through Yoga
PDF
Brahma sutra
Yoga Training.ppt
Antarang yoga sadhana
Lecture 3 The philosophical foundation of yoga.pptx
Yoga for arthritis
Prasna upanishad
Meditation for Holistic Health - Cyclic meditation Sky is the Limit....Expans...
Vividh angi vividh yog
Yoga question answer
Stress Management Through Yoga
Brahma sutra
Ad

Similar to Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца. (20)

PDF
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
PDF
Линейные коды
PDF
Коды на основе многочленов и алгоритмы их декодирования
PDF
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
PDF
Границы Плоткина и Элайеса—Бассалыго
PDF
Циклические коды. Граница БЧХ
PDF
Коды Адамара. Каскадные коды Форни.
PDF
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
PDF
Приложения теории кодирования
PPTX
Теорема Рамсея, оценки чисел Рамсея
PDF
Графовая модель канала связи. Шенноновская ёмкость
PPTX
Теорема Алона о нулях и её применения
PPTX
Производящие функции
PPTX
Гиперграфы. Покрытия. Жадный алгоритм.
PDF
Основы теории графов 10: экстремальная теория графов
PDF
Основы теории графов 09: раскраски планарных графов, совершенные графы
PPTX
Обращение Мёбиуса на ч.у.м.
PDF
Основы теории графов 08: раскраски и списочные раскраски
PPT
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
PPT
лабораторная работа 3
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
Линейные коды
Коды на основе многочленов и алгоритмы их декодирования
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
Границы Плоткина и Элайеса—Бассалыго
Циклические коды. Граница БЧХ
Коды Адамара. Каскадные коды Форни.
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Приложения теории кодирования
Теорема Рамсея, оценки чисел Рамсея
Графовая модель канала связи. Шенноновская ёмкость
Теорема Алона о нулях и её применения
Производящие функции
Гиперграфы. Покрытия. Жадный алгоритм.
Основы теории графов 10: экстремальная теория графов
Основы теории графов 09: раскраски планарных графов, совершенные графы
Обращение Мёбиуса на ч.у.м.
Основы теории графов 08: раскраски и списочные раскраски
651650.ppt651650.ppt651650.ppt651650.ppt651650.ppt
лабораторная работа 3
Ad

More from Alex Dainiak (16)

PDF
Основы теории графов 11: гамильтоновы циклы
PDF
Основы теории графов 07: сепараторы в планарных графах
PDF
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
PDF
Основы теории графов 05: критерии планарности графов
PDF
Основы теории графов 04: метрики на деревьях
PDF
Основы теории графов 03: связность
PDF
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
PDF
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
DOCX
Конспект лекций по теории кодирования
PPTX
Визуализация графов: left-right алгоритм распознавания планарности
PPTX
Визуализация графов: укладки деревьев
PPTX
Визуализация графов: теорема Татта о барицентрической укладке
PPTX
Визуализация графов: история
PPTX
Визуализация графов: нижние оценки и NP-трудность
PPTX
Размерность Вапника—Червоненкиса
PPTX
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Основы теории графов 11: гамильтоновы циклы
Основы теории графов 07: сепараторы в планарных графах
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 05: критерии планарности графов
Основы теории графов 04: метрики на деревьях
Основы теории графов 03: связность
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Конспект лекций по теории кодирования
Визуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: укладки деревьев
Визуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: история
Визуализация графов: нижние оценки и NP-трудность
Размерность Вапника—Червоненкиса
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...

Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.

  • 1. Теория кодирования МФТИ, осень 2013 Александр Дайняк www.dainiak.com
  • 2. Коды, исправляющие ошибки Основная модель канала связи: Канал связи (в котором могут происходить ошибки) Кодер Декодер Исходное сообщение Закодированное сообщение (записанное в алфавите канала) Принятое сообщение (возможно, с ошибками) Декодированное сообщение (после исправления ошибок); должно совпасть с исходным
  • 3. Типы ошибок • Ошибки замещения: муха → мука • Симметричные • Несимметричные • Ошибки стирания: муха → му?а • Ошибки выпадения: муха → уха • Ошибки вставки: мука → мурка • Комбинации перечисленных типов
  • 4. Типы ошибок Всегда задаются ограничения на «ненадёжность» канала, например: • верхняя оценка числа ошибок на одно сообщение (детерминированные ограничения) • вероятность возникновения ошибки на один символ сообщения (вероятностные ограничения) Чаще всего алфавит канала двоичный: 0,1
  • 5. Коды Пусть 𝔸 𝑞 — алфавит канала, 𝔸 𝑞 = 𝑞. 𝑞-ичным кодом называется любое подмножество 𝐶 ⊆ 𝔸 𝑞 𝑛 𝑛 — длина кода (длина кодовых слов) 𝐶 — мощность кода (число кодовых слов) Чаще всего рассматривают двоичные коды, т.е. когда 𝑞 = 2 и 𝔸 𝑞 = 0,1 . Для произвольного двоичного слова 𝒂 будем через 𝒂 обозначать вес слова, т.е. величину # 𝑖 ∣ 𝑎𝑖 ≠ 0
  • 6. Обнаружение/исправление ошибок Пусть 𝒂 и 𝒃 — слова в алфавите канала. Обозначим через 𝑑 𝒂, 𝒃 минимальное число ошибок, в результате которых 𝒂 может перейти в 𝒃. Способ кодирования позволяет обнаруживать 𝑘 ошибок, если для любых различных кодовых сообщений 𝒂′ и 𝒂′′ при передаче в канал 𝒂′ на выходе не может получиться 𝒂′′ (если в канале произошло не более 𝑘 ошибок). Иначе говоря, 𝑑 𝒂′, 𝒂′′ > 𝑘.
  • 7. Обнаружение/исправление ошибок Способ кодирования позволяет исправлять 𝑘 ошибок, если при передаче в канал различных кодовых сообщений 𝒂′ и 𝒂′′ на выходе из канала будут получаться различные сообщения (при условии, что с каждым отдельным сообщением в канале происходит не более 𝑘 ошибок). Формально: ∄𝒂′, 𝒂′′ ∈ 𝐶, 𝒂: 𝒂′ ≠ 𝒂′′ ∧ 𝑑 𝒂′, 𝒂 ≤ 𝑘 ∧ 𝑑 𝒂′′, 𝒂 ≤ 𝑘
  • 8. Метрика Особенно удобно, когда 𝑑 является метрикой: • ∀𝒂, 𝒃 𝑑 𝒂, 𝒃 = 𝑑 𝒃, 𝒂 • ∀𝒂 ≠ 𝒃 𝑑 𝒂, 𝒃 > 0 • ∀𝒂 𝑑 𝒂, 𝒂 = 0 • ∀𝒂, 𝒃, 𝒄 𝑑 𝒂, 𝒃 ≤ 𝑑 𝒂, 𝒄 + 𝑑 𝒄, 𝒃 Так бывает не всегда. Например, если в канале есть только ошибки вставки и никаких других, то при 𝒂 ≠ 𝒃 по крайней мере одна из двух величин 𝑑 𝒂, 𝒃 , 𝑑 𝒃, 𝒂 вовсе не определена.
  • 9. Метрика Хемминга Если рассматриваются слова одной и той же длины, а в канале возможны только ошибки типа замещения (любые), то 𝑑 𝒂, 𝒃 = 𝑑Х 𝒂, 𝒃 , где 𝑑Х 𝒂, 𝒃 ≔ # 𝑖 ∣ 𝑎𝑖 ≠ 𝑏𝑖 Функционал 𝑑Х — метрика Хемминга, 𝑑Х 𝒂, 𝒃 — расстояние Хемминга между 𝒂 и 𝒃
  • 10. Метрика Левенштейна Если в канале происходят ошибки выпадения/вставки, то канал описывается метрикой Левенштейна: 𝑑Л 𝒂, 𝒃 ≔ min # выпадений и вставок, переводящих 𝒂 в 𝒃 Например: • 𝑑Л «𝑎𝑏𝑎», «𝑎𝑎» = 1 • 𝑑Л «𝑎𝑏𝑏𝑎𝑏𝑎», «𝑎𝑏𝑎𝑎𝑏» = 3
  • 11. Кодовое расстояние Пусть 𝑑 ⋅,⋅ — метрика и 𝐶 — код. Кодовым расстоянием кода 𝐶 называется величина 𝑑 𝐶 ≔ min 𝒂≠𝒃 𝒂,𝒃∈𝐶 𝑑 𝒂, 𝒃 Кодовое расстояние определяет устойчивость к ошибкам: • 𝐶 обнаруживает 𝑡 ошибок ⇔ 𝑑 𝐶 > 𝑡 • 𝐶 исправляет 𝑡 ошибок ⇔ 𝑑 𝐶 > 2𝑡
  • 12. Геометрическая интерпретация Шар радиуса 𝑟 с центром в 𝒂 — это множество 𝑆𝑟 𝒂 ≔ 𝒃 ∣ 𝑑 𝒂, 𝒃 ≤ 𝑟 Если в канал передавалось 𝒂, то на выходе из канала может быть любое слово 𝒃 ∈ 𝑆𝑡 𝒂 . Значит, код обнаруживает 𝑡 ошибок т. и т.т., когда никакое кодовое слово не попадает в шар радиуса 𝑡 с центром в другом кодовом слове: 𝒂 𝑡 𝒃
  • 13. Геометрическая интерпретация Код исправляет 𝑡 ошибок т. и т.т., когда при передаче в канал различных кодовых слов на выходе получаются различные слова, то есть когда шары радиуса 𝑡 с центрами в кодовых словах не пересекаются: 𝒂 𝒃
  • 14. Основные задачи теории кодов, исправляющих ошибки Основная задача: строить коды, для которых • число кодовых слов как можно больше, • кодовое расстояние как можно больше, • длина кодовых слов как можно меньше. Задачи, связанные с ресурсами: • Процессы кодирования и декодирования (исправление ошибок) должны быть возможно менее трудоёмкими по количеству операций и по памяти
  • 15. Основные задачи теории кодов, исправляющих ошибки Основная задача: строить коды, для которых • число кодовых слов как можно больше, • кодовое расстояние как можно больше, • длина кодовых слов как можно меньше. Геометрически, это задача об упаковке • возможно большего числа шаров, • возможно большего радиуса, • в пространстве возможно меньшей размерности.
  • 16. Коды Варшамова—Тененгольца • Пример кодов, исправляющих ошибки выпадения/вставки • Простой алгоритм исправления ошибок
  • 17. Коды Варшамова—Тененгольца Код Варшамова—Тененгольца длины 𝑛: 𝐶 ≔ 𝑎1 𝑎2 … 𝑎 𝑛 ∣ 𝑖=1 𝑛 𝑖𝑎𝑖 ≡ 0 mod 𝑛 + 1 Для мощности кода справедлива формула (без доказательства) 𝐶 = 1 2 𝑛+1 𝑑| 𝑛+1 𝑑 нечётно 𝜙 𝑑 2 𝑛+1 𝑑 Асимптотически это максимально возможная мощность кода, исправляющего одну ошибку выпадения/вставки символа.
  • 18. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Пусть 𝐶 — код В.—Т. длины 𝑛, и пусть 𝒂 ∈ 𝐶. Пусть в канал передали 𝒂 = 𝑎1 … 𝑎 𝑛, и на выходе получили слово 𝒂′ ≔ 𝑎1 ′ … 𝑎 𝑛−1 ′ = 𝑎1 … 𝑎 𝑘−1 𝑎 𝑘+1 … 𝑎 𝑛 (символ 𝑎 𝑘 выпал). Наша задача: по 𝒂′ восстановить 𝒂.
  • 19. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Восстановить 𝒂 — не то же самое, что восстановить пару 𝑘, 𝑎 𝑘 . Например, если 𝒂′ = 1001, то 𝒂 = 10001, но мы не узнаем, какой именно из нулей выпал. Положим 𝑛0 ≔ # 𝑖 > 𝑘 𝑎𝑖 = 0 𝑛1 ≔ # 𝑖 > 𝑘 𝑎𝑖 = 1 Заметим, что если 𝑎 𝑘 = 0, то 𝒂 можно восстановить по 𝒂′ , если известно 𝑛1. Аналогично, если 𝑎 𝑘 = 1, то 𝒂 можно восстановить по 𝒂′, если известно 𝑛0.
  • 20. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Рассмотрим суммы 𝑆 ≔ 𝑖=1 𝑛 𝑖𝑎𝑖 и 𝑆′ ≔ 𝑖=1 𝑛−1 𝑖𝑎𝑖 ′ Заметим, что 𝑆 − 𝑆′ = 𝑖=1 𝑛 𝑖𝑎𝑖 − 𝑖=1 𝑘−1 𝑖𝑎𝑖 + 𝑖=𝑘 𝑛−1 𝑖𝑎𝑖+1 = 𝑖=𝑘 𝑛 𝑖𝑎𝑖 − 𝑖=𝑘+1 𝑛 𝑖 − 1 𝑎𝑖 = 𝑘𝑎 𝑘 + 𝑖=𝑘+1 𝑛 𝑎𝑖
  • 21. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Получаем 𝑆′ = 𝑆 − 𝑘𝑎 𝑘 + 𝑖=𝑘+1 𝑛 𝑎𝑖 = 𝑆 − 𝑘𝑎 𝑘 − 𝑛1 Так как 𝑆 ≡ 0 mod 𝑛 + 1 , то 𝑆′ ≡ −𝑛1 − 𝑘𝑎 𝑘 mod 𝑛 + 1 Если 𝑎 𝑘 = 0, то −𝑆′ ≡ 𝑛1. Если 𝑎 𝑘 = 1, то −𝑆′ ≡ 𝑛1 + 𝑘 = 𝑛 − 𝑘 − 𝑛0 + 𝑘 = 𝑛 − 𝑛0
  • 22. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Итак, • если 𝑎 𝑘 = 0, то −𝑆′ mod 𝑛 + 1 = 𝑛1, • если 𝑎 𝑘 = 1, то −𝑆′ mod 𝑛 + 1 = 𝑛 − 𝑛0. Осталось определить, чему равно 𝑎 𝑘. Заметим, что 𝒂′ ≥ 𝑛1, 𝒂′ ≤ 𝑛 − 1 − 𝑛0 Отсюда 𝑛1 ≤ 𝒂′ < 𝑛 − 𝑛0. То есть, если −𝑆′ mod 𝑛 + 1 ≤ 𝒂′ , то это 𝑛1, а в противном случае это 𝑛 − 𝑛0.
  • 23. Коды Варшамова—Тененгольца: исправление одной ошибки выпадения Итоговый алгоритм восстановления 𝒂 по 𝒂′: • Вычисляем величину 𝑇 ≔ − 𝑖=1 𝑛−1 𝑖𝑎𝑖 ′ mod 𝑛 + 1 • Если 𝑇 ≤ 𝒂′ , то в слово 𝒂′ вставляем перед 𝑇-й с конца единицей символ 0. • Если 𝑇 > 𝒂′ , то в слово 𝒂′ вставляем перед 𝑛 − 𝑇 -м с конца нулём символ 1.
  • 24. Коды Варшамова—Тененгольца: исправление одной ошибки вставки Теперь рассмотрим задачу, когда 𝒂′ получено из 𝒂 вставкой символа: 𝒂′ = … 𝑎 𝑘 𝑥𝑎 𝑘+1 … (Если 𝑘 = 0, то 𝒂′ = 𝑥𝒂; если 𝑘 = 𝑛, то 𝒂′ = 𝒂𝑥) Тогда 𝑆′ = 𝑆 + 𝑘 + 1 𝑥 + 𝑖>𝑘 𝑎𝑖, и значит 𝑆′ ≡ 𝑘 + 1 𝑥 + 𝑖>𝑘 𝑎𝑖 = 𝑘 + 1 𝑥 + 𝑛1 Положим 𝑇 ≔ 𝑆′ mod 𝑛 + 1 .
  • 25. Коды Варшамова—Тененгольца: исправление одной ошибки вставки 𝒂′ = … 𝑎 𝑘 𝑥𝑎 𝑘+1 … 𝑆′ ≡ 𝑘 + 1 𝑥 + 𝑛1 Положим 𝑇 ≔ 𝑆′ mod 𝑛 + 1 . Есть два случая, когда 𝑇 = 0: • 𝑘 + 1 𝑥 + 𝑛1 = 0. Тогда 𝑥 = 0 и 𝑎 𝑘+1 = ⋯ = 𝑎 𝑛 = 0. • 𝑘 + 1 𝑥 + 𝑛1 = 𝑛 + 1. Тогда 𝑥 = 1 и 𝑎 𝑘+1 = ⋯ = 𝑎 𝑛 = 1. В обоих случаях 𝒂 получается из 𝒂′ удалением последнего символа.
  • 26. Коды Варшамова—Тененгольца: исправление одной ошибки вставки 𝒂′ = … 𝑎 𝑘 𝑥𝑎 𝑘+1 … 𝑇 ≡ 𝑘 + 1 𝑥 + 𝑛1 Теперь рассмотрим случай, когда 𝑇 = 𝒂′ > 0. Это возможно только в одном из двух случаев: • 𝑎1 = ⋯ = 𝑎 𝑘 = 𝑥 = 0 • 𝑎1 = ⋯ = 𝑎 𝑘 = 𝑥 = 1 В любом случае, если 𝑇 = 𝒂′ , то 𝒂 получается из 𝒂′ удалением первого символа.
  • 27. Коды Варшамова—Тененгольца: исправление одной ошибки вставки 𝒂′ = … 𝑎 𝑘 𝑥𝑎 𝑘+1 … 𝑇 ≡ 𝑘 + 1 𝑥 + 𝑛1 Остался случай 0 < 𝑇 ≠ 𝒂′ . • Если 𝑥 = 0, то 𝑇 = 𝑛1 < 𝒂′ . • Если 𝑥 = 1, то 𝑇 = 𝑘 + 1 + 𝑛1 > 𝒂′ . При этом оказывается, что 𝑇 = 𝑘 + 1 + 𝑛 − 𝑘 − 𝑛0 = 𝑛 + 1 − 𝑛0. В обоих случаях нужная для восстановления 𝒂 информация у нас есть.
  • 28. Коды Варшамова—Тененгольца Возможные обобщения кодов В.—Т.: • Произвольный фиксированный модуль 𝑙 > 𝑛: 𝑎1 𝑎2 … 𝑎 𝑛 ∣ 𝑖=1 𝑛 𝑖𝑎𝑖 ≡ 0 mod 𝑙 • Дополнительные соотношения, например: 𝑎1 𝑎2 … 𝑎 𝑛 ∣ 𝑖=1 𝑛 𝑖𝑎𝑖 ≡ 𝑖=1 𝑛 𝑖2 𝑎𝑖 ≡ 0 mod 𝑙
  • 29. Ошибки замещения • Односторонние ошибки. Например, если в двоичном канале возможны только замещения вида 0 → 1 или только 1 → 0. Канал связи в этом случае называется несимметричным. • Двусторонние (симметричные) ошибки. Если возможно замещение символов 𝑏1 → 𝑏2, то возможно и замещение 𝑏2 → 𝑏1. • Канал связи, в котором ошибки только симметричные, называется симметричным.
  • 30. Ошибки замещения Коды Варшамова—Тененгольца могут исправлять единичные односторонние ошибки замещения: • Если 𝒂′ получается из 𝒂 замещением 𝑖-го символа с 0 на 1, то 𝑆′ ≡ 𝑖 mod 𝑛 + 1 • Если 𝒂′ получается из 𝒂 замещением 𝑖-го символа с 1 на 0, то 𝑆′ ≡ −𝑖 mod 𝑛 + 1 (Исправлять оба типа ошибок одновременно коды Варшамова— Тененгольца не могут.)
  • 31. Обозначение кодов Далее будем изучать коды, исправляющие ошибки замещения, значит, метрика по умолчанию — метрика Хемминга. Обозначение кода с заданными параметрами Если 𝐶 — 𝑞-ичный код с длиной слов 𝑛, числом слов 𝑀 и кодовым расстоянием 𝑑, то пишут: «𝐶 является 𝑛, 𝑀, 𝑑 𝑞-кодом» Если код двоичный, то символ 𝑞 не указывают.
  • 32. Граница сферической упаковки Теорема. (Граница Хемминга (R.W. Hamming), граница сферической упаковки) Для любого 𝑛, 𝑀, 𝑑 𝑞-кода имеем 𝑀 ≤ 𝑞 𝑛 𝑆 𝑑−1 2 𝟎 В двоичном случае 𝑀 ≤ 2 𝑛 𝑘=0 𝑑−1 2 𝑛 𝑘 Коды, достигающие эту границу, называются совершенными или плотно упакованными.
  • 33. Граница сферической упаковки Доказательство теоремы: Пусть 𝐶 = 𝒂1, 𝒂2, … , 𝒂 𝑀 — 𝑛, 𝑀, 𝑑 𝑞-код. Так как 𝑑 𝐶 = 𝑑, то шары радиуса 𝑑 − 1 2 с центрами в кодовых словах не пересекаются: 𝔸 𝑞 𝑛𝒂1 𝒂2 𝒂 𝑀 ⋯ Отсюда 𝑞 𝑛 ≥ 𝑗=1 𝑀 𝑆 𝑑−1 2 𝒂𝑗 = 𝑀 ⋅ 𝑆 𝑑−1 2 𝟎
  • 34. «Анти-Хемминг» Теорема. (В некотором смысле, обратная границе Хемминга) Пусть числа 𝑞, 𝑛, 𝑀, 𝑑 ∈ ℕ таковы, что 𝑀 ≤ 𝑞 𝑛 𝑆 𝑑 𝟎 . Тогда существует 𝑛, 𝑀, 𝑑 𝑞-код.
  • 35. «Анти-Хемминг» Доказательство теоремы: Пусть 𝐶 = 𝒂1, … , 𝒂 𝐶 — код максимальной мощности с кодовым расстоянием 𝑑 и длиной слов 𝑛. Тогда шары радиуса 𝑑 с центрами в кодовых словах покрывают целиком множество 𝔸 𝑞 𝑛 (иначе код 𝐶 можно было пополнить любым из слов, не лежащих ни в одном из этих шаров). Отсюда 𝑗=1 𝐶 𝑆 𝑑 𝒂𝑗 ≥ 𝑞 𝑛, следовательно 𝐶 ≥ 𝑀. 𝒂1 𝒂2 𝒂 𝐶 ⋯ 𝒂3
  • 36. Граница Синглтона Теорема. (R.C. Singleton) Для любого 𝑛, 𝑀, 𝑑 𝑞-кода имеем 𝐶 ≤ 𝑞 𝑛−𝑑+1 Коды, на которых достигается граница Синглтона, называются MDS- кодами (maximum distance separable codes).
  • 37. Граница Синглтона Доказательство: Пусть 𝐶 = 𝒂1, … , 𝒂 𝑀 — 𝑛, 𝑀, 𝑑 𝑞-код. Рассмотрим слова 𝒂𝑖 ′ 𝑖=1 𝑀 , где 𝒂𝑖 ′ получено из 𝒂𝑖 отбрасыванием 𝑑 − 1 последних координат. Так как 𝑑 𝒂𝑖, 𝒂𝑗 ≥ 𝑑 для любых 𝑖, 𝑗, то все слова 𝒂𝑖 ′ различны. Их количество не превосходит числа всех 𝑞-ичных слов длины 𝑛 − 𝑑 + 1 . Поэтому и 𝑀 ≤ 𝑞 𝑛−𝑑+1.
  • 38. На лекции мы рассмотрели: • Исправление ошибок, кодовое расстояние • Коды Варшамова—Тененгольца • Простые границы мощностей кодов