Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Все задания за 4 курс 7 семестр / Основы теории информации / Примеры решения задач по контрольной работе

.pdf
Скачиваний:
114
Добавлен:
10.04.2015
Размер:
511.41 Кб
Скачать

Пример: Сообщения передаются в двоичном коде. Время передачи от нуля до одной секунды, r0 = 1 сек, 1τ1 =5 секунд. Определить скорость передачи информации для случая:

1) Символы равновероятны и независимы.

СП =

H

=

 

 

log 2 2

=

1

= 0,33 бит/ сек

τcp

 

1

(τ0 +τ1 )

3

 

 

2

 

 

 

 

 

 

 

 

 

2) Символы неравновероятны

p0 = 0,37

 

p1 = 0,63

 

 

 

 

2

 

 

 

H

 

pi log pi

CП =

 

 

=

i=1

 

= 0,27 бит/ сек

τcp

2

 

 

 

τi

pi

i=1

Дискретный канал с помехами

Пример: Определить пропускную способность канала связи, способного передавать 100 симв./сек . Каждый символ искажается с вероятностью 0,01.

С =100[1+0,01 log0,01+0,99log0,99]92 бит/ сек

Корректирующие коды

того, чтобы определить кодовое расстояние достаточно просуммировать кодовые комбинации по правилам двоичного поля и подсчитать число единиц в полученном результате.

Пример: Для кода 1

 

А1 = 00

0 0 = 0

Правила:

А2 = 01

1 0 = 1

четн. – 0

А3 = 10

0 1 = 1

нечетн. – 1

А4 = 11

1 1 = 0

 

Определим кодовую комбинацию

 

 

00

 

 

 

10

 

А1 А2

 

01

 

d = 1

А3 А4

11

d = 1

Для кода 2

01

 

 

 

01

 

 

 

 

 

 

 

А1=000

А2 А4

011

 

А3 А2

101

 

А2=011

 

 

110

d = 2

 

011

d = 2

А3=101

 

 

101

 

 

110

 

А4=110

 

 

 

 

 

 

 

Ошибку можно не только обнаружить, но и исправить, если принятая кодовая комбинация ближе к исходной, чем к любой другой разрешённой комбинации.

Пример: Построим код: К коду 2 добавим два символа, повторив первых два символа получим код 3:

Код 2

А1=000 А2=011 А3=101 А4=110

 

 

 

 

 

Код 3

 

 

 

 

 

 

 

 

 

 

00

 

000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01

 

101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

информационные разряды

 

контрольные разряды

 

Определим кодовое расстояние между комбинациями

 

Строим матрицу кодовых расстояний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А1

 

А2

 

 

А3

 

А4

 

 

 

 

 

 

А1

 

 

0

 

3

 

3

 

4

d0 = 3

 

 

 

 

 

А2

 

 

 

 

 

0

 

4

 

3

 

 

 

 

 

А3

 

 

 

 

 

 

 

 

0

 

3

 

 

 

 

 

 

А4

 

 

 

 

 

 

 

 

 

 

 

0

 

 

Пусть передаётся комбинация А3, и она содержит ошибку

 

V

x

=1011

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ошибка

 

 

 

 

 

 

матрица кодовых расстояний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А1

 

А2

 

А3

 

А4

 

 

 

 

 

Vx

 

 

 

4

3

 

1

 

2

 

 

 

 

vx ближе всего к А3, следовательно посылалась А3 и мы ошибку исправили.

Пример: Требуется передавать, обнаруживающим трёхкратные ошибки, все комбинации пятизначного двоичного кода. Чему равна общая длина кода ?

r– кратность обнаруживающих ошибок.

s– кратность исправляемых ошибок.

nк(3) =1 + log[(nи +1) + log(nи +1)]

nи = 5; nк = 1 + log[6 + log6] = 5 n = nи + nк = 10

Пример: Определить количество информационных разрядов кода длиной в пятнадцать символов, если код исправляет две ошибки.

n=15

п

= log

152

+15

+1

= log

225

+15

+1

= 7

к2

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

nи = n - nк = 15 – 7 = 8

Систематические коды

Пример: Пусть строится код (5,3) с минимальным кодовым расстоянием d0=2. Он позволяет обнаруживать все одиночные ошибки. Составим производящую матрицу G:

 

 

Три строки, т.к. nu = 3, n = 5 – столбцы

Результат комбинации

 

 

 

 

 

 

 

Комбинации

 

 

 

 

 

 

 

1)

Нулевой вектор v1 = 00000

 

 

 

 

 

 

 

2)

 

 

v2

= 00011

0

0

0

1

1

3)

GСтроки матрицы v3 = 01101

 

0

1

1

0

1

 

4)

 

 

v4

=11010

G =

 

5)

1

+ 2

v5 = 01110

 

1

1

0

1

0

 

 

 

6)

2

+ 3

v6

=10111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7)

1

+ 3

v

=11001

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

8)

1

+ 2 + 3

vj

=10100

Можно было бы построить G из любой другой тройки векторов, кроме сочетаний v2v3v5, v2v4,v1 и т.д. (семь штук), т.к. эти сочетания линейно зависимы, т.е. v2 + v4 + v7 ≠0.

Построим ортогональные векторы u (проверочные).

Составим аibi для векторов v2, v3, v8. Эти вектора имеют минимальное количество

единиц.

0 b1 + 0 b2 + 0 b3 + 1 b4 + 1 b5 = 0

v2

 

b4 + b5 = 0

v3

b2 + b3 + b5 = 0

v8

b1 + b3 = 0

Для любого вектора u должно выполняться

b4 =b5b1 =b3b2 =b3 +b5

Перебирая все удовлетворяющие этим условия сочетания, получили:

u1 = 00000 u2 = 01011 u3 = 10111 u4 = 11100

Из этих векторов необходимо составить проверочную матрицу Н

0

1

0

1

1

- т.к. они линейно независимы

Н

 

 

 

 

 

 

 

1

1

1

0

0

 

 

 

 

 

Декодирование систематических кодов

1. Декодирование с помощью полной кодовой таблицы. Рассчитаем параметры этой таблицы

N = 25 = 32 – код пяти значений

N0 = 23 = 8 – разрешённая комбинаяция

N - N0=32-8=24 – запрещённая коибинация ( кодовых исправлений 24 ошибки )

Строим полную кодовую таблицу. В качестве первой строки используем разрешенные комбинации v1 – v8

00000

00011

01101

11010

01110

10111

11001

10100

00001

00010

01100

 

 

 

 

00100

00111

01001

 

 

 

 

 

01000

01011

00101

 

 

 

 

 

Общий метод декодирования состоит в следующем: Приняв некий вектор vx, содержащий ошибку, его отыскивают в полной кодовой таблице и соотносят с тем кодовым вектором, который стоит в верхней строке этого столбца.

Пример: vx=00111, находим в таблице и соотносят с 01 строкой, т.е. v = 00011

Достоинство метода: его универсальность, возможность применять различные стратегии.

Недостаток: громоздкость кода и только 3-и ошибки.

2. Декодирование с проверкой на четность.

Пример: , пусть принят вектор vx = 00110. Он имеет координаты а1 а2 а3 а4 а5. Составим схему проверок.

а2 + а4 + а5 = 0 +1 +0 =1 а1 + а2 + а3 = 0 +0 +1 =1

Если бы ошибок не было бы, то здесь были бы нули.

Возможность кода к исправлению ошибки можно объяснить схемой

 

N символов

N-проверки

1

2

3

4

5

1

 

+

 

+

+

1

+

+

+

 

 

Следовательно, данный код может исправить во втором бите, обнаружить ошибку четвёртом или пятом бите, обнаружить ошибку в первом и третьем бите.

Для исправления всех ошибок надо, чтобы каждый бит появлялся в оригинальной комбинации строк в таблице проверки, и так будет, когда d0=3 и добавиться ещё одна проверка

3.Декодирование с помощью корректирующего вектора

Пример: Нужно выбрать систему кодирования. Возьмём ту же систему кодов и H. 1. Определение шаблонов корректирующего вектора

Векторы ошибок

 

01011 u1

 

l1

= 00001

C =10

шаблоны

 

l

 

= 00100

C = 01

Н

 

 

2

 

 

 

 

 

 

 

 

11100 u2

 

l3

= 01000

C =11

 

Для вектора e1 построение шаблона.

 

 

 

 

 

 

 

 

e1:

e1 u1 = 00001 01011 = 1

C1 = 1

 

 

 

 

 

 

 

 

 

 

e1 u2 = 00001 11100 = 0

C2 = 0

 

 

 

Следовательно, вектору e1 ставится в соответствие вектор С = (10)

 

Для e2:

 

 

 

 

 

 

 

e2 u1 = 00100 01011 = 0

C1

= 0

 

 

 

 

 

e2 u2 = 00100 11100 = 1

C2

= 1

 

 

 

 

Для e3:

 

 

 

 

 

 

 

e3 u1 = 01000 01011 = 1

C1

= 1

 

 

 

 

 

e3 u2 = 01000 11100 = 1

C2

= 1

 

 

 

 

Шаблоны известны на приёмной стороне ещё до посылки комбинации

2. Определение корректирующего вектора

Пусть принят вектор vx = 01001

u1vx = 01011 01001 =1 +1 = 0 C1 = 0

u2 vx =11100 01001 =1

C2 =1

C = 01

Сравниваем полученный вектор ошибки с нашим шаблоном и определяем, что это e2.

3) Исправляем ошибку

01001

vx +С = 0110100100 , что соответствует комбинации v3.

Можно строить образующую матрицу достаточно простым способом, например, единичной матрицей nu × ni.

100 01

 

 

 

010 10

 

Эта матрица порождает восемь кодов, которые также позволяют

G =

 

 

001 11

 

 

 

 

 

обнаружить одиночную ошибку. Преимущество кода состоит в том, что его можно легко составить, в исправляющих способностях выйгрыша нет.

 

 

Код Хэминга

Пример: Построить код Хэминга по комбинации

 

0101

nu = 4

nk = 3

nk = log(nu + 1) + log(nu + 1)

1,2,3

 

 

k = 7 2i = 1,3,4,8

Контрольные разряды будут занимать позиции 1,2,4.

Код Хэминга

 

 

 

а1a2a3a4a5a6a7

 

 

 

k1k20 k31 0 1

- макет

 

 

1)a1 + a3 + a5 + a7 = k1 + 0 + 1 + 1 = 0 k1 = 0

2)a2 + a3 + a6 + a7 = k2 + 0 + 0 + 1 = 0 k2 = 1

3)a4 + a5 + a6 + a7 = k3 + 1 + 0 + 1 = 0 k3 = 0

Код Хэминга будет иметь вид 0100101