Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
23-ИСТ-1-1_Какушкина_Ольга_Лаб1_ТИ.docx
Скачиваний:
0
Добавлен:
23.06.2025
Размер:
250.32 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

Н ИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ им. Р.Е.АЛЕКСЕЕВА

Институт радиоэлектроники и информационных технологий

Кафедра «Информатика и системы управления»

ОТЧЁТ

по Лабораторной работе №1

по дисциплине

Теория информаций, данные, знания.

РУКОВОДИТЕЛЬ:

Баранов Д. Б.

____________________

(подпись) (фамилия, и.,о.)

Какушкина О. В.

СТУДЕНТ:

_________________

(подпись) (фамилия, и.,о.)

23-ИСТ-1-1

(шифр группы)

Работа защищена «___» ____________

С оценкой ________________________

Нижний Новгород

2025

Цель работы

Изучение методов эффективного кодирования дискретных сообщений в отсутствии помех и освоение способов практической реализации этих методов на ЭВМ.

Задания и порядок выполнения работы

  1. Эффективному кодированию подлежит массив, представляющий собой последовательность из 1 и 0, при этом вероятность 1 равна p.

  2. При заданном значении p (0.2-0.4) реализовать кодирование блоками по методу Шеннона-Фано и методу Хаффмана. Длина блока выбирается равной n= 2,3,4.

  3. Оценить эффективность кодирования массива и сравнить её с теоретическими предельными возможностями.

  4. Исследовать зависимость эффективности кодирования от длины блока и значения энтропии источника.

Описание алгоритмов кодирования

Алгоритм кодирования методом Шеннона-Фано:

Пусть имеется множество сообщений

  1. Все сообщения располагаются в порядке убывания их вероятностей.

  2. Упорядоченное множество сообщений делится на две части: верхнюю часть и нижнюю часть, причем так, чтобы разность между суммой вероятностей в верхней и нижней части была минимальной.

  3. После этого сообщениям в верхней части ставится в соответствие 1, а в нижней – 0.

  4. Далее аналогичные действия производятся с каждой из частей. Вновь полученные подмножества сообщений снова аналогичным образом делятся на две части и т.д., до получения по одному сообщению в каждом из подмножеств.

  5. В результате каждому сообщению будет соответствовать своя последовательность из нулей и единиц, т.е. кодовое слово

Алгоритм кодирования методом Хаффмана:

  1. Все сообщения располагаются в порядке убывания их вероятностей.

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

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

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

Ход работы

Для эффективного кодирования с помощью 1 и 0 нужно выбрать вероятность появления

1 или 0 от 0,2 до 0,4.

. Тогда

  1. Кодирование по Шеннону (p=0.28; q=0.72; n=2)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

P=q2=0,5184

2

0

1

P=pq=0,2016

3

1

0

P=pq=0,2016

4

1

1

P=p2=0,0784


б) Располагаем в порядке убывания вероятностей и получаем кодовые слова:

N

Кодовые слова 

l

0

0,5184

1

 

 

1

0,5184

1

0,2016

0

1

 

2

0,4032

2

0,2016

0

0

1

3

0,6048

3

0,0784

0

0

0

3

0,2352

Средняя длина кодового слова:

  1. Кодирование по Шеннону (p=0.28, q=0.72, n=3)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

0

P=q3=0,3732

2

0

0

1

P=q2p=0,1451

3

0

1

0

P=q2p=0,1451

4

0

1

1

P=qp2=0,0564

5

1

0

0

P=q2p=0,1451

6

1

0

1

P=qp2=0,0564

7

1

1

0

P=qp2=0,0564

8

1

1

1

P=p3=0,0219


б) Располагаем в порядке убывания и получаем кодовые слова:

N

l

1

0,3732

1

1

 

 

2

0,7464

2

0,1451

1

0

 

 

2

0,2902

3

0,1451

0

1

 1

 

3

0,4353

4

0,1451

0

1

0

3

0,4353

5

0,0564

0

0

1

1

4

0,2256

6

0,0564

0

0

1

0

4

0,2256

7

0,0564

0

0

0

1

4

0,2256

8

0,0219

0

0

0

0

4

0,0876


Средняя длина кодового слова:

  1. Кодирование по Шеннону (p=0.28, q=0.72, n=4)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

0

0

P=q4=0.2687

2

0

0

0

1

P=q3p=0.1045

3

0

0

1

0

P=q3p=0.1045

4

0

0

1

1

P=q2p2=0.0406

5

0

1

0

0

P=q3p=0.1045

6

0

1

0

1

P=q2p2=0.0406

7

0

1

1

0

P=q2p2=0.0406

8

0

1

1

1

P=qp3=0.0158

9

1

0

0

0

P=q3p=0.1045

10

1

0

0

1

P=q2p2=0.0406

11

1

0

1

0

P=q2p2=0.0406

12

1

0

1

1

P=qp3=0.0158

13

1

1

0

0

P=q2p2=0.0406

14

1

1

0

1

P=qp3=0.0158

15

1

1

1

0

P=qp3=0.0158

16

1

1

1

1

P=p4=0.0061

б) Располагаем в порядке убывания вероятностей и получаем кодовые слова:

N

l

1

0.2687

1

1

2

0,5374

2

0.1045

1

0

1

3

0,3135

3

0.1045

1

0

0

3

0,3135

5

0.1045

0

1

1

3

0,3135

9

0.1045

0

1

0

1

4

0,418

4

0.0406

0

1

0

0

4

0,1624

6

0.0406

0

0

1

1

4

0,1624

7

0.0406

0

0

1

0

1

5

0,203

10

0.0406

0

0

1

0

0

5

0,203

11

0.0406

0

0

0

1

1

5

0,203

13

0.0406

0

0

0

1

0

5

0,203

8

0.0158

0

0

0

0

1

1

6

0,0948

12

0.0158

0

0

0

0

1

0

6

0,0948

14

0.0158

0

0

0

0

0

1

6

0,0948

15

0.0158

0

0

0

0

0

0

1

7

0,1106

16

0.0061

0

0

0

0

0

0

0

7

0,0427

Средняя длина кодового слова:

  1. Кодирование по Хаффману (p=0.28; q=0.72; n=2)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

P=q2=0,5184

2

0

1

P=pq=0,2016

3

1

0

P=pq=0,2016

4

1

1

P=p2=0,0784


б) Располагаем в порядке убывания вероятностей и получаем кодовые слова:

1

1

1

0,5184

1

0,2016

0

0,2016

0

0

0,0784

0

01

001

000

Средняя длина кодового слова:

  1. Кодирование по Хаффману (Р=0.28; q=0.72; n=3)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

0

P=q3=0,3732

2

0

0

1

P=q2p=0,1451

3

0

1

0

P=q2p=0,1451

4

0

1

1

P=qp2=0,0564

5

1

0

0

P=q2p=0,1451

6

1

0

1

P=qp2=0,0564

7

1

1

0

P=qp2=0,0564

8

1

1

1

P=p3=0,0219


б) Располагаем в порядке убывания вероятностей и получаем кодовые слова:

1

0,3752

1

0,1451

2,0016

1

1

0,1451

0,2902

1,6264

1,3362

0

0,1451

0

1

0

1

0,0564

0,1128

0

0,0564

1,1911

0

1

0,0564

0,0783

0

0

0,0219

1

001

011

010

00011

00010

00001

00000

Средняя длина кодового слова:

  1. Кодирование по Хаффману (Р=0.28; q=0.72; n=4)

а) обозначение за 0: q, а за 1: p

N

 

1

0

0

0

0

P=q4=0.2687

2

0

0

0

1

P=q3p=0.1045

3

0

0

1

0

P=q3p=0.1045

4

0

0

1

1

P=q2p2=0.0406

5

0

1

0

0

P=q3p=0.1045

6

0

1

0

1

P=q2p2=0.0406

7

0

1

1

0

P=q2p2=0.0406

8

0

1

1

1

P=qp3=0.0158

9

1

0

0

0

P=q3p=0.1045

10

1

0

0

1

P=q2p2=0.0406

11

1

0

1

0

P=q2p2=0.0406

12

1

0

1

1

P=qp3=0.0158

13

1

1

0

0

P=q2p2=0.0406

14

1

1

0

1

P=qp3=0.0158

15

1

1

1

0

P=qp3=0.0158

16

1

1

1

1

P=p4=0.0061

б) Располагаем в порядке убывания вероятностей и получаем кодовые слова:

1

0,2687

1

1

0,209

0,1045

1

0

0,418

0,1045

1

0,209

0,1045

0

0,9996

0

0,1045

1

1

0,5816

0

0,0812

0,0406

1

0

0,1624

0,0406

1

0,0812

0,0406

0

0,3129

0

0,0406

1

1

0

0,0812

0,0406

0

0,0406

1

0,1505

0,0158

1

1

0

0,0316

0,0158

0,0316

0

0,0377

0

0,0158

1

0

0,0219

0,0158

0

0

0,0061

01

111

110

101

100

00111

00110

00101

00100

00011

00010

000001

000011

000010

0000001

0000000

Средняя длина кодового слова:

Расчёт придельных возможностей источника и сравнение с полученными результатами.

1) При n = 2:

Средняя длина кодового слова:

Кодирование по Шеннану-Фано:

Кодирование по Хаффману:

Оба метода равноценны в данном случаи и удовлетворяют теоретической оценке средней границы.

2) При n = 3:

Средняя длина кодового слова:

Кодирование по Шеннану-Фано:

Кодирование по Хаффману:

Оба метода равноценны в данном случаи и удовлетворяют теоретической оценке средней границы

4) При n = 4:

Средняя длина кодового слова:

Кодирование по Шеннану-Фано:

Кодирование по Хаффману:

Метод Хаффмана более приближен к минимальной границе среднего значения длины кодового слова источника.

Вывод:

В ходе выполнения лабораторной работы можно сделать выводы:

  1. При увеличении длины блоков длина кодовых слов увеличивается, что следует из подсчёта средней длины кодового слова. Также можно сказать, что эффективность повышается так как среднее значение приближается к нижней границе.

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