Могущество кодов Рида-Соломона, или Информация, воскресшая из пепла



Download 0,54 Mb.
Pdf ko'rish
bet2/4
Sana21.02.2022
Hajmi0,54 Mb.
#69928
1   2   3   4
Bog'liq
kris-kaspersky

№8(9), август 2003
образование
чудовищно) возрастет. Остается только выбрать наиболее
оптимальное разделение сфер влияния.
Согласно методу помехозащитного кодирования, предло-
женного Хеммингом, для того чтобы определить, какие конт-
рольные биты контролируют информационный бит, стоящий
в позиции k, мы должны разложить k по степеням двойки:
Давайте в порядке закрепления материала попробу-
ем пощупать коды Хемминга «вживую» и вручную рас-
считаем контрольную сумму 4-битного символа «0101».
После резервирования «квартир» для контрольных битов
(выделенных в тексте жирным шрифтом) наш символ бу-
дет выглядеть так: AB0C101D. Теперь остается только рас-
считать значения битов A, B, C и D:

Бит A, контролирующий биты 3, 5 и 7 равен нулю, т.к.
их сумма (0 + 1 + 1) четна.

Бит B, контролирующий биты 3, 6 и 7 равен одному,
т.к. их сумма (0 + 0 + 1) нечетна.

Бит C, контролирующий биты 5, 6 и 7 равен нулю, т.к.
их сумма (1 + 0 + 1) четна.

Бит D никакой роли не играет, т.к. он контролирует лишь
те биты, которые расположены справа от него, а ника-
ких битов справа от него уже и нет. И приведен он лишь
затем, чтобы получить 8 бит – общепринятый байт.
Таким образом, «новоиспеченное» кодовое слово бу-
дет выглядеть так: «0100101», где жирным шрифтом вы-
делены контрольные биты.
Допустим, при передаче наше слово было искажено в
одной позиции и стало выглядеть так: 01001
1
1. Сможем ли
мы обнаружить такую ошибку? А вот сейчас и проверим!
Так, бит A должен быть равен: (0 + 1 + 1) % 2 = 0, что соответ-
ствует истине. Бит B должен быть равен (0 + 1 + 1) % 2 = 0, а
в нашем слове он равен единице. Запомним номер «непра-
вильного» контрольного бита и продолжим. Бит C должен
быть равен (1 + 1 + 1) % 2 = 1, а он равен нулю! Ага, значит,
контрольные биты в позициях 2 (бит B) и 4 (бит C) обнаружи-
вают расхождение с действительностью. Их сумма (2 + 4 = 6)
и дает позицию сбойного бита. Действительно, в данном слу-
чае номер искаженного бита равен 6, инвертируем его, тем
самым восстанавливая наше кодовое слово в исходный вид.
А что если искажение затронет не информационный,
а контрольный бит? Проверка показывает, что позиция
ошибки успешно обнаруживается и в этом случае, и кон-
трольный бит при желании может быть легко восстанов-
лен по методике, уже описанной выше (только есть ли в
этом смысл? ведь контрольные биты все равно «выкусы-
ваются» в процессе декодирования кодового слова).
На первый взгляд кажется, что коды Хемминга жутко не-
эффективны, ведь на 4 информационных бита у нас прихо-
дится 3 контрольных, однако поскольку номера контрольных
бит представляют собой степень двойки, то с ростом раз-
рядности кодового слова они начинают располагаться все
реже и реже. Так, ближайший к биту C контрольный бит D
находится в позиции 8 (т.е. в трех шагах), зато контрольный
бит E отделен от бита D уже на (2

- 2
3
- 1) = 7 «шагов», а
контрольный бит F и вовсе на (2
5
- 2
4
- 1) = 15 «шагов».
Таким образом, с увеличением разрядности обрабаты-
ваемого блока, эффективность кодов Хемминга стремитель-
но нарастает, что и показывает следующая программа:
Из приведенной выше распечатки видно, что при об-
работке блоков, дотягивающихся хотя бы до 1024 бит, на-
кладными расходами на контрольные биты можно полно-
стью пренебречь.
К сожалению, коды Хемминга способны исправлять
лишь одиночные ошибки, т.е. допускают искажение всего
Òàáëèöà 1. Ðàçäåëåíèå áèò íà êîíòðîëüíûå è èíôîðìàöèîííûå.
Ëèñòèíã 6. Êîäîâîå ñëîâî âìåñòå ñ èíôîðìàöèîííûìè áèòàìè.
AB0C101D
12345678
Ëèñòèíã 7. Ðàñ÷åò ýôôåêòèâíîé èíôîðìàöèîííîé åìêîñòè êîäîâ
Õåììèíãà äëÿ ñëîâ ðàçëè÷íîé äëèíû.
main()
{
int a;
int _pow = 1;
int old_pow = 1;
int N, old_N = 1;
printf( "* * * hamming code efficiency test * * * 

by Kris Kaspersky\n"\
" BLOCK_SIZE FUEL UP EFFICIENCY\n"\
"-----------------------------------\n");
for (a = 0; a < MAX_POW; a++)
{
N = _pow - old_pow - 1 + old_N;
printf("%8d %8d %8.1f%%\n",_pow, N, (float) 

N/_pow*100);
// NEXT
old_pow = _pow; _pow = _pow * 2; old_N = N;
} printf("-----------------------------------\n");
}
Ëèñòèíã 8. Ðåçóëüòàò ðàñ÷åòà ýôôåêòèâíîé èíôîðìàöèîííîé
åìêîñòè êîäîâ Õåììèíãà äëÿ ñëîâ ðàçëè÷íîé äëèíû.
BLOCK_SIZE FUEL UP EFFICIENCY
-----------------------------------
1 0 0.0%
2 0 0.0%
4 1 25.0%
8 4 50.0%
16 11 68.8%
32 26 81.3%
64 57 89.1%
128 120 93.8%
256 247 96.5%
512 502 98.0%
1024 1013 98.9%
2048 2036 99.4%
4096 4083 99.7%
8192 8178 99.8%
16384 16369 99.9%
32768 32752 100.0%
65536 65519 100.0%
131072 131054 100.0%
262144 262125 100.0%
524288 524268 100.0%
-----------------------------------


92
образование
лишь одного сбойного бита на весь обрабатываемый блок.
Естественно, с ростом размеров обрабатываемых блоков
увеличивается и вероятность ошибок. Поэтому выбор оп-
тимальной длины кодового слова является весьма нетри-
виальной задачей, как минимум требующей знания харак-
тера и частоты возникновения ошибок используемых ка-
налов передачи информации. В частности, для ленточных
накопителей, лазерных дисков, винчестеров и тому подоб-
ных устройств коды Хемминга оказываются чрезвычайно
неэффективными. Зачем же тогда мы их рассматривали?
А затем, что понять прогрессивные системы кодирования
(к которым в том числе относятся и коды Рида-Соломона),
ринувшись атаковать их «с нуля», практически невозмож-
но, ибо они завязаны на сложной, действительно высшей
математике, но ведь не Боги горшки обжигают, верно?
Идея кодов Рида-Соломона
Если говорить упрощенно, то основная идея помехозащит-
ного кодирования Рида-Соломона заключается в умноже-
нии информационного слова, представленного в виде
полинома D, на неприводимый полином G
3
, известный
обеим сторонам, в результате чего получается кодовое
слово C, опять-таки представленное в виде полинома.
Декодирование осуществляется с точностью до наобо-
рот: если при делении кодового слова C на полином G де-
кодер внезапно получает остаток, то он может рапортовать
наверх об ошибке. Соответственно, если кодовое слово
Download 0,54 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish