SlideShare a Scribd company logo
1 of 32
Помехоустойчивое
кодирование
Циклические коды – подкласс
линейных кодов
Примеры использования
линейных кодов
• Пример 1. Протокол передачи данных по
телефонному каналу ISDN-D, в котором
используется формат передачи данных
LAPD.
1 2 1(2) max 260 2 1
F A C I FCS F
Примеры использования
линейных кодов
• F=01111110 (flag)
• А – поле адреса (address)
• С поле команд (control)
• I –информационное поле (information)
• FCS – проверочные разряды (frame check sequence)
• Общая длина 266х8=21128 бит, проверочных – 16 бит
•
1 2 1(2) max 260 2 1
F A C I FCS F
Примеры использования
линейных кодов
• Пример 2. Протокол передачи данных в 802.3
CSMA/CD для передачи данных в локальных сетях
связи (LAN)
7
1
2(6)
2(6)
65-1518
4
Преамбула
Разделитель
Адрес получателя
Адрес источника
Данные
Контроль четности
Линейные циклические коды
Циклические коды интенсивно изучаются, так как:
• Циклические коды обладают богатой алгебраической
структурой, что используется в различных
приложениях.
• Для циклических кодов чрезвычайно кратко
формулируются технические требования
(спецификации).
• Циклические коды легко реализуются с помощью
сдвиговых регистров.
• Многие практически важные коды являются
циклическими.
Линейные циклические коды
Линейный (n,k)-код С называется циклическим, если
циклический сдвиг любого кодового слова из С также
принадлежит С:



















1
2
1
0
...
n
n
x
x
x
x






















2
3
0
1
)
1
(
...
n
n
n
x
x
x
x

Замечание
• Для задания произвольного кода из 2k
слов длины n необходимо выписать
все 2k кодовых слов длины n.
• Для задания линейного кода из 2k слов
длины n достаточно выписать k
базисных слов длины n (порождающая
матрица).
• Для задания линейного циклического
кода из 2k слов длины n достаточно
выписать одно ненулевое кодовое
слово.
Реализация циклического сдвига
Циклический сдвиг реализуется с помощью
регистра сдвига длины n с обратной
связью:
…
0
x 1
x 2
x 2

n
x 1

n
x
Реализация циклического сдвига
Регистр сдвига на такте 1
Регистр сдвига на такте 2
…
1

n
x 0
x 1
x 3

n
x 2

n
x
…
2

n
x 1

n
x 0
x 3

n
x
4

n
x
Представление кодовых слов в
виде кодовых многочленов
1
1
1
0
1
2
1
0
...
)
(
... 
























 n
n
n
n
x
a
x
a
a
x
a
a
a
a
a

Представление кодовых слов
в виде многочленов
Циклический сдвиг многочлена
1
1
1
0 ...
)
( 




 n
n x
a
x
a
a
x
a





 




1
2
2
3
0
1
)
1
(
...
)
( n
n
n
n
n x
a
x
a
x
a
a
x
a






 



 )
1
(mod
... 1
1
2
2
3
0
n
n
n
n
n
n
n x
x
a
x
a
x
a
x
a
)
1
)(mod
( 

 n
x
x
a
x
Пример
1101000
7
,
1
)
( 3





 n
x
x
x
a
Пример
5
3
2
3
4
4
0011010
1000110
0110100
1101000
)
1
)(
1
(
)
(
)
1
(
x
x
x
x
x
x
x
x
a
x
x














Пример















7
5
3
2
7
4
3
5
2
4
1
1
x
x
x
x
x
x
x
x
x
x
x
x
)
1
mod( 7
5
3
2



 x
x
x
x







 )
1
)(
1
(
)
(
)
1
( 3
4
4
x
x
x
x
x
a
x
x
Циклический сдвиг многочлена
)
1
)(mod
(
...
1
2
1
)
(



























n
i
i
n
i
n
i
n
i
n
i
x
x
a
x
a
a
a
a

Важные теоремы
• Теорема 1. Циклический код содержит
единственный кодовый многочлен
минимальной степени.
• Теорема 2.Если – кодовый многочлен
минимальной степени, то его младший
коэффициент
• Теорема 3.Пусть -кодовый многочлен
минимальной степени. Многочлен
является кодовым многочленом тогда и
только тогда, когда он кратен
)
(x
g
.
1
0 
g
)
(x
a
)
(x
g
).
(x
g
Порождающий многочлен
Пусть -кодовый многочлен минимальной степени,
этот многочлен называется порождающим
многочленом. Пусть степень порождающего
многочлена равна r.
Базис подпространства С (порождающая матрица):
Степень порождающего многочлена
)
(x
g
 
)
(
,...,
)
(
),
(
),
( 1
2
x
g
x
x
g
x
x
g
x
x
g k


 
k
n
x
g 

)
(
deg
Теоремы о порождающем многочлене
• Теорема1.Порождающий многочлен
циклического кода делит без остатка
многочлен .
• Теорема 2.Если некоторый многочлен -
степени n-k делит многочлен без
остатка, то порождает циклический
(n,k)-код.
)
(x
g
.
1

n
x
1

n
x
)
(x
g
).
(x
g
Кодирование
• Кодирование циклического кода –
умножение информационного
многочлена на порождающий
многочлен
Циклический (7,4)-код
• Пример.
• (разложение )
)
1
)(
1
)(
1
(
1 3
2
3
7
x
x
x
x
x
x 






3
1
)
( x
x
x
g 


•
инф.сл. кодовое сл. многочлен
0000 0000000
1000 1101000
0100 0110100
1100 1011100
0010 0011010
1010 1110010
0110 0101110
1110 1000110
0001 0001101
1001
0101
1101 Заполните самостоятельно
0011
1011
0111
1111
)
(
0 x
g

g(x)
x
g(x)
1
)
(
)
1
( x
g
x 

g(x)
x2

)
(
)
1
( 2
x
g
x 

)
(
)
( 2
x
g
x
x 

)
(
)
1
( 2
x
g
x
x 


g(x)
x3

Циклический (7,4)-код
• Минимальный вес (7,4)-кода равен 3,
код исправляет 1 ошибку
• Это циклический код Хэмминга
Замечания (1)
•По сравнению с линейными,
циклические коды редки. Например,
существует 11 811 линейных
двоичных (7,3)-кодов, но только два
из них являются циклическими.
Замечания (2)
•Тривиальные двоичные циклические коды.
•Код без информации – код из нулевого слова.
•Код с повторением – код состоящий из двух
слов: 00…0 и 11…1.
• Код с проверкой на четность – код из слов
четного веса.
•Код без проверки – код из всех слов длины n.
•В некоторых случаях (например n = 19), не
существуют циклические коды, кроме
описанных выше четырех кодов.
Порождающая матрица
циклического кода




























1
...
1
0
...
...
0
0
...
1
...
...
...
1
0
0
0
...
0
1
...
1
0
0
...
0
0
1
...
1
1
2
1
1
1
2
1
1
2
1
k
n
k
n
k
n
k
n
k
n
n
k
Т
g
g
g
g
g
g
g
g
g
g
G










Проверочный многочлен
циклического кода
• Так как порождающий многочлен циклического
кода делит без остатка многочлен
то
• Многочлен h(x) – проверочный многочлен
,
1

n
x
)
(x
g
)
(
)
(
1 x
g
x
h
xn



Проверочная матрица
циклического кода
• Всякое кодовое слово можно представить
как
• Тогда
• поэтому
1
)
(
deg
),
(
)
(
)
( 


 k
x
a
x
g
x
a
x
c




 )
(
)
(
)
(
)
(
)
( x
h
x
g
x
a
x
h
x
c



 )
1
(
)
( n
x
x
a
n
x
x
a
x
a 

 )
(
)
(
1
)
(
)
(
deg 

 k
x
h
x
c
Проверочная матрица
циклического кода
• Поэтому коэффициенты при степенях x
старше k-1 равны 0.
• Тогда
0
...
0
...
0
...
0
...
0
1
1
1
0
2
1
3
2
0
1
1
2
1
0
1
1
0






































h
c
h
c
h
c
h
c
h
c
h
c
h
c
h
c
h
c
h
c
h
c
h
c
n
k
k
n
k
k
n
k
k
k
k
k
k
k
k
k

Проверочная матрица
циклического кода
























0
1
2
1
0
1
0
1
2
1
0
1
2
1
)
(
...
0
...
...
0
0
...
...
...
...
0
0
0
...
0
...
0
0
...
0
0
...
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
h
H
k
k
k
k
k
k
k
k
k
n
k
n










Порождающий многочлен
дуального кода
)
(
)
( 1
* 

 x
h
x
x
h k
  k
k
k x
h
x
h
h
x
h 0
1 ...


 

Параметры циклического кода
Хэмминга
• Длина кода
• Число информационных символов
• Минимальное расстояние - 3
• Число исправляемых ошибок - 1
1
2 
 m
n
m
m
n
k m




 1
2

More Related Content

Similar to Помехоустойчивое кодирование - Циклические коды

1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)Smolensk Computer Science Club
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
коды хемминга
коды хеммингакоды хемминга
коды хеммингаYuliyaGridneva
 
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииЦиклические коды БЧХ, Хемминга. Восстановление синхронизации
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииAlex Dainiak
 
C:\fakepath\кмсзи экз
C:\fakepath\кмсзи   экзC:\fakepath\кмсзи   экз
C:\fakepath\кмсзи экзdarina andr
 
23.02.15_Симметричные криптосистемы.pptx
23.02.15_Симметричные  криптосистемы.pptx23.02.15_Симметричные  криптосистемы.pptx
23.02.15_Симметричные криптосистемы.pptxTamaraRadivilova1
 
Продолжаем говорить про арифметику
Продолжаем говорить про арифметикуПродолжаем говорить про арифметику
Продолжаем говорить про арифметикуAndrey Akinshin
 
курсовой проект
курсовой проекткурсовой проект
курсовой проектGulnaz Shakirova
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Ontico
 
012
012012
012JIuc
 
1.3двоичное кодирование
1.3двоичное кодирование1.3двоичное кодирование
1.3двоичное кодирование25school
 
Владимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеВладимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеYandex
 

Similar to Помехоустойчивое кодирование - Циклические коды (20)

лекция 17
лекция 17лекция 17
лекция 17
 
лекция 17
лекция 17лекция 17
лекция 17
 
1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
коды хемминга
коды хеммингакоды хемминга
коды хемминга
 
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииЦиклические коды БЧХ, Хемминга. Восстановление синхронизации
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
 
двоичное кодирвоание
двоичное кодирвоаниедвоичное кодирвоание
двоичное кодирвоание
 
C:\fakepath\кмсзи экз
C:\fakepath\кмсзи   экзC:\fakepath\кмсзи   экз
C:\fakepath\кмсзи экз
 
23.02.15_Симметричные криптосистемы.pptx
23.02.15_Симметричные  криптосистемы.pptx23.02.15_Симметричные  криптосистемы.pptx
23.02.15_Симметричные криптосистемы.pptx
 
Продолжаем говорить про арифметику
Продолжаем говорить про арифметикуПродолжаем говорить про арифметику
Продолжаем говорить про арифметику
 
курсовой проект
курсовой проекткурсовой проект
курсовой проект
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Step cpp0201
Step cpp0201Step cpp0201
Step cpp0201
 
012
012012
012
 
1.3двоичное кодирование
1.3двоичное кодирование1.3двоичное кодирование
1.3двоичное кодирование
 
Владимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрованиеВладимир Иванов - Криптография и шифрование
Владимир Иванов - Криптография и шифрование
 

Помехоустойчивое кодирование - Циклические коды