Вы можете заставить его работать, просто переключаясь между возможными позициями, в которых символ может отсутствовать, и позволяя ему попытаться исправить ваш результат, например, вы получили 10 символов:
1234567890
Исправьте следующие значения:
??1234567890
?1?234567890
?12?34567890
:
1??234567890
1?2?34567890
:
1234567890??
Каждая попытка, вероятно, даст вам какой-то результат, большинство из которых не те, которые вам нужны. Но я ожидаю, что должен быть ровно один результат с минимальным количеством дополнительных модификаций, и это должен быть тот, который вы хотите использовать в качестве наиболее вероятного правильного ответа.
Например, если вы исправите первые три числа из приведенного выше примера, вы можете получить следующий результат:
v
361274567890
917234567890
312734569897
: ^ ^
Для первого и третьего случая у вас есть дополнительные исправления, внесенные после заполнения двух пробелов (отмеченных v и ^), тогда как во втором случае у вас заполнены только пропущенные позиции, а другие символы соответствуют не исправленным входным данным , Поэтому я бы выбрал ответ 2 как наиболее вероятный.
Очевидно, что вероятность того, что это сработает, зависит от наличия других ошибок. К сожалению, я не могу дать вам строгий набор условий, при которых этот метод будет работать наверняка.
.
Еще одна вещь, которую вы можете сделать, если ваше сообщение достаточно длинное, - это использовать метод перемежения, чтобы в основном несколько ортогональных кодов RS покрывали ваши данные. Таким образом, если один не удастся, вы сможете восстановить с другим. Этот метод используется, например, на компакт-дисках (CD), где он называется CIRC .
.