Пусть 11010011 и 11001111-искаженные слова расширенного кода Хемминга длины 8.Какое из этих слов содержит одиночную,а какое-двойную ошибку?В случае одиночной ошибки определить ее положение. Верно ли мое решение?Если что не так,просьба поправить меня) задан 6 Окт '13 16:43 Viktoria111 |
Здесь всё немножко "хитрее". Прежде всего, будем исходить из того, что сначала строится обычный код Хэмминга для обнаружения и исправления одной ошибки как слово длины 7, и затем добавляется 8-й контрольный бит, чтобы обеспечить паритет чётности. В первом примере ошибка точно есть, так как паритет чётности не соблюдён. Возможны два логических варианта: в последнем бите ошибка либо есть, либо её там нет. Допустим, что ошибка есть, и тогда на последнем месте должен был стоять 0. Тогда, поскольку всего ошибок может быть не более двух, то в первых семи разрядах допущено не более одной ошибки. С учётом того, что первые три суммы равны нулю, оказывается, что ошибки там нет, то есть могло быть передано слово 11010010 с одной ошибкой в последнем бите. Теперь надо рассмотреть второй случай, когда ошибки в последнем бите нет. Это значит, что на первые 7 бит приходится одна или две ошибки. Случай, когда ошибка ровно одна, отметается по уже указанной причине. Могло ли быть ровно две ошибки? Если да, то паритет чётности остался бы прежним. Но тогда 8-й бит должен быть равен нулю. Таким образом, при помощи дополнительного анализа мы убеждаемся в том, что в первом примере ошибка ровно одна, и искажён 8-й бит. Ничего другого быть не могло. Во втором примере хотя бы одна ошибка также есть. Допустим, что она ровно одна. Тогда она не может быть в 8-м бите из-за паритета чётности. Если она в первых семи разрядах, то анализ при помощи сумм приводит к указанному Вами случаю ошибки в 7-м бите. Но тогда, если мы её исправим, то паритет чётности нарушится! То есть то слово, которое Вы указали, передано быть не могло. Значит, здесь ошибок имеется по крайней мере две. Интересно исследовать эту ситуацию до конца. Какие тут могли быть варианты? Если ошибка есть в 8-м бите, то всё ясно: есть ещё одна ошибка в 7-м бите, и было передано сообщение 11001100. Единственный ли это вариант? Если нет, то надо рассмотреть случай, когда в последнем бите ошибки нет. Тогда две ошибки есть среди семи разрядов. И здесь видно, что могли быть другие случаи. Например, слово могло состоять из одних единиц, а ошибки при передаче были допущены в 3-м и 4-м бите. Поэтому во втором примере ничего декодировать не удаётся. отвечен 6 Окт '13 21:01 falcao @Falcao, в задаче не требуется найти позицию ошибки во втором примере, по S0=0 однозначно устанавливается факт четного числа ошибок (конфигурация не единственная - это очевидно). В первом случае по S0=1 однозначно устанавливается факт нечетного числа ошибок в принятой комбинации. С учетом условия Nош. =1 - такая конфигурация единственная. Если говорить о единственности без условия Nош=1, то безусловно нет, найдутся конфигурации ошибки кратности 3, 5 и т.д., но при условии одной ошибки вариант безусловно единственный. Аз есмь.
(6 Окт '13 21:46)
Urt
@Urt: да, я с Вами согласен. Дополнительный анализ я проводил чисто из любопытства. То, что вариант не единственный, в принципе следует из общих соображений, без анализа конкретной конфигурации. Всё, что я написал, можно было изложить покороче, но я просто воспроизвёл нечто вроде "протокола" приходящих в голову мыслей.
(6 Окт '13 22:06)
falcao
@Falcao, одна "тонкость" которую я не отметил, это то, что элемент a0 может быть принят за проверочный. При этом, если вес синдрома не превышает t (макс. кратность исправляемых ошибок), то все ошибки (при стандартном декодировании) полагаются в тех проверочных разрядах с номерами i, для которых Si=1
(6 Окт '13 22:23)
Urt
@Urt: к сожалению, я пока не уловил Вашу мысль. Что означает первая фраза о рассмотрении последнего бита как проверочного элемента?
(6 Окт '13 22:34)
falcao
@Falcao, дело в том, что в совокупности проверочных уравнений проверочные элементы в явном виде не выделены, но по "счастливой случайности" элемент a0 участвует только в одной проверке (он принимается за проверочный) и именно в этой позиции произошла ошибка. Этот же код можно было представить более завуалированной матрицей проверок, для которой информационную совокупность (и соответственно проверочные элементы) нужно было поискать. Могло случиться, что ошибка попала бы в информационную совокупность и простое декодирование (инвертировать проверочную позицию) для данной ошибки было невозможно.
(6 Окт '13 23:00)
Urt
|
@Viktoria111, ваше заключение ошибочно. Это видно из того, что проверка на четность всех разрядов (S0) равна нулю только для конфигураций ошибок четной кратности (в вашем случае для двойной ошибки) и равна 1 для ошибок нечетной кратности (в вашем случае однократной ошибки). Чтобы найти позицию ошибки (кроме того, лучше понять структуру кода и потренироваться) перепишите все кодовые слова (их 16) и найдите ближайшее слово к первому из проверяемых. Найти конфигурацию ошибки можно по ее синдрому. В вашем случае вес синдрома = 1, след-но, ошибка в соответствующей проверочной позиции.