Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник задач по дисциплине «Информатика» для ВУЗов. Методические указания к проведению практических занятий по дисциплине «Информатика», для студенто
.pdf
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)
Несложно заметить, что первые семь бит сформированного кода
полностью совпадают с информационными битами (с сообщением). Следующие восемь бит являются ко
нтрольными. Соотношение между числом
информационных и контрольных битов наглядно показывает, почему такие
коды называют избыточными.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
