Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Алгоритмы коррекции ошибок (http://forum.oszone.net/showthread.php?t=29729)

Drey 11-05-2004 14:53 205536

В общем суть в следующем – нужен алгоритм, желательно с исходным кодом на Visual С++ для коррекции ошибок в некой записи. Т.е. есть набор байтов, нужно добавить в них какую-либо информацию (кроме их дублирования) по которой можно бы было проверить целостность информации и, в случае искажения, с достаточно высокой точностью восстановить ее.
Большая просьба ответить поскорее или хотя бы дать ссылки, где это можно почитать. Да, и еще CRC на ассемблере не предлагать :)

Drey 12-05-2004 22:52 205537

Господа, поактивнее – скоро надо уже сдавать курсяк, а у меня еще практически ничего не готово!!!

ivank 12-05-2004 23:56 205538

Drey
Всё зависит от того, что требуется - восстановить покарёженные данные или только обнаружить ошибку.

Вообще, почитайте про групповые и рекуррентные коды, там всё не просто, а очень просто. Можно и про циклические почитать, там математика немного сложнее (хотя, при кодировании она как бы не очень требуется). Литературы полно.

Точнее задачу ставьте, в общем. И вообще, курсовики самому писать надо.

Drey 13-05-2004 00:55 205539

Циклические коды это и есть CRC вообще-то…
Курсяк я пишу всегда сам, просто в этот раз задачу усложнили за две недели до сдачи и купить и прочитать книжку, а главное ее понять я уже не успею, поэтому и прошу помочь с поиском готовых алгоритмов на C++, либо их кратких и понятных описаний.
А где почитать-то, линк дай пожалуйста!

Суть задачи еще раз: есть последовательность байтов (произвольное количество), необходимо добавить к ним необходимое количество данных (в пределах разумного), необходимых для обнаружения и коррекции ошибок, которые могут возникнуть по каким-либо причинам.

ivank 13-05-2004 18:01 205540

Опять же очень важно знать какие могут возникнуть ошибки. Т.е. будут ли они одиночные, двойные смежные, двойные независимые итд. На сколько я помню теорию, абсолютно в любом случае мы сможем составить соответствующий код.

На счёт CRC, я просто привык, что этим сокращением обозначают CRC-32 контрольные суммы. И как-то не задумывался откуда оно пошло. Собственно, первая проверка показала, что этим сокращением (CRC - Cyclic Redundancy Code) обозначают именно контрольную сумму, вычисляемую помошью деления полиномов, и более ничего.

Кстати, гугл рулит. Вот реализация кода (26,12) (на 26 передаваемых бит - 12 информационных, т.е. размер сообщения увеличивается вдвое, что для обеспечиваемой им коррекции [[5 независимых ошибок]] очень даже неплохо): http://the-art-of-ecc.com/3_Cyclic_BCH/RBDS.c На этом же сайте дофига примеров реализации других кодов. Там же в ссылках есть теория.

Добавлено:

На счёт того, что в любом случае можно составить соответствующий код, я пожалуй погорячился.

Drey 13-05-2004 22:51 205541

Я еще не прочитал, но заранее большое спасибо… кстати у тебя классный сайт :)

Добавлено:

А такого же чуда на русском случайно нету?


Время: 00:40.

Время: 00:40.
© OSzone.net 2001-