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

Сборник задач по дисциплине «Информатика» для ВУЗов. Методические указания к проведению практических занятий по дисциплине «Информатика», для студенто

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
41
На первом этапе построения кода Шеннона-Фано формируется таб­лица абсолютных частот символов.
Символ
Абсолютная частота
i
Символ
Абсолютная частота
i
7 4 5 1 2 3 6 1 3 3 И 1
Н 2 Пробел 1
Для получения кодовых комбинаций строится кодовое дерево. При формировании кода Шеннона-Фано дерево строится от корня к листьям (в отличие от настоящего дерева здесь корень располагается вверху, а листья – внизу). В качестве корня используется множество всех символов алфави­та сообщения, упорядоченное (ранжированное) по частоте встречаемости символов. Число сверху таблицы указывает на количество символ ходном
сообщении (см. следующий рисунок).
ов в ис-
Затем множество символов делят на два подмножества так, чтобы новые подмножества имели равные (насколько это возможно) суммарные частоты встречаемости входящих в них символов. Например, вес 11 жела­тельно разделить на два подмножества 5 и 6, деление на подмножества 4 и 7 будет ошибочным. Два новых подмножества соединяются с корнем дере­ва ветвями, становясь потомками. Левая ветвь де лом 1, а прав
ая ветвь – символом 0.
рева обозначается симво-
Полученные подмножества рекурсивно делятся до тех пор, пока не будут сформированы листья дерева – отдельные символы сообщения.
42
Кодовые комбинации (на предыдущем рисунке они указаны в ка­вычках под соответствующими листьями) получаются при движении от корня дерева к кодируемому символу-листу путём объединения (конкате­нации) бит, присвоенных пройдённым ветвям дерева. Запись кодовой ком­бинации ведут в направлении от старших разрядов к младшим. Например, при кодировании символа «3» сначала следует п множеству
{3, Н, 5, 6, И, Пробел}. При этом в кодовую комбинацию нужно
ройти по правой ветви к
записать бит 0. Затем нужно пройти по левой ветви к множеству {3, Н} (к кодовой комбинации добавляется бит 1). Наконец, нужно пройти по левой ветви, чтобы достичь листа «3». Таким образом, получена кодовая комби­нация «011».
При декодировании биты считываются из входног зуются, как у
казатели направления движения по кодовому дереву от корня
о потока и исполь-
к искомому листу. При достижении листа найденный символ записывается в выходной поток, а движение по кодовому дереву снова начинают от кор­ня. Например, декодирование комбинации «010» происходит следующим образом. Из потока данных считывается бит 0, следовательно, нужно прой­ти по пр
авой ветви от корня дерева к узлу
{3, Н, 5, 6, И, Пробел}. Следую­щий бит единичный, что требует пройти по левой ветви к множеству {3, Н}. Наконец, следующий бит 0 приводит декодер по правой ветви к листу «Н».
В следующей таблице приведены все разрешённые комбинации по­лученного кода Шеннона-Фано. Это так называемы Он передаётс
я на приёмную сторону вместе с архивом.
й словарь сообщения.
43
Символ Кодовая комбинация Символ Кодовая комбинация
7 11 5 0011 2 10 6 0010 3 011 И 0001
Н 010 Пробел 0000
Закодированное сообщение будет иметь вид:
000101001000000010011110111010110011111001111
Общая длина закодированного сообщения составляет 45 бит.
Средняя длина кодовой комбинации равна (напомним, что число символов в сообщении – 16):
45
n 
16
2,813
бит/символ.
Избыточность сообщения после архивации снизилась до значения:
2, 781

1 100% 1,13%
L


2,813

.
Несложно убедиться, что применение кода Шеннона-Фано позволи­ло существенно уменьшить избыточность сообщения. При равномерном кодировании рассмотренного сообщения с помощью кодовой таблицы CP-
1251 пришлось бы передать не 45 бит, а 128 бит.
44
4. Задания для выполнения практической работы
«Сжатие информации методом Шеннона-Фано»
4.1. Выполнить сжатие заданного текста методом Шеннона-
Фано. Вычислить коэффициент сжатия.
Табл. 6.1.
За-
дача
1 Брось везунчика в воду, и он выплывет с рыбой в зубах. 2 Кто ничего не имеет, всегда готов поделиться с другими. 3 Иногда большая часть побеждает лучшую. 4 Культураэто умение материться без мата. 5 Чем длиннее руки у рыбака, тем меньше веры его рассказам. 6 Когда женщина ярка, она чаще всего к тому же и шумлива. 7 Диплом позволяет ошибаться значительно увереннее. 8 Опираться можно только на то, что оказывает сопротивление.
9 Стадо легче погонять, чем заворачивать. 10 Ни одно доброе дело не остаётся безнаказанным. 11 Лучше быть предметом зависти, чем сострадания. 12 Острить и занимать деньги нужно внезапно. 13 Тот, кто не разбирается ни в чём, может взяться за что угодно. 14 Кто ясно мыслит, тот ясно излагает. 15 Срочное слишком часто путают с важным. 16 Монологэто беседа начальника с подчинённым.
Домашнее задание
Выполнить сжатие номера зачётки методом Шеннона-Фано.
Текст
45
Практическая работа 7
«Помехоустойчивый код Хэмминга»
1. Цель работы
Получить представление о методах помехоустойчивого кодирова-
ния.
2. Связь с другими темами практических работ
Данная практическая работа опирается на предыдущие работы и со­вместно с последующими работами позволяет понять принципы кодирова­ния информации.
3. Теоретические сведения и расчётные формулы
При работе устройств вычислительной техники и телекоммуникаци­онной аппаратуры возможно появление ошибок в обрабатываемых данных. Причинами сбоев могут быть мощные электромагнитные помехи, малый уровень принимаемого сигнала (например, от космического аппарата, на­ходящегося на комете), резкое изменение напряжения питания, старение радиоэлементов, ненадёжный контакт разъёмов, радиоактивное излучение естественных и искусственных источников и т.п. Сбо
и проявляю случайного изменения одного или нескольких битов машинного слова (вместо единицы в отдельных разрядах передаётся ноль или наоборот).
Автоматическое обнаружение и исправление ошибок сопровождает­ся введением избыточности в передаваемые или хранимые данные. Для этих целей разработаны специальные коды, в которые помимо информаци­онных битов
биты
kkk ...
21
. Контрольные биты позволяют проверять целостность (неис-
m
дополнительно вводят контрольные (проверочные)
bbb ...
n
21
кажённость) информационных битов машинного слова, а наиболее слож­ные коды могут не только обнаружить, но и исправить неверно принятые биты.
Разработанные помехоустойчивые коды позволяют решать разные задачи: обнаружить одиночную ошибку, обнаружить и исправить единст­венную ошибку, обнаружить и исправить несколько ошибок. Первые коды
льные
называются обнаруживающими, а оста
корректирующими кода-
ми.
Простейший код, предназначенный для обнаружения одной ошибки (точнее – для обнаружения нечётного числа ошибок), основан на добавле­нии к информационным битам одного контрольного бита. При этом кон-
тся в виде
46
трольный бит должен быть таким, чтобы суммарное число единиц в обра­зованном машинном слове было чётным. Добавляемый бит называется би-
том паритета (чётности).
Проверочный бит k для n-битного двоичного слова
bbb ...
21
вычисля-
n
ется по формуле:
1...,1
k
 
21
21
bbbесли
n
0...,0
bbbесли
n
В результате такого преобразования формируется (n+1) – битное слово
, число единиц в котором будет чётное.
kbbbn...
21
Рассмотрим пример.
Пример 1.
Пусть дан байт 10111100.
Решение.
Число информационных единиц в этом байте нечётное, поэтому бит паритета нужно установить равным единице. В результате этого получает­ся машинное слово 101111001.
Рассмотрим пример нахождения искажённого бита с помощью кода Хэмминга. Места расположения информационных битов (ИБ) и контроль­ных битов (КБ) в пер верхней строке таблицы записан п
едаваемых данных указаны в следующей таблице. В
орядковый номер каждого бита в ма­шинном слове. Раз. 12 11 10 9 8 7 6 5 4 3 2 1
ИБ
b 7b 6b 5b
8
КБ
b
4
k
8
b
3
b
2
k
4
b
1
k 1k
2
Форма записи машинного слова, приведённая в предыдущей таблице, выбрана такой с целью повышения наглядности (из методических сообра­жений). Фактически данные представляют единым двенадцатибитным ма­шинным словом:
.
kkbkbbbkbbbb
121423485678
Пример 2.
Предположим, что в процессе передачи некоторых данных про­изошло искажение одного информационного бита и на приёме получены указанные в следующей таблице данные. Требуется найти и исправить ис­кажённый информационный бит. Разряд 12 11 10 9 8 7 6 5 4 3 2 1
Слово
b 7b 6b 5b 8k
8
b
4
b
b 4k 1b 2k 1k
3
2
ИБ 1 0 0 0 1 1 0 1 КБ 0 1 0 0


47
Решение.
Вычислим значения контрольных битов на приёме. Расчёт произ-
водится по формулам [7]:
`
1
` 2
` 4
`
8
;
bbbbk
8432
bbbbk
8765
;
bbbbbk
75421
;
bbbbbk
76431
.
Используя предыдущие формулы и исходные данные, получим значе-
ния контрольных битов на приёме:
`
1
`
2
`
4
`
8
;000101
k
;100111
k
;11110
k
.11000
k
Расчёты показывают, что контрольные биты, сформированные на передающей и приёмной сторонах, различаются:
`
1
` 21
`
42
`
84
.;;;
kkkkkkkk
8
Различие контрольных битов, сформированных на передающей и приёмной сторонах, говорит о том, что в процессе передачи произошло искажение машинного слова. Теперь необходимо определить, какой имен­но бит был принят неверно.
Для определения неверно принятого бита требуется вычислить так
называемый синдром
`
11
, где
ssssS
1248
`
221
`
442
`
.;;;
kkskkskkskks
8
884
Используя результаты расчётов и исходные данные, можно опреде-
лить четыре бита синдрома:
ssss
Перевод синдрома S = 1010 тичную СС даёт значение S = 10
10.
десятый разряд принятых данных (b
8421
из двоичной системы счисления в деся-
2
Десятичное число 10 говорит о том, что
) искажён, и этот бит нужно исправить
6
.101;011;101;000
(проинвертировать). Таким образом, после корректировки принятые дан-
ные будут иметь вид, показанный в следующей таблице. Напомним, что счёт разрядов ведётся справа налево.
Разряд 12 11
Слово
b 7b 6b 5b 8k
8
ИБ 1 0
9 8 7 6 5 4 3 2 1
10
b
4
0 1 1 0 1
1
b
3
b
k
2
4
b
k
1
k
2
КБ 0 1 0 0
1
48
4. Задания для выполнения практической работы «Помехоустойчивый код Хэмминга»
4.1. Определить искажённый разряд в предложенной двоичной
последовательности.
Таблица 7.1
Зада-
ча.
10 1 0 1 0 0 0 0 0 0 1 0 0 11 1 0 1 0 0 1 1 1 1 0 0 0 12 1 0 0 0 0 0 1 1 1 0 0 0 13 1 1 0 0 0 1 1 0 1 0 1 0 14 1 1 0 0 1 0 0 1 0 0 0 0 15 1 0 1 0 1 1 0 0 0 0 1 0 16 0 0 1 0 0 1 1 0 1 0 1 1
сформировать бит паритета.
ровать контрольные биты с помощью кода Хэмминга.
b 7b 6b 5b 8k
8
b
4
b
b 4k 1b 2k 1k
3
2
1 1 0 0 1 1 0 0 1 0 0 1 1 2 1 0 0 0 0 0 1 0 0 1 1 1 3 1 1 1 0 1 0 1 1 0 0 1 1 4 1 1 0 0 0 1 1 0 0 1 1 0 5 1 1 0 1 0 0 0 1 0 1 0 1 6 1 1 1 0 0 1 0 0 0 1 1 1 7 1 0 0 1 1 0 1 0 0 0 0 0 8 0 0 0 0 1 0 1 1 1 1 0 0 9 1 1 1 0 1 0 0 0 1 0 1 0
Домашнее задание
1. Преобразовать десятичный номер зачётки в двоичное число и
2. Последнюю цифру зачётки перевести в двоичное число. Сформи-
49
Практическая работа 8
«Помехоустойчивый код БЧХ»
1. Цель работы
Получить представление о методах помехоустойчивого кодирова-
ния.
2. Связь с другими темами практических работ
Данная практическая работа опирается на предыдущие работы и по-
зволяет понять принципы кодирования информации.
3. Теоретические сведения и расчётные формулы
Устранить две ошибки (и более) в принятых данных позволяют цик-
лические коды Боуза-Чоудхури-Хоквингема (БЧХ).
Циклический код БЧХ v(x) на передающей стороне формируется сле-
дующим образом [8]:
где x – фиктивная переменная; u(x) - кодируемая последовательность данных (информационные биты, сообщение); n – число бит в передаваемых данных (суммарное число информационных и контрольных бит); k - число информационных бит в машинном слове; mod - операция вычисления ос­татка от деления; + - операция конкатенации (соединения, склеивания) ин­формационных и контрольных битов; g(x) – порождающий полином.
В приведённом выше выр
ажении первое слагаемое описывает ин формационные биты, сдвинутые влево на описывает контрольные биты.
Выберем одну из разновидностей БЧХ с кодовой последовательно-
стью длиной n = 15. Данный код формируется с помощью порождающего полинома восьмой степени (r = 8):
Число информационных разрядов в таком коде k = n – r = 15 – 8 = 7.
Код позволяет исправить две ошибки (s = 2).
Рассмотрим порядок построения циклического кода БЧХ на пере-
дающей стороне.
Дано 7 информационных бит 1011011. Запишем информационные
биты в виде полинома:
knkn
knx
разрядов. Второе слагаемое
4678
.1)(
xxxxxg
, (1)
)))(mod()(()()( xgxuxxuxxv
-
x
50
346
. (2)
1)(
xxxxxu
Порядок построения полинома u(x) иллюстрирует следующая таблица:
Номера
6 5 4 3 2 1 0
разрядов Слагаемые
6
x 5x
4
x 3x 2x
1
Таблицу нужно трактовать следующим образом: если в соответст­вующем разряде данных информационный бит равен единице, то в поли­ном нужно включить нижерасположенный член ряда. Этим объясняется
2
5
и
отсутствие в полиноме (2) слагаемых
.
x
x
Для нахождения первого слагаемого в выражении (1) нужно поли-
8
ном (2) умножить на
):
8715 kn
kn
)(xux
x (заметим, что число контрольных битов
891112143468
)1( xxxxxxxxxx
. (3)
Смысл предыдущей операции очень прост: информационные разря­ды за счёт умножения на
8
смещаются влево на восемь позиций (в сторону
x
старших разрядов). Это сделано для того, чтобы разделить информацион­ные и контрольные биты (информационные разряды будут располагаться в передаваемых данных слева, а контрольные биты – справа).
Для нахождения контрольных битов нужно найти остаток от деления полинома (3) на порождающий полином g(x):
467889111214
)1mod()(
xxxxxxxxx
2356
. (4)
1
xxxx
Именно контрольные биты (4) позволяют на приёмной стороне оп­ределить, есть ли искажения и при необходимости восстановить неверно принятые биты. Сформированный в соответствии с (1) помехоустойчивый код описывается полиномом:
235689111214
. (5)
1)(
xxxxxxxxxxv
Чтобы проверить верно ли сформирован полином (5), достаточно его разделить на порождающий полином g(x). Если остаток от деления равен нулю, то код сформирован правильно. В соответствии с полиномом (5) в линию нужно передать двоичный код:
101101101101101. (6)
Несложно заметить, что первые семь бит сформированного кода полностью совпадают с информационными битами (с сообщением). Сле­дующие восемь бит являются ко
нтрольными. Соотношение между числом информационных и контрольных битов наглядно показывает, почему такие коды называют избыточными.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]