Групповой -код, исправляющий все ошибки веса, не большего , и никаких других, называется совершенным.
Свойства совершенного кода2):
Совершенный код - это лучший код, обеспечивающий максимум минимального расстояния между кодовыми словами при минимуме длины кодовых слов. Совершенный код легко декодировать: каждому полученному слову однозначно ставится в соответствие ближайшее кодовое. Чисел ,
и , удовлетворяющих условию совершенности кода очень мало. Но и при подобранных , и
совершенный код можно построить только в исключительных случаях.
Если , и не удовлетворяют условию совершенности, то лучший групповой код, который им соответствует называется квазисовершенным, если он исправляет все ошибки кратности, не большей , и некоторые ошибки кратности . Квазисовершенных кодов также очень мало.
Двоичный блочный -код называется оптимальным, если он минимизирует вероятность ошибочного декодирования. Совершенный или квазисовершенный код - оптимален. Общий способ построения оптимальных кодов пока неизвестен.
Для любого целого положительного числа существует совершенный -код, исправляющий одну ошибку, называемый кодом Хэмминга (Hamming), в котором и .
Действительно, .
Порядок построения кода Хэмминга следующий:
бит с индексами-степенями двойки - являются контрольными, остальные - в естественном порядке - битами сообщения. Например, если , то биты - контрольные, а - из исходного сообщения;