Цитата(Z0Rk @ Apr 7 2005, 22:19)
Как формировать образующие полиномы для алгоритма CRC-32?
ИМХО каждый из полиномов оптимизирован для обнаружения определенной совокупности ошибок (одиночных, двойных, пакетных) и таким образом ориентирован на определнный канал передачи данных или систему хранения информации.
Также встает вопрос оценки вероятности ошибки... как её оценивать?
На память, могу ошибаться: для формирования полиномов используют разложение (XстепN - 1) в расширеном поле GF(2степ32). Вариантов получается много. Лит-ру сказать не могу, надо искать что-то вроде полей Галуа.
Для систематических блоковых кодов, образованных добавлением CRC-32 к инф.части, строится весовой спектр и рассчитывается вероятность необнаруженной ошибки (в формулу входят весовые компоненты. начиная с 32-й). Вероятность ошибки декодирования для них не считают, т.к. CRC-32 используется в системах ARQ (переспроса). Искать нужно теорему Мак-Вильямс о дуальности весового спектра расстояний для линейных блоковых кодов.
Для всех полиномов весовой спектр разный, в зависимости от его формы существует различная вероятность необнаруженной ошибки (как характеристики кода!) для данной длины кода. Для CRC-32 обнаруживаются все ошибки кратности (32-1), далее с какой-то вероятностью ошибки большей кратности. И чем больше смещен спектр в область "тяжелых" составляющих (т.е. большего веса), тем меньше вероятность необнаруженной ошибки для более "легких" составляющих. Вкратце так.
Исправляющая способность 3-4 бита, т.к. мин. рассояние для кодовых слов =8 (определяется только степенью полинома), поэтому для исправления CRC-32 не используют, только для обнаружения. Исправление осущ. за счет переспроса по каналу обратной связи.
см. Теория кодов, исправляющих ошибки
Задачи очень ресурсоемкие, давно уже решены. Все просто ислользуют CRC-32 из рекомендованного перечня с хор. спектр. хар-ми.
Для оценки вероятности ошибки в канале связи(КС) используется формула, в кот. входят
- закон распр. ошибок в КС
- С/Ш
- составляющие весового спектра используемого кода. Вообще-то, обычно используются аппрокс. формулы для блоковых кодов с верхней и нижей границами для вероятности ошибки, чтоб не мучиться. Года 2-3 назад видел статью в ППИ (проблемы передачи информации) про границу Блиновского, да вообще, тут много всего.. Лит-ру поищу, потом кину.