Участник:Feorge — различия между версиями
Feorge (обсуждение | вклад) (Добавлено неравенство Гильберта) |
Feorge (обсуждение | вклад) м (Небольшой фикс) |
||
Строка 5: | Строка 5: | ||
|definition= | |definition= | ||
Рассмотрим <tex> B^n </tex>. | Рассмотрим <tex> B^n </tex>. | ||
− | + | В <tex>B^n</tex> булевым шаром радиуса <tex> r </tex> с центром в <tex> x </tex> называется множество <tex> S(x,r) = \{ y : H(x,y) \leqslant r\} </tex>, где <tex>H(x,y)</tex> — расстояние Хемминга между <tex>x</tex> и <tex>y</tex>. | |
}} | }} | ||
Строка 11: | Строка 11: | ||
|neat = 1 | |neat = 1 | ||
|definition= | |definition= | ||
− | Обьёмом шара <tex>S(x,r)</tex> в <tex>B^n</tex> называется его | + | Обьёмом шара <tex>S(x,r)</tex> в <tex>B^n</tex> называется его размер <tex>|S(x,r)|</tex> и обозначается <tex>V(n,r)</tex>. |
}} | }} | ||
Строка 25: | Строка 25: | ||
}} | }} | ||
− | Можно переформулировать свойство кодов, исправляющих <tex>k</tex>, | + | Можно переформулировать свойство кодов, исправляющих <tex>k</tex> ошибок, в терминах булевых шаров. |
{{Лемма | {{Лемма | ||
|id=boolean_balls_coding | |id=boolean_balls_coding | ||
Строка 44: | Строка 44: | ||
Прологарифмировав неравнество, получим <tex>\frac{\log(m)}{n} \leqslant 1 - \frac{V(n, k)}{n}</tex>. | Прологарифмировав неравнество, получим <tex>\frac{\log(m)}{n} \leqslant 1 - \frac{V(n, k)}{n}</tex>. | ||
Здесь <tex>\frac{\log(m)}{n}</tex> это плотность кодирования, количество информации в одном символе алфавита на размер кода. | Здесь <tex>\frac{\log(m)}{n}</tex> это плотность кодирования, количество информации в одном символе алфавита на размер кода. | ||
− | Таким образом при кодировании с защитой от ошибок падает скорость передачи. | + | Таким образом, при кодировании с защитой от ошибок падает скорость передачи. |
Аналогично составляется оценка в другую сторону. | Аналогично составляется оценка в другую сторону. | ||
− | |||
{{Теорема | {{Теорема | ||
|about=Граница Гильберта | |about=Граница Гильберта | ||
|statement= | |statement= | ||
− | Если выполнено неравенство <tex> mV(n,2k) \leqslant 2^n</tex>, то существует код | + | Если выполнено неравенство <tex> mV(n,2k) \leqslant 2^n</tex>, то существует код <tex>c:\Sigma \to B^n</tex> для <tex>m</tex>-символьного алфавита <tex>\Sigma </tex>, исправляющий <tex>k</tex> ошибок. |
|proof= | |proof= | ||
Построим этот код жадным алгоритмом. | Построим этот код жадным алгоритмом. |
Версия 01:20, 26 июня 2021
Граница Хемминга
Для составления оценок снизу и сверху на параметры кодирования нам понадобится понятие шара.
Определение:
Рассмотрим
.
В булевым шаром радиуса с центром в называется множество , где — расстояние Хемминга между и .
Определение:
Обьёмом шара
в называется его размер и обозначается .
Утверждение: |
Обьём шара не зависит от его центра. |
Заметим, что шар всегда можно получить из другого шара с помощью "параллельного переноса" на вектор , т.е. . Покажем это. Необходимо доказать, что при и . . |
Можно переформулировать свойство кодов, исправляющих
ошибок, в терминах булевых шаров.Лемма: |
Пусть — код, исправляющий ошибок.
Тогда для любых неравных выполнено . |
Теорема (Граница Хемминга): |
Пусть — код для -символьного алфавита, исправляющий ошибок.
Тогда выполнено неравенство . |
Доказательство: |
Это прямое следствие предыдущей леммы. Всего есть попарно непересекающихся шаров. Их суммарный обьём равен , и он не может превосходить общее число возможных веткоров . |
Граница Хемминга даёт верхнюю оценку на скорость передачи сообщений в канале с ошибками. Прологарифмировав неравнество, получим
. Здесь это плотность кодирования, количество информации в одном символе алфавита на размер кода. Таким образом, при кодировании с защитой от ошибок падает скорость передачи.Аналогично составляется оценка в другую сторону.
Теорема (Граница Гильберта): |
Если выполнено неравенство , то существует код для -символьного алфавита , исправляющий ошибок. |
Доказательство: |
Построим этот код жадным алгоритмом. Сопоставим первому символу Неравенство гарантирует нам, что на каждому символу мы сможем выбрать кодовое слово, чей шар радиуса из в кодовое слово и вырежем из B^n шар . Для второго символа повторим ту же процедуру, выберем ему кодовое слово . На каждом шаге будем выбирать для каждого символа по слову . не пересекается с шарами всех остальных слов (как того требует исправление ошибок), а значит мы можем построить искомый код. |