Итак, рассмотрено
несколько различных способов декодирования линейных блочных кодов, и, наверное,
существует еще множестводругих
способов. Возникает вопрос: а есть ли среди них наилучший, при использовании
которого останется неисправленным наименьшее число ошибок?
Попытаемся
определить наилучшее, или оптимальное, правило декодирования.
Пусть
U
= (U0 , U1 ,…Ui ,… Un )является переданным кодовым словом некоторого
двоичного блочного (n,k)-кода, а r=
(r0 , r1 , … ri , ... rn )- последовательность, принятая на выходе
канала с помехами.
Принятая
последовательность из-за действия шумов может отличаться от переданной, то есть
по отдельным символам приемник мог принять неправильные решения (вместо нулей –
единицы и наоборот).
Декодер канала на основе принятой
последовательностидолжен принять
решение относительно переданного кодового слова. Процедура принятия такого
решения и называется декодированием.
Если
декодер не в состоянии правильно воспроизвести действительное кодовое слово, то
есть m*¹m ,
то при декодировании возникнет ошибка. Эта ошибка случайна, ее вероятность
зависит от характеристик канала связи, характеристик кода, метода кодирования и
декодирования. Желательно, чтобы вероятность ошибочного декодирования была как
можно меньшей.
Как должен
работать декодер, чтобы вероятность ошибочного декодирования была минимальной?
Сначала
рассмотрим ситуацию, когда приемник не принимает решений относительно того,
какой из символов ri ( 0 или 1 ) в данный момент принят, то есть он
отдает декодеру весь принятый сигнал S(t) и предоставляет право принимать
решения самому декодеру.
S(t)- принятый сигнал, содержащий одно из кодовых
слов и помеху.
Какое кодовое слово содержится
в принятом сигнале, мы не знаем. Известна только априорная вероятность передачи
l–го
кодового слова - Pl.
Оптимальный
декодер должен учитывать всю имеющуюся информацию об используемом коде, канале
связи и помехах, действующих в этом канале, и обеспечивать максимальную
вероятность правильных ответов о том, какие кодовые слова были переданы по
каналу связи. Такой критерий оптимальности - максимум апостериорной
(послеопытной) вероятности правильных решений- называется критерием Байеса.
Оптимальный
по критерию Байеса декодер должен выбирать в качестве решения кодовое слово U*
= Uk,
которое максимизирует условную вероятность P(Uk/S) — вероятность
того, что была передана последовательность Uk,
если принята данная реализация сигнала S.
Поскольку
P (Uk/S)×
P(S) = P (S / Uk)× P(Uk),(1.31)
тоP (Uk / S) = P (S / Uk
)× P(Uk)/ P(S).(1.32)
Если
считать, что все кодовые слова равновероятны - P(Uk) =
const,
а также учитывая, что безусловная плотностьP(S)не зависит от Uk, то максимуму P (Uk /S)соответствует
максимумP (S/Uk ),так называемой функции правдоподобия—
условнойвероятности того, что
сигналпримет свое значениеS, если передавалось кодовое слово Uk .
В дальнейшем мы еще вернемся к подробному рассмотрению вопросов
оптимального приема сигналов и покажем, как определяется вид функции правдоподобия,
сейчас же можно сказать, чтозначение P
(Uk / S) будет масимально, если минимальна величина
dk=S∫{ S(t) - Uk}2dt ,(1.33)
или
dk=SS{ Si- Uki}2,(1.34)
если принятый сигнал дискретизован и Si– i-й отсчет принятого сигнала.
Сумма
квадратов разностей между значениями принятого сигналаSi исимволами k-го кодового слова
называется невязкой, или евклидовым расстоянием между этим кодовым словом и
принятым сигналом.
Если
помех в канале связи нет или они невелики, то при передаче l-го
кодового слова принятый сигнал Sбудет совпадать с этим
кодовым словом или незначительно отличаться от него. Тогда невязка будет равна
нулю или минимальна именно для l = k.
Таким
образом, оптимальный декодер должен вычислить евклидовы расстояния между
принятым сигналом S и всеми возможными кодовыми словамиUk
данного кодаи принять решение в пользу
кодового слова Ul , минимизирующегоdl 2, то есть
наиболее похожего на принятый сигнал.