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

УП Информатика

.pdf
Скачиваний:
73
Добавлен:
22.03.2015
Размер:
549.79 Кб
Скачать

1, а с меньшей – 0. Такое последовательное ветвление продолжается до тех пор, пока не дойдем до каждой буквы (см. рис. 8).

Теперь, двигаясь по кодовому дереву сверху вниз, для каждой буквы можно записать соответствующую ей кодовую комбинацию:

z1

z2

z3

z4

z5

z6

z7

z8

 

01

00

111

110

100

1011

10101

10100

[1]

3.4. Кодирование по методу четности – нечетности

Кодирование с контролем четности (нечетности) является простейшим видом помехоустойчивого кодирования. Метод состоит в следующем.

Вматематическом коде выделяется один контрольный разряд k.

Ккаждому двоичному числу добавляется один избыточный разряд и в него записывается 1 или 0 с таким условием, чтобы сумма цифр в каждом числе по модулю 2 была равна 0 для случая четности или 1 для случая нечетности. Появление ошибки в кодировании обнаружится по нарушению четности (нечетности). При таком кодировании допускается, что может возникнуть только одна ошибка. Пример реализации метода четности представлен в табл. 11.

 

 

Таблица 11

 

 

 

Число

Контрольный

Проверка

 

 

Разряд

 

 

 

 

 

 

10101011

1

0

 

11001010

0

0

 

10010001

1

0

 

11001011

0

1 – нарушение

 

 

 

 

 

Такое кодирование имеет минимальное кодовое расстояние, равное 2.

Можно представить и несколько видоизмененный способ контроля по методу четности – нечетности, используя так называемые матричные проверки, и производить суммирование не только по

51

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

а1

а2

а3

а4

а5

k1

а6

а7

а8

а9

а10

k2

а11

а12

а13

а14

а15

k3

а16

а17

а18

а19

а20

k4

а21

а22

а23

а24

а25

k5

k6

k7

k8

k9

k10

kj

sj

Увеличение избыточности информации приводит к тому, что появляется возможность не только обнаружить ошибку, но и исправить ее. Пусть произошла неисправность в каком-то из разрядов этого числа (представим, что разряд а18 изменил состояние). Это

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

слева столбец. Следовательно, нарушение четности по этой строке и столбцу можно зафиксировать, что в конечном счете означает обнаружение не только самой ошибки, но и места, в котором возникла ошибка. Изменив содержимое отмеченного разряда (в данном случае а18 ) на противоположное, можно исправить ошибку.

П р и м е р . Определить и исправить ошибку в передаваемой информации вида

1

0

0

1

1

1

0

0

0

1

1

1

0

1

0

1

0

1

0

1

0

1

1

0

1

0

0

1

0

1

0

1

1

0

0

0

1

1

0

1

0

1

1

1

0

0

0

0

1

0

1

1

kj

 

0

1

0

0

0

0

0

 

sj

52

Для контроля использован метод четности по строкам и столбцам (контрольный столбец 8, контрольная строка 6).

Р е ш е н и е . Осуществим проверку на четность по каждой строке:

s1 = 0; s2 = 1; s3 = 0; s4 = 0; s5 = 0.

Затем проверим на четность информацию по столбцам:

s6 = 0; s7 = 1; s8 = 0; s9 = 0; s10 = 0; s11 = 0; s12 = 0.

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

Ответ:

1

0

0

1

1

1

0

0

1

0

1

0

1

0

1

0

0

1

0

1

1

0

1

0

1

0

1

0

1

1

0

0

1

1

0

1

0

1

1

1

 

 

 

 

 

 

 

 

0

0

0

1

0

1

1

kj

Контроль по методу четности – нечетности широко используют в ЭВМ для контроля записи, считывания информации в запоминающих устройствах на магнитных носителях, а также при выполнении арифметических операций [1].

3.5. Коды Хемминга

Коды Хемминга позволяют не только обнаруживать ошибки, но и исправлять их.

Для построения кода необходимо определить: количество контрольных разрядов; общую структуру кода и места расположения контрольных разрядов; те позиции кода, которые контролируются

53

каждым из контрольных разрядов; способ построения опознавателя ошибок.

1. Определение количества контрольных разрядов k.

Так как допускается искажение какого-либо одного информационного или контрольного разряда или отсутствие искажения, то общее количество возможных ситуаций равно: m + k + 1, где m – количество информационных разрядов.

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

2k >= m + k + 1.

П р и м е р . Если m = 4, то из этого неравенства находим, k = 3 (так как

23 >= 4 + 3 + 1).

Практически можно получить следующие значения:

Количество

Количество

информационных

контрольных

разрядов m

разрядов k

 

1

2

2

– 4

3

5 – 11

4

12

– 26

5

27

– 57

6

2. Расположение контрольных разрядов в коде Хемминга определяется соображениями удобства построения опознавателя. Поэтому они располагаются последовательно справа налево в позициях, номера которых являются степенями двойки. Информационные разряды кода занимают оставшиеся свободные позиции. Таким образом, общая структура кода при m = 4 имеет вид:

7

6

5

4 = 22

3

2 = 21

1 = 20

a4

a3

a2

k3

a0

k2

k1

 

 

 

 

 

 

 

54

3. Для того чтобы определить, какие позиции кода контролируются каждым из контрольных разрядов, строят вспомогательную таблицу (табл. 12), строки которой представляют собой двоичные номера последовательности от 1 до (m + k).

 

 

 

Таблица 12

 

 

 

 

 

Номер строки

k3

k2

k1

 

1

0

0

1

 

 

 

 

 

 

2

0

1

0

 

 

 

 

 

 

3

0

1

1

 

 

 

 

 

 

4

1

0

0

 

 

 

 

 

 

5

1

0

1

 

 

 

 

 

 

6

1

1

0

 

 

 

 

 

 

7

1

1

1

 

 

 

 

 

 

Из табл. 12 исключаются строки, в которых присутствует только одна единица (строки 1, 2, 4). Оставшиеся строки позволяют определить контролируемые позиции для каждого контрольного разряда. Номера этих позиций равны номерам строк, в которых в соответствующем столбце стоит единица (строки 3, 5, 6 и 7).

В результате k1 контролирует четность 3, 5 и 7-го разрядов кода; k2 контролирует четность 3, 6 и 7-го разрядов кода; k3 контролирует четность 5, 6 и 7-го разрядов кода.

Выражения для определения контрольных разрядов имеют вид:

k1 = а3 Å а5 Å а7; k2 = а3 Å а6 Å а7; k3 = а5 Å а6 Å а7.

4. В качестве опознавателя используется k-разрядное слово (r3 r2 r1). Его разряды определяются по формулам:

55

r1= k1 Å а3 Å а5 Å а7; r2 = k2 Å а3 Å а6 Å а7; r3 = k3 Å а5 Å а6 Å а7.

П р и м е р . Закодировать по методу Хэмминга число 13. В полученный код ввести одиночную ошибку и с помощью опознавателя определить номер искаженного разряда.

Р е ш е н и е .

1.Число 13 переводится в двоичную систему счисления: 1310 = 11012. Число двоичных информационных разрядов m = 4. Количество контрольных разрядов k = 3 (было определено ранее).

2.Для получения полной структуры кода, значения информационных разрядов подставляются в соответствующие позиции. Общая структура кода

имеет вид: 1 1 0 k3 1 k2 k1.

3. Определяются значения контрольных разрядов: k1 = а3 Å а5 Å а7 = 1 Å 0 Å 1 = 0; k2 = а3 Å а6 Å а7 = 1 Å 1 Å 1 = 1; k3 = а5 Å а6 Å а7 = 0 Å 1 Å 1 = 0.

Значения информационных и контрольных разрядов подставляются в структуру кода. В результате получается искомый код Хемминга:

7

6

5

4 = 22

3

2 = 21

1 = 20

1

1

0

0

1

1

0

 

 

 

 

 

 

 

4. Предполагаем, что в результате сбоя при передаче исказился третий pазряд кода и его единичное значение изменилось на противоположное (нулевое). В результате получен код: 1 1 0 0 0 1 0.

Исходя из нового ошибочного значения кода вычисляется значение опознавателя:

56

r1 = k1 Å а3 Å а5 Å а7 = 0 Å 0 Å 0 Å 1 = 1; r2 = k2 Å а3 Å а6 Å а7 = 1 Å 0 Å 1 Å 1 = 1; r3 = k3 Å а5 Å а6 Å а = 0 Å 0 Å 1 Å 1 = 0.

Опознаватель (r3 r2 r1) = 0112 = 310, т. е. ошибка произошла в третьем разряде.

Инвертируя ошибочный разряд, получаем истинное значение кода: 1 1 0 0 1 1 0.

По методу Хемминга могут быть построены коды разной длины. При этом чем больше длина кода, тем меньше относительная избыточность. Например, для контроля числа, имеющего 48 двоичных разрядов, потребуется только шесть дополнительных (избыточных) разрядов. Коды Хэмминга используют в основном для контроля передачи информации по каналам связи, что имеет место в вычислительных системах с телеобработкой данных или в системах коллективного пользования [5].

Контрольные вопросы

1.Какое кодирование называется помехоустойчивым?

2.Какие методы помехоустойчивого кодирования вам известны?

3.Чем отличаются друг от друга методы помехоустойчивого кодирова-

ния?

4.Как определяется количество контрольных разрядов в методе Хеммин-

га?

5.Какое кодирование называется эффективным?

6.Какие методы эффективного кодирования вам известны?

Задания для самостоятельного решения

1. Используя метод Шеннона – Фано, построить код для букв

заданного алфавита {с1, с2, с3, с4, с5, с6, с7, с8, с9, с10} при следующих вероятностях появления этих букв в передаваемом сообщении:

p1) = 0,15; p2) = 0,05; p3) = 0,03; p4) = 0,08; p5) = 0,11;

57

p6) = 0,09; p7) = 0,02; p8) = 0,07; p9) = 0,22; p10) = 0,18. Про-

верить выполнение условия теоремы Шеннона. Показать, что полученный код является неоднозначным.

2. Для алфавита из задания 1 и тех же вероятностей построить код на основе метода Хаффмена. Проверить условие теоремы Шеннона.

3. Сравнить эффективность различных методов кодирования (для кодов, полученных в заданиях 1 и 2). Сравнение выполнить по среднему числу символов в кодовой комбинации и энтропии.

4. Определить и исправить ошибку в передаваемой кодовой комбинации:

1)

1001110

0

2)

1000110

1

 

1110110

0

 

0111000

1

 

1000111

0

 

1010110

1

 

1010110

0

 

0001010

0

 

1110101

1

 

1110001

0

 

___________

 

__________

 

1111100

 

 

1011001

 

5. Для правильных кодовых комбинаций из задания 4 найти вес каждой комбинации и кодовое расстояние.

6. Закодировать по методу Хемминга числа 9, 23, 37, 48. В полученные коды ввести одиночную ошибку и с помощью опознавателя определить номер искаженного разряда.

4. РАЗРАБОТКА АЛГОРИТМОВ

4.1. Понятие алгоритма

Одним из этапов подготовки решения задачи на ЭВМ является разработка алгоритма, который включает в себя следующие моменты:

58

выбор метода вычислений для решения задачи;

разработку схемы алгоритма;

составление программы на машинном или алгоритмическом языке.

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

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

Алгоритм должен обладать следующими свойствами:

а) детерминированность (определенность) – применение алгоритма к одним и тем же исходным данным должно приводить к одному и тому же результату;

б) массовость – получение результата при решении всех задач данного класса при различных исходных данных;

в) результативность – возможность получения результата за конечное число шагов;

г) дискретность – пошаговый характер определяемого процес-

са;

д) понятность – однозначность всех действий, т.е. исполнитель алгоритма должен знать, как его выполнять.

4.2. Способы описания алгоритмов

Для записи алгоритмов используют следующие способы. Словесный способ – вычислительный процесс представляется в

виде системы последовательности словесных указаний на естественном языке.

Такую форму записи удобно использовать на начальном этапе

59

алгоритмизации задачи. Недостатки словесной формы записи состоят в следующем:

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

естественный язык допускает неоднозначность толкования отдельных инструкций;

при переходе к этапу программирования требуется дополнительная работа по формализации алгоритма, так как словесное описание может быть понятно человеку, но «непонятно» ЭВМ.

П р и м е р 1 . Составить алгоритм поиска наибольшего элемента в одномерном массиве целых чисел.

Словесное описание алгоритма:

1.Ввести массив в память машины.

2.Считать, что максимум равен первому элементу массива.

3.Перейти к следующему элементу и сравнить его с максимумом. Если он не превосходит максимума, то перейти к п. 5.

4.Переопределить максимум, т.е. присвоить ему значение текущего элемента. Запомнить номер максимального элемента.

5.Если проверены еще не все элементы массива, то вернуться к п. 3, иначе вывести номер максимального элемента (если их несколько, то вывести номер последнего из них).

Словесно-формульный способ – вычислительный процесс представляется в виде системы последовательных словесных указаний с применением формульных выражений.

Словесно-формульный способ отличается от словесного большей формализацией описания. Это при незначительном увеличении сложности процесса записи дает много преимуществ, а именно: описание становится более лаконичным, повышается точность и однозначность инструкций, упрощается последующий переход к составлению программы.

Словесно-формульное описание алгоритма (см. пример 1).

1.Ввести количество элементов массива n и массив А[n].

2.Пусть max = A[l]; imax = 1.

60