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

Исследование и моделирование информационных процессов и систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать
неравенству Макмиллана: å
i

a

b

0

0 1

разделимая, но не префиксная. Необходимое условие разделимости даёт следующая теорема.

Теорема 5.2. Если система алфавитного кодирования разделима, то длины ni её элементарных кодов удовлетворяют

1 £1.

2ni

Нетрудно убедиться, что коды, получаемые в результате применения методики Шеннона – Фано или Хаффмена, являются разделимыми, а, например, азбука Морзе разделимой не является хотя бы потому, что в ней присутствуют два кода «.» и «», со-

стоящие из одного символа, которые уже дают

1

+

1

= 1 в не-

1

1

2

2

 

равенстве Макмиллана, а есть же ещё и другие комбинации.

5.5. Помехоустойчивое кодирование

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

символа (трансформации), т.е. 1

может случайно заменяться

0, а 0 – 1.

 

Def. Кодирование, которое

обладает свойством восста-

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

Теоретические основы возможности помехоустойчивого кодирования. Обозначим Es – множество слов, которые могут быть получены из словаS в результате воздействия на него всех ошибок, возможных в данном канале. Например, S = 000. Если канал допускает наличие только одной ошибки(трансформация только одного разряда), то Es = {100, 010, 001}.

Теорема 5.3. Для существования помехоустойчивого кодирования необходимо и достаточно, чтобы " S1, S2 Es1 Es2 = Æ.

91

Приняв какое-либо ошибочное словоS0, необходимо определить, из какого слова оно было трансформировано. Если S0 Î Es1, значит, было передано S1. Поскольку Es1 Es2 = Æ, то перепутать S1 с любым другим словом S2 невозможно.

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

Итак, идея помехоустойчивого кодирования такова.

1)Задаёмся некоторым максимальным числом возможных ошибок в канале.

2)Определяем некоторое множество допустимых словS1, S2, …, Sn и для каждого из них определяем набор ESk “изуродованных” слов.

3)Строим алгоритм распознавания, который по данному полученному слову S0 определяет первоначальное слово Sk.

Пример 5.4. Пусть количество ошибок L в канале равно1. Пусть имеем допустимые слова S1 = 000, S2 = 011, S3 = 101, S4 = 110. Пусть принято слово S0 = 001. Оно могло получиться из S1, S2, S3. Значит, набор допустимых слов выбран неудачно и условия теоремы 5.3 не соблюдены.

Для того чтобы правильно выбирать набор слов, введём понятие “кодовое расстояние”.

Заметим, что S0 не могло получиться из S4 при трансформации одного разряда, поскольку S0 и S4 различаются 3 разрядами, а S0 и S1, S2, S3 – одним разрядом.

Def. Пусть S1 и S2 – два различных слова. Расстоянием Хемминга между словами S1 и S2 называется число несовпадающих разрядов в двоичном представленииS1 и S2. Обозначается d(S1, S2). Например, для данных примера 4.4 d(S1, S2) = 2, d(S0, S1) = 1, d(S0, S4) = 3.

Имеет место формула d(S1, S2) = | S1 Å S2| – число единиц в слове S1 Å S2. Операция Å – сложение по mod 2 (несовпадение).

Таблица:

0 Å 0 = 0

92

1

Å 0

= 1

0

Å 1

= 1

1

Å 1

= 0.

Def. Кодовое расстояние d = min d (Si , S j ) – минимум по

i¹ j

всем допустимым парам слов.

Например, для S1, S2, S3, S4 из примера 4.4 d = 2.

Пусть максимальное возможное значениеL известно. Рассмотрим множество Es1 какого-нибудь допустимого слова S1. Оно образовано следующими словами:

- Z1, полученных посредством ошибки в одном разряде;

для них d(S1, Z1) = 1:

-Z2, полученных посредством ошибок в2-х разрядах; для них d(S1, Z2) = 2;

-ZL, полученных посредством ошибок вL разрядах; для

них d(S1, ZL) = L.

Рассмотрим теперь Es2 , где S2 – тоже разрешённое слово. Все элементы из Es2 находятся от S2 на расстоянии не более, чем L. Следовательно, для выполнения условия теоремы5.3, т.е. чтобы Es1 Es2 = Æ, надо чтобы d(S1, S2) > 2·L. Следовательно, множество разрешённых слов надо выбирать из условияd > 2·L, где L – максимальное число ошибок.

Пример 5.5. Пусть L = 1. Тогда среди 3-разрядных слов разрешёнными будут только S1 = 000 и S2 = 111. Для них d =3>2.

Тогда Es1 = {001, 100, 010}; Es2 = {011, 101, 110}.

Рассмотрим простейший вариант кодирования, когда L = 1. Пусть необходимо кодировать всеm-разрядные двоичные слова. Для обеспечения условия d > 2 необходимо в m-разрядные слова добавить дополнительные разряды. Обозначим k – число дополнительных разрядов. Тогда общая длина передаваемых слов будет n = m + k. Если в нём содержится всего один ошибочный разряд, то возможное число ошибочных комбинаций равноn, т.к. ошибка может быть в любом из разрядов. Кроме того, слово может не содержать ошибки, это ещё одна возможная комбинация.

Следовательно, максимально возможное число комбинаций с ошибками равно m + k +1.

93

Очевидно, что количество возможных кодовых комбинаций, порождаемых k дополнительными разрядами должно быть не меньше, чем m + k +1. Это даст возможность для каждой возможной ошибочной и безошибочной комбинации в слове подобрать соответствующую комбинацию дополнительных разрядов, чтобы с её помощью как-то среагировать на ошибочную ситуацию.

Из комбинаторики известно, что k двоичных разрядов могут породить 2k различных кодовых комбинаций. Это означает, что соотношение

2k ³ m + k + 1

(5.3)

является необходимым условием существования помехоустойчивого кода при L = 1. Например, при m = 1 должно быть k = 2, т.к. 22 = 4 ³ 1 + 2 + 1.

Можно также доказать, что условие (5.3) является достаточным для существования кода, обеспечивающего кодовое расстояние d > 2. Такой код был изобретён Ричардом Хеммингом.

В середине 1940-х годов Р. Хэмминг работал в компании Bell Labs на счётной машине Bell Model V. Это была электромеханическая машина, основанная на релейных блоках. Данные вводились в машину с помощью перфокарт. В процессе чтения часто происходили ошибки, и Хэмминг ужасно раздражался, когда должен был перезагружать свою программу из-за ненадежности перфокарт. На протяжении нескольких лет он проводил много времени над построением эффективных алгоритмов автоматического исправления ошибок и в1950 году опубликовал способ, который на сегодняшний день известен каккод Хэмминга и уже на протяжении более полувека считается одним из лучших принципов помехоустойчивого кодирования.

Описание кода Хэмминга. Пусть, как и ранее, речь идёт о простейшем варианте для L = 1. Для понимания принципа кода Хэмминга рассмотрим свойства операции Å.

1.Операция Å коммутативна и ассоциативна.

2.Пусть S1, …, Sn – 1-разрядные слова. Тогда

94

S1 Å S2 ÅÅ Sn =

ì0, если общее число единиц в словах чётно

í .

î1, если нечётно

3.Пусть S = S1 Å S2 ÅÅ Sn. Тогда S Å S1 Å S2 ÅÅ

Sn = S Å S = 0.

4.S1Å... Å Si Å...Å Sn = S1Å...Å Sn . То есть если заменить одно слагаемое, то изменится вся сумма.

Определим следующие последовательности натуральных чисел в соответствии с их двоичным представлением.

V1 = 1, 3, 5, 7, 9, 11,… – все числа у которых 1-й разряд справа равен 1.

V2 = 2, 3, 6, 7, 10, 11,… – все числа у которых2-й разряд справа равен 1.

V3 = 4, 5, 6, 7, 12, 11, 12, … – все числа у которых 3-й раз-

ряд справа равен 1.

Каждая последовательность Vi начинается с числа 2i–1. Пусть имеем произвольное n-разрядное двоичное слово, где

n = m + k. Рассмотрим в нём k разрядов с номерами(считая

справа) 20 =1, 21 =2, 22 = 4,… , 2k–1. Эти разряды назовём

контрольными, а остальные m разрядов – информативными.

Предположим теперь, что надо закодироватьm-разрядное слово S = am, am–1, …, a1. Образуем из S новое n-разрядное слово Q, поместим в его информативные разряды слово S, как оно есть, без изменения, а контрольные разряды определим следующим образом:

b1 = b3 Å b5 Å b7… – т.е. сложим все разряды, номера которых входят в V1.

b2 = b3 Å b6 Å b7… – т.е. сложим все разряды, номера которых входят в V2.

b4 = b5 Å b6 Å b7… – т.е. сложим все разряды, номера которых входят в V3.

Получим Q = bn, bn–1, … b1 и передадим его по каналу. Пример 5.6. Пусть m = 1. Согласно примеру 5.5 должно

быть k = 2. Тогда b1 = b3 = b2, а b3 – информативный разряд.

95

Следовательно, при S = 0 мы получим Q = 000, a при S = 1 будет Q = 111, что совпадает с данными примера 5.2.

Пусть теперь после прохождения по каналу было принять слово Q ‘ = cn, cn–1, … c1 ¹ Q¢. Согласно принятому допущению, при передаче изменился только какой-то один разряд. Обозначим

I – номер этого ошибочного разряда. Из двоичных символов принятого слова Q¢ составим двоичное числоJ по следующему правилу. Обозначим J = je, je–1,…, j1 и положим

j1 = c1 Å c3 Å c5 Å c7 Å… – сложим все разряды с номерами из V1.

j2 = c2 Å c3 Å c6 Å c7 Å… – сложим все разряды с номерами из V2. И т.д.

Утверждение I = J. То есть полученное числоJ равно номеру ошибочного разряда слова Q¢.

Доказательство. Покажем, что все разряды числа I = … i2, i1 совпадают с разрядами числа J.

1) Предположим, что i1 = 0. Это означает, что нет ошибки в разрядах с номерами 1, 3, 5,… (т. е. I ¹ 1, 3, 5,… ) и число I не совпадает ни с одним числом из последовательностиV1. То есть разряды с этими номерами приняты правильно и c1 = b1, c3 = b3, c5 = b5 и т.д.

Но тогда j1 = c1 Å c3 Å c5 Å c7 Å… = b1 Å b3 Å b5 Å b7 Å… = b1 Å (b3 Å b5 Å b7 Å…) = b1 Å b1 = 0 по свойству 3 опе-

рации Å. Т.е. если i1 = 0, то j1 = 0.

2) Предположим, что i1 = 1. Это означает, что ошибка может быть либо в 1-м, либо в 3-м, либо в 5-м и т.д. разрядах, образующих V1.

Так как ошибка одна, то среди чисел c1, c3, c5… только одно не совпадает с числамиb1, b3, b5…. Пусть это будет cp, т.е.

cp = bp . Тогда j1 = b1 Å b3 Å bp

Å… = (по свойству 4) =

=

 

=

 

=

 

 

= 1. То есть если i1 = 1, то

 

 

b1Åb3 Å...

b1Å (b3 Å...)

b1Åb1

j1 = 1.

Рассуждая аналогично, получим, что ie = je, что и требовалось доказать.

96

Пример 5.7. Пусть m = 6 и надо передать слово S = 1 1 0 0 1 1 = a6, a5, …, a1. Из условия (5.3) подбираем число k контрольных разрядов. Очевидно, k = 4, т.к. 16 = 24 ³ 6 + 4 + 1 = 11. Следовательно, контрольные разряды имеют номера 1, 2, 4, 8. Отсю-

да Q = a6, a5, b8, a4, a3, a2, b4, a1, b2, b1 = b10, b9, b8, b7, b6, b5, b4, b3, b2, b1.

Вычислим контрольные разряды. V1 = 1, 3, 5, 7, 9.

V2 = 2, 3, 6, 7, 10.

V3 = 4, 5, 6, 7.

V4 = 8, 9, 10.

b1 = b3 Å b5 Å b7Å b9 = a1Å a2 Å a4 Å a5 = 1Å 1 Å 0 Å 1 =1 b2 = b3 Å b6 Å b7Å b10 = a1Å a3 Å a4 Å a6 = 1Å0Å0Å1 = 0 b4 = b5 Å b6 Å b7 = a2 Å a3 Å a4 = 1Å 0 Å 0 = 1.

b8 = b9 Å b10 = a5 Å a6 = 1Å 1 = 0.

Q = 1 1 0 0 0 1 1 1 0 1 – контрольные разряды подчёрк-

нуты.

1) Пусть слово передали без ошибок.

j1 = c1 Å c3 Å c5 Å c7 Å с9 = 1Å 1 Å 1 Å 0 Å 1 = 0.

j2 = c2 Å c3 Å c6 Å c7 Å с10 = 0Å1Å0Å0Å1 = 0. И т.д. J = 0. 2) Пусть ошибка в 4-м разряде: Q’ = 1 1 0 0 0 1 0 1 0 1. j1 = c1 Å c3 Å c5 Å c7 Å с9 = 1Å 1 Å 1 Å 0 Å 1 = 0.

j2 = c2 Å c3 Å c6 Å c7Å с10 = 0 Å 1 Å 0 Å 0 Å 1 = 0. j3 = c4 Å c5 Å c6 Å c7 = 0 Å 1 Å 0 Å 0 = 1.

В других числах разряда с4 нет. Следовательно, J = 1002 = 410.

Для исправления надо поменять с4 на с4 . Для решения задач кодирования можно использовать таблицу последовательностейVi из приложения 2. Аналогичные методы кодирования применяются, когда максимальное число ошибок L > 1.

Контрольные вопросы и задания

1.Что такое кодирование в широком и узком смысле ?

2.Что такое пропускная способность канала связи ?

3.Как строится кодовое дерево по методике Хаффмана ?

4.В чём суть требования разделимости кодов ?

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

97

6. Является ли следующая схема алфавитного кодирования a ® 0, b ® 10, c ® 011, d ® 1011, e ® 1111

префиксной ? Разделимой ?

7. Построить оптимальное префиксное алфавитное кодирование для алфавита{а,6,с,d} со следующим распределением вероятностей появления букв:

pа = 1/2, pb = 1/4, pc = pd =1/8.

8.Доказать теорему 5.1 самостоятельно.

5.6.Сетевой уровень: поиск максимального потока в сети

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

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

p0 log2 (p0) – (1 – p0) log2 (1 – p0) + p0 log2 (M – 1) = H(x) – n C ,

где n – длина кода; М – число передаваемых сообщений (букв); H(x) – энтропия источника сообщений.

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

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

98

2.Структура передающей сети, как правило, очень сложна,

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

Постановка задачи. Имеем ориентированный граф G = (V, E), в котором каждая дуга e Î E снабжена некоторым весом

q(e) ³ 0 – пропускной способностью дуги. Кроме того, задана начальная вершина s – исток и конечная вершинаt – сток. Такой

®

граф называется сетью, обозначается S = {G, q , s, t}

(рис. 5.6).

Рис. 5.6. Пример сети. Цифры у дуг – их пропускные способности: вершина 1 – исток; вершина 6 - сток

Def. Набор чисел x(е), определённый на дугах e Î E называется потоком в дугах, если выполнены следующие условия

 

 

ì-z, при u = s

 

" u Î V å x(y,u) -

 

ï

(5.4)

å x(u,x) = í+z, при u = t .

yÎГ +(u )

xÎГ -(u )

ï

 

 

 

î0, при u ¹ s,t

 

" e Î E 0 £ x(e) £ q(e).

(5.5)

z ³ 0 называется величиной потока в сети(или мощностью источника).

99

Здесь Г + (u) – это множество начальных вершин дуг, входящих в u, Г (u) – множество конечных вершин дуг, выходящих из u. Условие (5.4) – уравнения сохранения потока(баланса):

сумма потоков, втекающих в вершину u ¹ s, t, равна сумме вытекающих. При u = s сумма потоков равна мощности источника.

Рис. 5.7. Пример сети

Задача состоит в поискеmax z и определении чиселx(е), при которых этот max достигается при соблюдении (5.4), (5.5).

Метод решения задачи. Задача поиска максимального потока легко сводится к задаче линейного программирования. Для этого вводится целевая функция z, которую надо максимизировать при ограничениях (5.4), (5.5). На рис. 5.7 приведена сеть, для которой надо решить задачу о максимальном потоке. Величина пропускной способности ребра указана в скобках. В приложении 4 приведён документ MathCAD решения задачи.

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]