Существует множество способов реализовать это, но общий подход заключается в использовании кода Рида-Соломона.
Поскольку вам необходимо обнаружить все двухсимвольные ошибки и исправить все односимвольные ошибки,это означает, что вам понадобятся два контрольных символа.
Вы говорите, что у вас есть 2-битный (4-элементный) символ, который ограничивает длину вашего кода до 3 символов.
Добавьте это, и у вас будет 1 символ данных и 2 контрольных символа для каждого12-битное кодовое слово.
Не очень эффективно, а?Для этой эффективности вы могли бы просто трижды дублировать свой символ с тем же размером кодовых слов, а также с детективной и корректирующей способностью.
Чтобы использовать Рид-Соломон более эффективно, вам нужно использовать большие символы.Это справедливо и для большинства других типов кодов.
РЕДАКТИРОВАТЬ:
Вы можете рассмотреть обобщенные коды BCH, которые не имеют столько ограничений, как коды Рида-Соломона (которыеявляются подмножеством кодов МПБ) за счет более сложного декодирования:
http://en.wikipedia.org/wiki/BCH_code