Uploaded by Образовательный

Методичка по теории информации

advertisement
Министерство образования и науки Российской Федерации
ФГБОУ ВПО «Кубанский государственный технологический
университет»
Кафедра компьютерных технологий и информационной безопасности
ТЕОРИЯ ИНФОРМАЦИИ
Методические указания к практическим занятиям
для студентов очной формы обучения
направления подготовки 10.03.01 – «Информационная
безопасность»
Краснодар
2015
Составитель: канд. техн. наук, Т.Т. Зангиев
Теория информации: методические рекомендации по выполнению
практических заданий для студентов очной формы обучения направления
подготовки 10.03.01 – «Информационная безопасность»/ Сост.: Т.Т. Зангиев;
Кубан. гос. технол. ун-т. Каф. компьютерных технологий и информационной
безопасности. – Краснодар: 2015.-118 с.
Методические указания предназначены для выполнения практических
работ по дисциплине «Теория информации » для студентов дневной формы
обучения направления подготовки 10.03.01 – «Информационная
безопасность».
В методических указаниях приведена методика проведения
практических занятий по дисциплине «Теория информации». Содержание
практической работы включает в себя основной теоретический материал,
цели и задачи данного задания, варианты заданий, указания для выполнения
заданий и примеры решение основных типовых задач.
Рецензенты
начальник кафедры информационной безопасности Краснодарского
университета МВД России, канд. техн. наук, доцент Сизоненко А.Б.
проф. кафедры КТИБ КубГТУ, канд. техн. наук, проф. В.Н. Хализев,
Содержание :
Тема. Энтропия и информация
Практическая работа №1 Математические основы
теории информации
Тема. Энтропия и информация
Практическая работа № 2 Количественная оценка информации
Тема. Энтропия и информация.
Практическая работа № 3 Условная энтропия и
энтропия объединения.
Тема. Оптимальное кодирование
Практическая работа №4 Почти оптимальные коды
Тема. Оптимальное кодирование
Практическая работа №5 Оптимальные коды Хаффмана
Тема. Помехоустойчивое кодирование
Практическая работа № 6 Помехоустойчивое кодирование
по Хеммингу
Тема. Линейные коды
Практическая работа № 7 Линейные и циклические коды
4
39
51
69
82
93
109
3
Тема. Энтропия и информация
Практическая работа №1 Математические основы теории информации
1. ОБЩИЕ СВЕДЕНИЯ
Для построения математических моделей теории информационных
процессов, как правило, используются теоретико-множественные методы,
основы комбинаторики и основные разделы теории вероятностей: случайные
события и их вероятности, случайные величины, основные предельные
теоремы для сумм независимых случайных величин.
Изучение и рассмотрение предлагаемых задач и методов будет
способствовать
значительному
повышению
математической
алгоритмической культуры, и позволит сформировать
и
умение разделить
сложный объект на простые составляющие, определить взаимосвязи между
ними.
Множество будем понимать как совокупность определенных и хорошо
различимых объектов, которые рассматриваются как единое целое. При этом
предполагается, что объекты данной совокупности можно отличить друг от
друга и от предметов, не входящих в эту совокупность.
Множество, содержащее все элементы, находящиеся в рассмотрении,
называется универсальным, или универсумом, и обозначается
.
Дополнением к множеству А называется множество, состоящее из всех
тех элементов универсума, которые не принадлежат множеству А.
Множество, в котором нет ни одного элемента, называют пустым
множеством.
Если каждый элемент множества А является элементом множества В,
говорят, что множество А является подмножеством множества В, и
записывают А  В или В  А.
Если каждому элементу множества A сопоставлен единственный
элемент множества B и при этом всякий элемент множества B оказывается
сопоставленным одному и только одному элементу множества A, то говорят,
что между множествами A и B существует взаимно однозначное
4
соответствие. Множества A и B в этом случае называют эквивалентными
или равномощными.
Эквивалентность множеств обозначается следующим образом:
A  B или А  В.
Над множествами можно проводить ряд традиционных действий.
Назовем их:
1. Объединение. Так называется множество C, которое строится по
заданным множествам A и B следующим образом: в него включаются все
элементы из A и все элементы из B. Обозначение: C  A  B. Отсюда
следует, что А  А  В и В  А  В. Аналогично определяется объединение
нескольких множеств.
Пересечение. Так называется множество C, которое строится по
заданным множествам A и B следующим образом: в него включаются все
элементы, принадлежащие одновременно множеству A и множеству B.
Обозначение: C  A  B.
Разность (вычитание). Так называется множество C, которое
строится по заданным множествам A и B следующим образом: в него
включаются все элементы из A, не принадлежащие множеству B.
Обозначение: C  A \ B.
Симметрической разностью множеств А и В (А  В) называется
множество С:
C   A  B \  A  B  .
Для любых множеств A, B, C справедливы следующие тождества:
1. Коммутативность
а) A  B = B  A (для объединения);
б) A  B = B  A (для пересечения).
2. Ассоциативность
а) A  (B  C) = (A  C)  C (для объединения);
б) A  (B  C) = (A  B)  C (для пересечения).
3. Дистрибутивность
а) A  (B  C) = (A  B)  (A  C) (для объединения относительно
пересечения);
5
б) A  (B  C) = (A  B)  (A  C) (для пересечения относительно
объединения).
4. Закон де Моргана
а) A  B = A  B (дополнение к объединению есть пересечение
дополнений);
б) A  B = A  B (дополнение к пересечению есть объединение
дополнений).
5. Идемпотентность
а) A  A = A (для объединения); б) A  A = A (для пересечения).
6. Поглощение
а) A  (A  B) = A; б) A  (A  B)
= A.
7. Расщепление (склеивание)
а) (A  B)  (A  B ) = A; б) (A  B)  (A  B ) = A.
8. Двойное дополнение A = A.
9. Закон исключенного третьего A  A = U.
10. Операции с пустым и универсальным множествами
а) A  U = U; б) A   = A; в) A  U = A; г) A   =  ;
д)  = U; е) U =  .
11. А \ В = A  B .
В комбинаторике рассматривают три типа комбинаций объектов:
размещения, перестановки и сочетания.
При выборе k элементов из n различных элементов принято говорить,
что они образуют комбинации без повторений из n элементов по k. Если
выбор производится из элементов n различных сортов, то рассматриваются
комбинации с повторениями – каждый элемент может входить в
комбинацию несколько раз.
1. Комбинации, отличающиеся друг от друга составом элементов или
их порядком, каждая из которых содержит k элементов, взятых из n
различных элементов, называются размещениями без повторений из n
элементов по k.
6
2. Комбинации, каждая из которых содержит n различных элементов,
взятых в определенном порядке, называются перестановками из n
элементов. Это частный случай размещений, когда k = n.
3. Комбинации, отличающиеся друг от друга составом элементов,
каждая из которых содержит k элементов, взятых из n различных элементов,
называются сочетаниями без повторений из n элементов по k. Порядок
следования элементов не учитывается.
4. Размещениями из n предметов по k с повторениями называются
комбинации, содержащие k предметов (с учетом порядка следования),
причем любой предмет выбирается из множества, содержащего элементы
n сортов, и может входить в комбинацию некоторое число раз (не большее
k).
k
Размещения с повторениями обозначаются An (n).
k
A n ( n)  n m .
Первый элемент может быть выбран n способами, второй элемент
также может быть выбран n способами и так далее, m- й элемент также может
быть выбран n способами. По принципу произведения получаем nm
Комбинации из n предметов, в каждую из которых входят n1
одинаковых предметов одного типа, n2 одинаковых предметов другого типа
и так далее до nk одинаковых предметов k–го типа, где
n1 + n2 +…+ nk = n,
называются перестановками из n элементов с повторениями.
Сочетаниями из n предметов по k с повторениями называются
комбинации, содержащие k предметов (без учета порядка следования),
причем любой предмет выбирается из множества, содержащего элементы
n сортов, и может входить в комбинацию некоторое число раз (не большее
k).
Как видно из этого определения, сочетания с повторениями являются
неупорядоченными множествами, так что расположение элементов в них
несущественно. Различные сочетания отличаются друг от друга входящими в
7
них элементами, причем каждый элемент может входить в сочетание с
повторениями несколько раз.
Сочетания с повторениями можно рассматривать и в случае k > n.
Число возможных различных сочетаний с повторениями из n элементов
по k принято обозначать C kn , и оно может быть найдено по формуле
k
C n  Cnkk 1  Cnnk11 
(n  k  1)!
.
k !(n  1)!
Справедливо следующее рекуррентное соотношение:
k
k 1
k
C n  C n  C k 1.
Событием называется любой факт, который в результате опыта
может произойти или не произойти. Каждый такой факт является
случайным событием.
Предполагается, что каждый «неразложимый» исход идеализируемого
опыта представляется одним и только одним элементарным событием
(ЭС).
Множество всех элементарных событий называется пространством
элементарных событий (ПЭС), а сами элементарные события – точками
этого пространства.
События A и B несовместны, если в одном явлении или при одном
испытании они не могут реализоваться одновременно и появление одного из
них исключает появление другого, то есть A  B  .
Событие является невозможным, если в данном явлении оно
полностью исключено (обозначается индексом  ). Невозможное событие
никогда не наступает в результате воспроизведения эксперимента.
Противоположным событию A называется такое событие A ,
которое заключается в том, что событие A не происходит.
Если в задаче при описании события, вероятность которого следует
определить, присутствуют слова «хотя бы», «по крайней мере», то очень
часто следует вначале найти вероятность противоположного события.
8
Множество  называется достоверным событием. Достоверное
событие всегда наступает в результате однократного воспроизведения
случайного эксперимента.
Условной вероятностью события А при условии, что событие В
произошло, называется следующая величина:
Ρ A|B 
Ρ AB
.
Ρ B 
Событие А называется независимым от события В, если его
вероятность не зависит от того, произошло В или нет, т.е. критерий
независимости:
p( A)  p( A / B)  p( A / B ) .
В противном случае, т.е. когда критерий не выполняется, событие А
зависит от события В.
Зависимость и независимость всегда взаимны, т.е. если событие А не
зависит от события В, то и событие В не зависит от события:
p( B)  p( B / A)  p( B / A) .
Если события А и В независимы, то независимы и каждая из пар: А и В,
А и В , А и В, A и B.
Вероятность суммы несовместных событий A1, ... , An равна сумме
вероятностей этих событий
n
p  A1  A2  … An    p  Ai  .
i 1
Вероятность
суммы
двух
совместных
событий
равна
сумме
вероятностей каждого из событий минус вероятность их совместного
появления:
p(A + B) = p(A) + p(B) – p(AB).
Вероятность суммы трех совместных событий вычисляется по
следующей формуле:
p(A + B + C) = p(A) + p(B) + p(C ) – p(AB) – p(BC) – p(AC) + p(ABC).
Вероятность произведения двух событий равна вероятности одного
из них, умноженной на условную вероятность второго при наличии первого.
9
p( AB)  p( A) p( B / A)  p( B) p( A / B) .
Для независимых событий p( AB)  p( A) p( B) .
Вероятность произведения n событий Ai (i  1, 2, …, n) равна
p( A1  A2  … An )  p( A1)  p( A2 / A1)  p( A3 / A1  A2 )  … p( An / A1  A2  … An1),
где p( Ak / A1  … Ak 1 ) ) – вероятность появления события Ak, при условии, что
события A1, A2 , …, Ak 1 в данном опыте произошли.
В случае независимых событий данная формула упрощается:
p( A1  A2  … An )  p( A1 )  p( A2 )  … p( An ) .
Допустим, что проводится некоторый опыт, об условиях которого
можно сделать n исключающих друг друга предположений (гипотез):
H1 , H 2 ,...,H n ,
H i  H j  , при i  j.
Событие A может появляться совместно с одной из гипотез Нi. Тогда
полная вероятность события A равна
n
p( A)   p( H i )  p( A / H i ) .
i 1
Этой
формулой
обычно
пользуются,
когда
относительно
интересующего нас события A известно, что об условиях, при которых оно
наступает, можно высказать некоторые попарно несовместные гипотезы Н1,
Н2,..., Нn. Известны вероятности этих гипотез P(Нi) и условные вероятности
наступления события A, если верна та или иная гипотеза P(A/Нi).
Формула полной вероятности дает возможность найти вероятность
наступления события A с учетом возможности наступления любой из
гипотез.
Представим, что существует несколько предположений (несовместных
гипотез)
для
объяснения
некоторого
события.
Эти
предположения
проверяются с помощью опыта. До проведения опыта бывает сложно точно
определить
вероятность
этих
предположений,
поэтому
им
часто
приписывают некоторые вероятности, которые называют априорными
(доопытными). Затем проводят опыт и получают информацию, на основании
10
которой
корректируют
априорные
вероятности.
После
проведения
эксперимента вероятность гипотез может измениться. Таким образом,
доопытные вероятности заменяют послеопытными (апостериорными).
В тех случаях, когда стало известно, что событие А произошло,
возникает потребность в определении условной вероятности P(Hi/A). Пусть
событие А может осуществляться лишь вместе с одной из гипотез Hi, (i = 1, 2,
..., n). Известны вероятности гипотез Р(Н1), ..., Р(Нп) и условные вероятности
А, т.е. Р(А/Н1), Р(А/Н2), …, Р(А/Нn).
Так как
AHi = НiА, то Р(АНi) = P(НiА) или P  A P  A / Hi  ,
то отсюда по правилу пропорций получим формулу Байеса:
P  H i / A 
P  Hi   P  A / Hi 
.
P  A
Формула Бейеса для двух событий:
P( H / A) 
P( H )  P  A / H 
.
P( H )  P( A / H )  P( H )  P( A / H )
Из этого выражения видно, что вероятность события H, задаваемая при
условии появления события А, получается из вероятностей событий H и H
и из условной вероятности события А при заданном Н. Вероятности событий
H и H называют априорными (предшествующими), вероятность Р(Н/А)
называют апостериорной (последующей).
Формула Бейеса для более чем двух событий:
P( H i / A) 
P( H i )  P( A / H i )
n
.
 P( H i )  P( A / H i )
i 1
Формулы Бейеса позволяют переоценить вероятности гипотез после
того, как становится известным результат испытания, в итоге которого
появилось событие А.
11
2. ЦЕЛЬ И ПОРЯДОК РАБОТЫ
Цель работы – закрепить и усовершенствовать знания и умения по
построению математических моделей теории информационных процессов с
использованием теоретико-множественные методов, основ комбинаторики и
некоторых разделов теории вероятностей: случайные события и их
вероятности, случайные величины, основные предельные теоремы для сумм
независимых случайных величин.
Сформировать
умение разделить сложный объект на простые
составляющие, определить взаимосвязи между ними
Работу следует выполнять в таком порядке:
 изучить описание работы;
 согласно своему варианту задания, решить заданные примеры без
применения ЭВМ
 разработать
алгоритмы
решения
отдельных
задач
в
инструментальной среде и системах компьютерной математики Mathcad,
MathLab по одному из каждого раздела задания.
 оформить отчет.
3. ЗАДАНИЯ
3.1. Используя понятия и методы теории множеств решить
задачи раздела 1 (1.10-1.100). Выбор конкретного варианта
задания должен соответствовать порядковому номеру ячейки.
Например, ячейка №4 выполняет задания под номерами: 1.14;
1.24; 1.30/4; 1.40/4; 1.54; 1.64; 1.74;1.80/4; 1.94; 1.104.
Оформить подробное решение и показать результат.
1.11. Какие из утверждений верны для всех A, B и C, если A B и
B  C , то A C ?
1.12. Какие из утверждений верны для всех A, B и C, если A  B и
B  C , то A C ?
1.13. Какие из утверждений верны для всех A, B и C, если A  B и
B  C , то A  C ?
1.14. Какие утверждения верны для любых множеств А, В, С, если
A  B и B  C , то A  C ?
12
1.15. Какие утверждения верны для любых множеств А, В, С, если
A  B и не верно, что B  C , то A  C ?
1.16. Пусть даны множества А, В и С, C  B . Какие из нижеследующих
утверждений верны: a) A  C  A  B ;
б) A  C  A  B ;
1.17. Пусть даны множества А, В и С, C  B . Какие из нижеследующих
утверждений верны: в) A \ B  A \ C ;
г) C \ A  B \ A ?
1.18. Пусть даны множества А, В и С, C  B . Какие из нижеследующих
утверждений верны: в) A \ B  A \ C ;
б) A  C  A  B ;
1.19. Пусть даны множества А, В и С, C  B . Какие из нижеследующих
утверждений верны: a) A  C  A  B ;
б) A  C  A  B ;
1.21. Докажите равенство:
A  ( B  C )  ( A  B)  ( A  C ) ,
где A, B, C – множества.
1.22. Докажите равенство:
A  ( B  C )  ( A  B)  ( A  C ) ,
где A, B, C – множества.
1.23. Доказать, что A  B  A  A  B.
1.24. Доказать, что A  B  B  A  B.
1.25. Доказать, что A  B тогда и только тогда, когда A  B = B.
1.26. Доказать, что A  B тогда и только тогда, когда A  B = A.
1.27. Показать, что для любых множеств A, B, C верны соотношения
  A  B  A  B.
1.28. Показать, что для любых множеств A, B, C верны соотношения
CAB
тогда и только тогда, когда C  A и C  B.
1.29. Показать, что для любых множеств A, B, C верны соотношения
ABC
тогда и только тогда, когда A  C и B  C.
13
1.30. Показать, что для любых множеств A, B, C верны соотношения,
если A  B = C, B  C = A, C  A = B, то A = B = C.
А  В, А  С, В  С, А  В, А  C, В  С,
если:
1) А = {2; 3; 8; 9}, В = {16; 18; 20}, C = N;
2) A = N, B = {–2; –1; 0; 1; 2}, C = {3; 5; 7};
3) A = {3; 4; 5; ...}, B = N, C = {–1; 0; 1; 2};
4) A = {21; 22;...; 26}, B = {3; 5}, C = N;
5) A = Z, B = {2; 4; 6}, C = N;
6) A = {20}, B = {2; 3; 4; 5}, C = {5; 6;...; 10};
7) A = N, B = {–1; 0; 1; 2}, C = {15; 16;...; 20};
8) A = Z, B = N, C = Q;
9) А = {–1; 0; 1; 2}, В = {2; 3; 4}, C = N.
1.40. Доказать следующие тождества:
1) A  B  C    A  B   C ;
2) A  B  C    A  B   C ;
3)
A  B  C    A  B    A  C ;
4) A  B  C    A  B    A  C ;
5)
 A  B   C  D    A  C   B  C    A  D   B  D .
1.51. Докажите равенство (A\B)\C = A\(B  C).
1.52. Докажите равенство (A\B)\C = (A\B)  (A  C).
1.53. Докажите равенство A  (B\C) = (A  B)\(C\A).
1.54. Докажите равенство A  (B\C) = (A  B)\(A  C).
1.55. Докажите равенство A\(B  C) = (A\B)  (A\C).
1.56. Докажите равенство A\(B  C) = (A\B)  (A\C).
1.57. Пусть A,B,C – подмножества множества X. Доказать, что
X\(X\A) = A.
1.58. Пусть A,B,C – подмножества множества X. Доказать, что X\B 
X\A тогда и только тогда, когда A  B.
14
1.59. Пусть A,B,C – подмножества множества X. Доказать, что
A\B = A  B(X\B).
1.61. Что является дополнением к множеству {1, 3, 5} во множестве
{1, 2, 3, 4, 5, 6}?
1.62. Что является дополнением к множеству {1, 3, 5} во множестве
{1, 3, 5}?
1.63. Какие из утверждений верны для всех А, В и С, если A  B  C и
A  C  B , то A  C   ?
1.64. Какие из утверждений верны для всех A, B и C, если A  ( B  C )
и B  ( A  C ) , то B   ?
1.65. Найти дополнение множества A до множества X:
X = {3, 8, 7, 4, 2, 1}, A = {2, 7}.
1.66. Найти дополнение множества A до множества X:
X = {10ⁿ|n  N}, A = {100ⁿ|n  N}.
1.67. Найти дополнение множества A до множества X:
X = {3x + 1|x  N}, A = {3x + 4| x  N}.
1.68. Найти дополнение множества A до множества X:
X = {x² + x + 1| x  N}, A = {x² + 5x + 7| x  N}.
1.69. Найти дополнение множества В до множества А, если В  А:
A = {xx  R, – < x  2}, B = {xx  R, –6 < x < 0};
A = {xx  R, –< x < 5}, B = {xx  R, 1  x  2};
A = {xx  R, –2 < x < }, B = {xx  R, 0  x  3};
1.71. Пусть универсальное множество U состоит из 100 элементов, его
подмножество A и B соответственно из 64 и 42 элементов. Определить
минимально возможное число элементов множества A\B.
1.72. Пусть универсальное множество U состоит из 100 элементов, его
подмножество A и B соответственно из 64 и 42 элементов. Определить
минимально возможное число элементов множества Ā\B.
15
1.73. Пусть универсальное множество U состоит из 100 элементов, его
подмножество A и B соответственно из 64 и 42 элементов. Определить
минимально возможное число элементов множества Ā\(A  B).
1.74. Доказать, что A  B тогда и только тогда, когда A\B =  .
1.75. Пусть A и B – данные множества. Решить уравнение A\X = B.
1.76. Пусть А – множество прямоугольников, В – множество ромбов,
С –множество квадратов. Докажите: а) B  C ; б) С  В; в) С  А.
1.77. Для множеств А = {3; 4} и B = {a; b} составьте декартовы
произведения А  В и В  А. Выполняется ли равенство А  В=В  А?
1.78. Даны два множества A = {1, 2, 3, 4}, B = {2, 3, 6, 8, 9}; запишите
A B .
1.79. Даны два множества A = {1, 2, 3, 4}, B = {2, 3, 6, 8, 9}; запишите
B  A.
1.80. Доказать следующие тождества:
1) A\(B  C) = (A\B)  (A\C);
2) A\(B  C) = (A\B)  (A\C);
3) A\(AB) = A  B;
4) A\B = A\(A  B);
5) A  (B\C) = (A  B)\(A  C) = (A  B)\C;
6) (A\B)\C = (AC)\(B\C);
7) A  B = A  (B\A);
8) A  (B\A) =  ;
9) (A  B)\C = (A\C)  (B\C);
1.91. Пусть даны множества А, В, С и A, B, C – дополнения
соответствующих множеств А, В, С до универсального множества  .
Изобразите при помощи кругов Эйлера следующие множества: (А  В С 
):


1) A  B  C ;


2) A  B  C ;


7) B \ C  A ;
8) A  B  C ;
16
3)  A \ B   C ;
9)  A  B  \ C ;
1.92. Пусть даны множества А, В, С и A, B, C – дополнения
соответствующих множеств А, В, С до универсального множества  .
Изобразите при помощи кругов Эйлера следующие множества: (А  В С 
):


4) A  B  C ;
5) A \ B  C  ;


6) A \ C  B ;
 
11) B  C  \ A ;
10) B \ A  C ;
12) A  B  C .
1.93. Изобразите с помощью кругов Эйлера множества А, В, С, если
А  U, B  U, C  U и известно, что:
1) А  В, В  С;
2) А  С, В  С и С = А  В;
3) А  С, В  С и А  В = ;
1.94. Изобразите с помощью кругов Эйлера множества А, В, С, если
А  U, B  U, C  U и известно, что:
4) А  С, В  С и А  В  ;
5) А  В  , А  С  , В  С  0, А В  С = ;
6) А  В = , А  С  , В  С = .
1.95. Изобразить с помощью кругов Эйлера следующие множества,
если А  U, B  U, C  U, A  B  C  :
1) А  В  С;
3) А  В  С;
2) (А  В)  С;
4) (А  В)  (А  С);
1.96. Изобразить с помощью кругов Эйлера следующие множества,
если А  U, B  U, C  U, A  B  C  :
1) А  В  С;
2) (А  В)  С;
3) (А  В)  С;
4) А  (В  С).
1.98. Используя круги Эйлера, докажите следующие равенства:


1) A  B  A  B ;
2) A  B  A  B ;
17



3) A  B  A  B ;
1.99.
С
помощью

4) A  B  A  B .
диаграмм
Эйлера-Венна
проиллюстрировать
следующие соотношения:
а) A\(B  C) = (A\B) ( A\C);
б) A\(B  C) = (A\B)  (A\C);
в) (A  B)\ C = (A\C)  (B\C);
г) (AB)\C = (A\C)  (B\C);
д) (A\B)\C = A\(B  C).
1.101. В группе 25 студентов. Некоторые из них могут отсутствовать на
занятиях. Сколько вариантов отсутствия студентов на занятии возможно?
1.102. Есть 50 человек. 18 из них пользуются троллейбусом, 12 –
автобусом, 7 – троллейбусом и автобусом. Требуется определить:
а) сколько человек пользуются или троллейбусом или автобусом?
б) сколько человек пользуются ни троллейбусом ни автобусом?
с) сколько человек пользуются автобусом?
д) сколько человек пользуются другим транспортом?
1.103. В потоке 38 человек. Из них 16 играют в баскетбол, 17 – в
хоккей, 18 – в волейбол. Увлекаются двумя видами спорта: баскетболом и
хоккеем – четверо, баскетболом и волейболом – трое, волейболом и хоккеем
– пятеро. Трое не увлекаются ни баскетболом, ни хоккеем, ни волейболом.
Сколько ребят одновременно увлекаются тремя видами спорта? Сколько
ребят увлекаются только одним из этих видов спорта?
1.104. В потоке учатся 40 человек. Из них по электротехнике имеют
«3» 19 человек, по математике – 17 человек и по физике – 22 человека.
Только по одному предмету имеют «тройки»: по электротехнике
– 4
человека, по математике – 4 человека и по физике – 11 человек. Семь человек
имеют «тройки» и по математике и по физике, из них пятеро имеют «тройки»
по электротехнике. Сколько человек учится без троек? Сколько человек
имеют «тройки» по двум из трѐх предметов?
1.105. Каждый из 40 человек, путешествующий автобусом «Граунд»,
знает не менее одного иностранного языка: английский, немецкий,
18
французский. 36 человек знают хотя бы один из двух языков: английский,
немецкий. 19 человек – хотя бы один из языков: немецкий, французский; 8
человек – только немецкий. Одновременно два языка – английский и
немецкий – изучают на 5 человек больше, чем французский и немецкий
языки. Сколько человек изучают каждый из языков и сколько изучают
каждую пару языков?
1.106. Пол комнаты площадью 12 м2 покрыт тремя коврами: площадь
одного ковра – 5 м2, другого – 4 м2 и третьего – 3 м2. Каждые два ковра
перекрываются на площади 1,5 м2, причѐм 0,5 м2 из этих полутора
квадратных метров приходится на участок пола, где перекрываются все три
ковра. Какова площадь пола, не покрытая коврами? Какова площадь пола,
покрытого только одним первым ковром?
1.107. Контрольная работа по математике состояла из задачи,
уравнения и неравенства. Контрольную работу писали 40 человек. Правильно
решили только задачу 2 ученика, только неравенство – 4 человека, только
уравнение – 3 человека. Не решили только задачу 7 человек, только
уравнение – 5 человек, только пример – 6 человек. Остальные выполнили
всю работу правильно. Сколько таких учащихся?
1.108. На съезд туристской песни собрались гости из трех районов,
всего 386 человек. Сколько людей приехало из каждого района, если из
первого района приехало на 38 человек больше, чем из второго, а из третьего
– на 26 человек меньше, чем из первого?
1.109. Часть жителей одного городка умеют говорить только по-русски,
часть только – по-белорусски, а часть умеет говорить на обоих языках. Порусски говорят 75 %, а по-белорусски – 85 % жителей. Сколько процентов
жителей говорят на обоих языках?
3.2. Используя понятия и методы основ комбинаторики
выполнить вычисления для заданий раздела 2 (2.10-2.40). Выбор
конкретного
варианта задания
должен соответствовать
порядковому номеру ячейки.
Оформить подробное решение и показать результат.
19
2.11. На книжной полке стоят 10 книг по математике и 10 по логике.
Доказать, что наибольшее количество вариантов комплекта, содержащего 10
книг, возможно в том случае, когда число книг по каждому предмету равно 5.
2.12. Пять девушек и трое юношей играют в мини-футбол. Сколькими
способами они могут разбиться на две команды по 4 человека в каждой
команде, если в каждой команде должно быть хотя бы по одному юноше?
2.13. В некотором государстве не было двух жителей с одинаковым
набором зубов. Какова может быть наибольшая численность населения
государства, если зубов у человека не может быть больше 32?
2.14. Сколькими способами можно расставить белые фигуры (2 коня,
2 слона, 2 ладьи, ферзя и короля) на первой линии шахматной доски?
2.15. В автомашине 7 мест. Сколькими способами семь человек могут
усесться в эту машину, если занять место водителя могут только трое из них?
2.16.
Замок
открывается
только
в
том
случае,
если
набран
определенный трехзначный номер. Попытка состоит в том, что набирают
наугад три цифры из заданных пяти цифр. Угадать номер удалось только на
последней из всех возможных попыток. Сколько попыток предшествовало
удачной?
2.17. Сколькими способами можно расположить на шахматной доске
две ладьи так, чтобы одна не могла взять другую? Одна ладья может взять
другую, если она находится с ней на одной горизонтали или на одной
вертикали шахматной доски
2.18. Четверо студентов сдают экзамен. Сколькими способами могут
быть поставлены им отметки, если известно, что никто из них не получил
неудовлетворительной отметки?
2.19. В турнире участвуют 16 шахматистов. Определить количество
различных расписаний первого тура. Расписания считаются различными,
если отличаются участниками хотя бы одной партии; цвет фигур и номер
доски не учитываются.
2.21. В шахматном турнире участвуют 8 шахматистов третьего разряда,
6 – второго и 2 перворазрядника. Определить количество таких составов
20
первого тура, чтобы шахматисты одной категории встречались между собой,
причем цвет фигур не учитывается.
2.22. Из цифр 1, 2, 3, 4, 5, 6, 7, 8, 9 составляются всевозможные
пятизначные числа, не содержащие одинаковых цифр. Определить
количество чисел, в которых есть цифры 2, 4 и 5 одновременно.
2.23. Четверо юношей и две девушки выбирают спортивную секцию.
В секцию хоккея и бокса принимают только юношей, в секцию
художественной гимнастики – только девушек, а в лыжную и конькобежную
секции – и юношей, и девушек. Сколькими способами могут распределиться
между секциями эти шесть человек?
2.24. Каждый человек в группе знает хотя бы один иностранный язык.
Шестеро знают английский, шестеро – немецкий, семеро – французский.
Четверо знают английский и немецкий, трое – немецкий и французский, двое
– французский и английский. Один человек знает все три языка. Сколько
человек в группе? Сколько из них знают только английский язык? Только
французский?
2.25. Компания, состоящая из 10 супружеских пар, разбивается на 5
групп по 4 человека для лодочной прогулки. Во скольких случаях мужчина
окажется в одной лодке со своей женой?
2.26. В шахматном турнире участвуют 8 шахматистов третьего разряда,
6 – второго и 2 перворазрядника. Определить количество таких составов
первого тура, чтобы шахматисты одной категории встречались между собой,
причем цвет фигур не учитывается.
2.27. Из цифр 1, 2, 3, 4, 5, 6, 7, 8, 9 составляются всевозможные
пятизначные
числа,
не
содержащие
одинаковых
цифр.
Определить
количество чисел, в которых есть цифры 2, 4 и 5 одновременно.
2.28. Садовник должен в течение трех дней посадить 10 деревьев.
Сколькими способами он может распределить по дням работу, если будет
сажать не менее одного дерева в день?
2.29. Найти количество шестизначных чисел, таких, что сумма
трехзначного числа, образованного первыми тремя цифрами, и трехзначного
числа, образованного последними тремя цифрами, меньше 1000.
21
2.31. Сколькими способами можно переставить буквы слова «пастух»
так, чтобы между двумя гласными были две согласные буквы?
2.32.
Сколькими
способами
можно
переставить
буквы
слова
«логарифм» так, чтобы второе, четвертое и шестое места были заняты
согласными буквами?
2.33. Сколькими способами можно выбрать из слова «логарифм» две
согласных и одну гласную букву? Так же задача, если среди выбранных букв
есть буква «Ф»?
2.34. Сколькими способами можно переставлять буквы слова «огород»
так, чтобы три буквы «о» не стояли рядом? Та же задача, но запрещается,
чтобы две буквы «о» стояли рядом.
2.35. Сколькими различными способами можно выбрать несколько
букв из фразы «Око за око, зуб за зуб»? Порядок букв не учитывается.
2.36. Сколькими способами можно выбрать из фразы «Око за око, зуб
за зуб» три буквы?
2.37. Сколькими способами можно выбрать из фразы «Око за око, зуб
за зуб» три буквы, если учитывать порядок выбранных букв?
2.38.
Сколькими
способами
можно
переставлять
буквы
слова
«пастухи» так, чтобы как гласные, так и согласные шли в алфавитном
порядке?
2.39.
Сколькими
способами
можно
переставить
буквы
слова
«кофеварка» так, чтобы гласные и согласные буквы чередовались? То же
самое для слова «самовар».
2.41. Каждая из n различных организаций намеревается принять на
работу одного из n выпускников радиотехнического факультета. В каждой из
этих организаций выпускнику предлагается на выбор одна из k должностей.
Сколько существует вариантов распределения этих n выпускников на
работу?
2.42. Имеется колода из 4n (n  5) карт, которая содержит карты 4-х
мастей по n карт каждой масти, занумерованных числами 1, 2 … n.
Подсчитать, сколькими способами можно выбрать 5 карт так, что среди них
окажется не более двух карт каждой масти
22
2.43. 10 человек, среди которых Иванов и Петров, размещаются в
гостинице в двух трехместных и в одном четырехместном номерах.
Сколькими способами они могут быть размещены? Сколькими способами их
можно разместить, если Иванов и Петров поселены в четырехместный
номер?
2.44. На 9 вакантных мест по определенной специальности претендуют
15 безработных, состоящих на учете в службе занятости. Сколько возможно
комбинаций выбора 9 из 15 безработных?
2.45.
Выделены
крупные
суммы
на
выполнение
4
крупных
правительственных программ, сулящих исполнителям высокую прибыль.
Сколько существует способов случайного распределения этих 4 программ
между 6 возможными исполнителями?
2.46. Для доступа в компьютерную сеть оператору необходимо набрать
пароль из 4 цифр. Оператор забыл или не знает необходимого кода. Сколько
всевозможных комбинаций он может составить для набора пароля: а) если
цифры в коде не повторяются; б) если повторяются?
2.47. Четыре человека случайно отбираются из 10 согласившихся
участвовать в интервью для выяснения их отношения к продукции фирмы по
производству продуктов питания. Эти 4 человека прикрепляются к 4
интервьюерам. Сколько существует различных способов составления таких
групп?
2.48. Девять запечатанных пакетов с предложениями цены на аренду
участков для бурения нефтяных скважин поступили утром в специальное
агентство утренней почтой. Сколько существует различных способов
очередности вскрытия конвертов с предложениями цены
2.49. Четыре человека случайно отбираются из 10 согласившихся
участвовать в интервью для выяснения их отношения к продукции фирмы по
производству продуктов питания. Эти 4 человека прикрепляются к 4
интервьюерам. Сколько существует различных способов составления таких
групп?
23
3.3. Используя понятия и методы основ комбинаторики выполнить
вычисления для заданий раздела 3 (3.10-3.30). Выбор конкретного
варианта задания должен соответствовать порядковому номеру ячейки.
Оформить подробное решение и показать результат.
3.11. Код радиолокационной системы опознавания самолетов (свой –
чужой) составляется в виде комбинации из тире и точек, общее число
которых берется одинаковым и равным 4. Определить вероятность подделки
кода противника, если установить на своем самолете наугад некоторую
четырехзначную кодовую комбинацию из тире и точек.
3.12.
Монета
Наблюдаемый
подбрасывается
результат
–
общее
до
число
первого
появления
подбрасываний.
герба.
Построить
множество элементарных событий и подмножества, соответствующие
следующим событиям:
– А – герб выпал при третьем подбрасывании;
– В – герб выпал не ранее чем при третьем подбрасывании.
3.13. Брошены две игральные кости. Найти вероятности следующих
событий: а) сумма выпавших очков равна семи; б) сумма выпавших очков
равна восьми, а разность – четырем; в) сумма выпавших очков равна восьми,
если известно, что их разность равна четырем; г) сумма выпавших очков
равна
пяти,
а произведение – четырем.
3.14. Пяти полевым радиостанциям разрешено во время учений
работать на 6 радиоволнах. Выбор волны на каждой станции производился
наудачу. Найти вероятности следующих событий:
А = {при одновременной работе всех 5 радиостанций все волны совпадут};
В = {хотя бы две волны не совпадут};
С = {будут использованы различные радиоволны}.
3.15. В лифт девятиэтажного дома на первом этаже вошли 3 человека.
Каждый из них с одинаковой вероятностью выходит на любом из этажей,
начиная со второго. Найти вероятность того, что: а) все пассажиры выйдут на
24
5 этаже; б) все пассажиры выйдут одновременно; в) все пассажиры выйдут на
разных этажах.
3.16. Группа состоит из четырех мужчин и восьми женщин. Найти
вероятность того, что при случайной группировке по три человека в каждой
группе будет мужчина.
3.17. В группе 12 студентов, среди которых 8 отличников. По списку
наудачу отобраны 9 студентов. Найти вероятность того, что среди
отобранных студентов 5 отличников.
3.18. В партии транзисторов n стандартных и m бракованных. При
контроле оказалось, что первые k транзисторов стандартны. Найти
вероятность того, что следующий транзистор будет стандартным.
3.19. Среди кандидатов в студенческий совет факультета есть 3
первокурсника, 5 второкурсников и 7 студентов третьего курса. Из этого
состава выбирают 5 человек. Найти вероятность, что: а) все первокурсники
попадут в совет; б) в совет будет избран 1 первокурсник, 2 второкурсника и 2
студента 3-го курса.
3.21. По самолету производится три одиночных выстрела из зенитного
орудия. Вероятность попадания при первом выстреле равна 0,4, при втором –
0,5, при третьем – 0,7. Для вывода самолета из строя заведомо достаточно
трех попаданий. При одном попадании самолет выходит из строя с
вероятностью 0,2, а при двух попаданиях – с вероятностью 0,6. Найти
вероятность того, что в результате трех выстрелов самолет будет выведен из
строя
3.22. Среди 25 экзаменационных билетов имеется 5 «счастливых» и 20
«несчастливых». Студенты подходят за билетами по очереди. У кoго больше
вероятность вытащить счастливый билет: у того, кто подошел за билетами
первым, или у того, кто подошел вторым?
3.23.
Некоторые
пассажиры
считают
номер
трамвайного,
троллейбусного или автобусного билета «счастливым», если сумма первых
его трех цифр совпадает с суммой последних трех цифр. Найти вероятность
получения «счастливого» билета.
25
3.24. Для поиска пропавшей подводной лодки выбрано 10 самолетов, и
каждый из них можно использовать для поиска в одном из двух возможных
районов, где лодка может находиться с вероятностями 0,8 и 0,2
соответственно. Как нужно распределить самолеты по районам поиска,
чтобы вероятность обнаружения лодки была наибольшей, если каждый
самолет выявляет ее в районе поиска с вероятностью 0,2 и осуществляет
поиски независимо от других? Найти вероятность обнаружения лодки при
оптимальной процедуре поисков
3.25. Студент приходит в компьютерный класс для выполнения
лабораторной работы. Вероятности того, что компьютеры заражены вирусом,
равны соответственно p1 , p2 ,..., pn . Для работы студент выбирает наугад
один из компьютеров. При выполнении работы на исправной машине (без
вирусов) студент ошибается в среднем в k % случаев. Найти вероятность
того, что студент выполнит лабораторную работу без ошибок.
3.26. Производится бомбометание по трем складам боеприпасов,
причем сбрасывается одна бомба. Вероятность попадания в первый склад
равна 0,01, во второй – 0,04, в третий – 0,05. При попадании в один из
складов взрываются все три. Найти вероятность того, что склады будут
взорваны.
3.27. Вероятности того, что во время работы ЭВМ произойдет сбой в
процессоре, в памяти, в остальных устройствах, относится как 3:2:5.
Вероятности обнаружения сбоя в процессоре, в памяти и в остальных
устройствах соответственно равны 0,8:0,9:0,9. Найти вероятность того, что
возникший в ЭВМ сбой будет обнаружен.
3.28. 1 сентября на первом курсе одного из факультетов запланировано
по расписанию три лекции по разным предметам. Всего на первом курсе
изучается 10 предметов. Студент, не успевший ознакомиться с расписанием,
пытается его угадать. Какова вероятность успеха в данном эксперименте,
если считать, что любое расписание из трех предметов равновозможно?
3.29. В «секретном» замке на общей оси четыре диска, каждый из
которых разделен на пять секторов, на которых написаны различные цифры.
26
Замок открывается только в том случае, если диски установлены так, что
цифры на них составляют определенное четырехзначное число. Найти
вероятность того, что при произвольной установке дисков замок будет
открыт
3.31. Вероятность того, что во время работы ЭВМ возникнет сбой в
арифметическом устройстве, в оперативной памяти и
в остальных
устройствах относятся как 2:2:6. Вероятности обнаружения сбоя в
арифметическом устройстве, в оперативной памяти и остальных устройствах
соответственно равны 0,7; 0,9; 0,8. Найти вероятность того, что возникший в
ЭВМ сбой будет обнаружен
3.32. На наблюдательной станции установлены четыре радиолокатора
различных конструкций. Вероятность обнаружения целей с помощью
первого локатора равна 0,86, второго – 0,9, третьего – 0,92, четвертого – 0,95.
Наблюдатель наугад включает один из локаторов. Какова вероятность
обнаружения цели?
3.33. По каналу связи передается цифровой текст, содержащий только
три цифры 1, 2, 3, которые могут появляться в тексте с равной вероятностью.
Каждая передаваемая цифра в силу наличия шумов принимается правильно с
вероятностью 0,9 и с вероятностью 0,1 принимается за какую-то другую
цифру. Цифры искажаются независимо. Найти вероятность того, что было
передано 111, если принято 123.
3.34. Передача сигналов происходит с вероятностями P1 , P2 , P3 в одном
из трех режимов. В каждом из них сигнал доходит до адресата не
искаженным помехами с вероятностями соответственно p1 , p2 , p3 . Передача
трех сигналов происходила в одном из трех режимов, но в каком –
неизвестно.
Найти
апостериорные
вероятности
того,
что
передача
происходила в первом, втором и третьем режимах.
3.35. Прибор, установленный на борту самолета, может работать в двух
режимах: в условиях нормального полета и в условиях перегрузки при взлете
и посадке. Нормальный режим работы составляет 80 % времени полета,
перегрузка – 20 %. Вероятность выхода прибора из строя за время полета в
27
нормальном режиме равна 0,1, в условиях перегрузки – 0,4. Вычислить
надежность прибора за время полета.
3.36. По каналу связи передают символы А, В, С с вероятностями 0,4;
0,3; 0,3 соответственно. Вероятность искажения символа равна 0,4 и все
искажения равновероятны. Для увеличения надежности каждый символ
повторяют четыре раза. На выходе приняли последовательность ВАСВ.
Какова вероятность того, что передали АААА, ВВВВ, СССС?
3.37. Система сбора информации получает сообщения от четырех
источников сообщений. Среди 1000 зарегистрированных посылок 400
получено от источника А, 300 – от В, 200 – от С и 100 от D. Вероятности
неискаженного приема сообщений от источников А, В, С и D соответственно
равны 0,9; 0,6; 0,95 и 0,8. С какой вероятностью наугад выбранное в точке
приема сообщение окажется неискаженным? Если выбранное сообщение
оказалось искаженным, то с какой вероятностью оно было послано
источником А?
3.38. Радиостанция может работать в трех режимах: на полной
мощности, половинной и при мощности, составляющей 25 % от полной.
Вероятности функционирования системы в этих режимах соответственно
равны 0,7; 0,1; 0,2. Вероятности отказа радиостанции при работе в каждом из
режимов за время Т составляют соответственно 0,3; 0,2 и 0,05. Определить
вероятность того, что за Т часов работы радиостанция не выйдет из строя.
3.39. При вращении антенны обзорного радиолокатора за время
облучения от цели успевает отразиться 8 импульсов. Для обнаружения цели
необходимо принять не менее 6 отраженных сигналов. Вероятность
подавления импульса шумом равна 0,1. Найти вероятность обнаружения цели
28
4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Раздел 1. Примеры решения задач с использованием теории
множеств
Пример 1Доказать, что для произвольных множеств А и В если A  B ,
то B  A .
Решение. Необходимо доказать, что B  A , поэтому структура
доказательства будет иметь вид: «Пусть a  B , тогда …, …, тогда a  A ».
Пусть
a  B , тогда по определению дополнения
a
\B , где
–
универсальное множество. Из определения разности множеств из того, что
a
\B , следует, что a   и a  B . По условию задачи известно, что
A  B , т.е. все элементы множества А есть в множестве В. Так как a  B , то
элемента а в множестве В нет, а следовательно его нет и в множестве А. Если
элемента а нет в множестве А, то можно записать a  A . Следовательно,
установлено, что a 
и a  A , а это значит, что a  A . Аналогично
доказывается обратное утверждение: если B  A , то A  B .
Пример 2 Докажем свойство дистрибутивности для объединения:
A  (B  C) = (A  B)  (A  C).
Решение. 1. Сначала предположим, что некоторый элемент x
принадлежит левой части тождества, т.е. x  A  (B  C), и докажем, что x
принадлежит правой части, т.е.
x  (A  B)  (A  C).
Действительно, пусть x  A  (B  C).
Тогда либо x  A, либо x  B  C.
Рассмотрим каждую из этих возможностей.
Пусть x  A. Тогда x  A  B и x  A  C (это верно для любых
множеств B и C). Следовательно, x  (A  B)  (A  C).
Если x  A, то x  B  C . Этот случай рассмотрите самостоятельно.
29
2. Предположим, что некоторый элемент x принадлежит правой части
тождества, т.е. x  (A  B)  (A  C), и докажем, что x принадлежит левой
части, т.е. x  A  (B  C) .
Действительно, пусть x  (A  B)  (A  C). Тогда x  A  B, и
одновременно x  A  C.
Если x  A  B, то либо x  A, либо x  B, если x AC, то либо x A,
либо x C.
Пусть x  A, тогда x  A  (B  C) и утверждение доказано.
Если x  A, то одновременно должны выполняться условия x  B и x 
C, т.е. x  B  C. Но тогда x  B  C и x  A  (B  C), что также доказывает
наше утверждение.
Пример 3 Упростить выражение: (A  B)  ( A  B)  (A  B ).
Решение. 1. Используя закон коммутативности, поменяем местами
вторую и третью скобки:
(A  B)  ( A  B)  (A  B ) = (A  B)  (A  B )  ( A  B).
2. Применим закон расщепления для первой и второй скобок:
(A  B)  (A  B )  ( A  B) = A  ( A  B).
3. Воспользуемся законом дистрибутивности:
A  ( A  B) = A  A  A  B.
4. Используем закон исключенного третьего: A  A = .
5. Получим: A  A  A  B =   A  B.
6. Используем свойство пустого множества:   A  B = A  B.
7. Результат: (A  B)  ( A  B)  (A  B ) = A  B.
Пример 4 Экзамен по математике на вступительных экзаменах сдавали
250 абитуриентов, оценку ниже оценки «отлично» получили 180 человек, а
выдержали этот экзамен 210 абитуриентов. Сколько человек получили
оценки «удовлетворительно» и «хорошо»?
Решение. Пусть X – множество абитуриентов, выдержавших экзамен,
30
Y – множество абитуриентов, получивших оценки ниже «отлично», по
условию X  210 , Y  180 , X  Y  250 .
Абитуриенты, получившие оценки «удовлетворительно» и «хорошо»,
образуют множество
X  Y . По соответствующей формуле получаем
X  Y  X  Y  X  Y  140 .
Раздел 2. Примеры решения задач при использовании основ
комбинаторики
Пример 1 Автомобильные номера состоят из трех букв (всего
используется 30 букв) и четырех цифр (используются все 10 цифр). Сколько
автомобилей можно занумеровать таким образом, чтобы никакие два
автомобиля не имели одинакового номера?
Решение. На первом месте у автомобильного номера может быть
любая из 30 букв. Следовательно, первая буква может быть выбрана 30
способами. На втором месте также может находиться любая из 30 букв,
поэтому первые две буквы номера могут быть выбраны 302 способами. Ясно,
что три буквы можно выбрать 303 способами. Аналогично рассуждая,
получаем, что четыре цифры можно выбрать 104 способами. Таким образом,
всего может быть занумеровано 303 · 104 = 27 · 107 автомобилей.
Пример 2 На втором курсе изучается 14 предметов. Сколькими
способами можно составить расписание занятий на субботу, если в этот день
недели должно быть 5 различных занятий?
Решение. Различных способов составления расписания, очевидно,
столько, сколько существует пятиэлементных упорядоченных подмножеств у
четырнадцати-элементного множества.
Следовательно, число способов равно числу размещений из 14
элементов по 5, т.е. равно
A145
5
A14
= 14  13  12  11  10 = 240 240.
Пример 3 В группе 30 студентов. Сколькими способами можно
выбрать из класса команду из 4 человек для участия в олимпиаде по истории,
информатике, математике и английскому языку?
31
Решение. Искомые команды будут отличаться между собой или
студентами, или их порядком, который указывает, на какую олимпиаду
пойдет студент. Поэтому искомое число равно числу размещений из 30 по 4:
4
A30
 30  29  28  27  657720. Это значит, что существует 657 720 способов
выбора команды.
Пример 4 В компьютерный класс свободного доступа куплены 3 новых
системных блока. В классе также есть свободные 4 клавиатуры, 5 «мышек» и
6 мониторов (все клавиатуры, «мышки» и мониторы отличаются друг от
друга). Сколькими способами можно укомплектовать все три компьютера (к
каждому подключают одну клавиатуру, одну «мышку» и один монитор)?
Решение. Чтобы найти число способов, которыми могут быть
подключены клавиатуры, надо найти число размещений (без повторений) из
4 элементов по 3, «мышки» – число размещений из 5 элементов по 3,
мониторы – число размещений из 6 элементов по 3. В решении используется
формула размещений без повторений, так как здесь немаловажно, какая из
компонент системного блока будет выбрана, так как все компоненты
отличаются друг от друга. Число способов, которыми могут быть
укомплектованы компьютеры, находим по правилу произведения:
A43  A53  A63  4  3  2  5  4  3  6  5  4  172800 способов.
Пример 5 Из группы в 25 человек нужно выделить 3 человека на
дежурство. Сколькими различными способами это можно сделать?
Решение. Исходное множество различных объектов образуют
студенты группы. Число всех элементов множества равно 25 (по числу
студентов). Выделенные 3 человека дежурных образуют трехэлементное
подмножество из общего числа в 25 элементов (n = 25, k = 3). При этом
подмножество определяется только элементами, в него входящими, но
неважно, в каком порядке (Иванов, Петров, Сидоров или Сидоров, Иванов,
Петров – одно и то же подмножество). Поэтому по определению имеем
сочетание из 25 элементов по 3 и по вышеуказанной формуле число
различных способов выбора трех дежурных из 25 студентов равно
32
3
C25

25!
23  24  25

 25  23  4  2300 .
3! 22!
1 2  3
Пример 6 Каждый телефонный номер состоит из семи цифр. Сколько
всего телефонных номеров, не содержащих других цифр, кроме 2, 3, 5 и 7?
Сколько всего шестизначных телефонных номеров, состоящих из тех же
цифр?
Решение. Это задача о числе размещений в семи разных местах семи
цифр, выбранных из четырех разных цифр с повторениями каждой из них
любое число раз, но не более семи. Существует 4 способа выбора первой
цифры телефонного номера. Так как по условию цифры номера могут
повторяться, то существует по 4 способа выбора второй, третьей, четвертой и
так далее седьмой цифр номера, поэтому, согласно правилу произведения,
число всех указанных телефонных номеров равно
4 · 4 · 4 · 4 · 4 · 4 · 4 = 47 = 16384.
Пример 7 На шести карточках написаны буквы, из которых можно
составить слово АНАНАС. Сколько существует различных шестибуквенных
слов, которые можно составить при помощи этих шести карточек?
Решение. 6 карточек разобьем на 3 группы. Первая группа образована
карточками с буквой А. Число таких карточек равно 3. Они неразличимы по
буквам, у всех одна и та же буква А, n1  3. Вторая группа образована двумя
карточками, содержащими букву Н. Элементы второй группы также
неразличимы между собой, n2  2. Третья группа образована одной
карточкой с бук-вой С,
n3  1. Таким образом, мы имеем дело с
перестановками с повторениями и число слов из шести букв равно
P6 (3,2,1) 
6!
.
3!2!1!
Раздел 3 Примеры решения задач с использованием основ теории
вероятностей
Пример 3.1 Слово АБРАКАДАБРА разрезается на буквы, которые
затем перемешиваются. Одна за другой
вытаскиваются 5 букв и
прикладываются друг к другу слева направо.
33
Найти вероятности событий: а) А = {случайно сложится слово
РАДАР}; б) В = {случайно сложится слово БАРКА}.
Решение. Находим n – общее число исходов. Всего 11 букв, из них
набирается группа в 5 букв, порядок внутри должен учитываться (ибо слово –
упорядоченная
группа
букв).
Значит,
речь
идет
о
размещении:
5
n  A11
 11  10  9  8  7  55440.
Найдем число исходов, благоприятствующих слову РАДАР. В
исходном слове АБРАКАДАБРА содержится 2 буквы «Р», 5 букв «А», 1
буква «Д». Поэтому в слове РАДАР первую букву «Р» можно выбрать двумя
способами, а вторую – всего лишь одним (одна «Р» уже взята). Первую букву
«А» можно выбрать 5 способами, вторую – 4 способами. Букву «Д» – одним
способом. По правилу произведения число благоприятствующих исходов
равно k1  2  5 1 4 1  40 . Следовательно, P( A) 
k1
40

 7,22 10 10.
n 55440
Аналогично число исходов, благоприятствующих слову БАРКА, равно
k 2  2  5  2  1  4  80. Следовательно, P( B) 
k2
80

 1,44 10 3.
n 55440
Пример 3.2. Первый стрелок попадает в цель с вероятностью 0,6, а второй – с вероятностью 0,7. Первый делает 2 выстрела по цели, а второй – 3
выстрела. Найти вероятность того, что ни одна пуля не попала в цель.
Решение. Пусть А = {ни одна пуля не попала в цель}, А1 = {попадание
в цель первым стрелком при одном выстреле}, А2 = {попадание в цель
вторым стрелком при одном выстреле}. Тогда A  A1 A1 A2 A2 A2 . Так как
первый и второй стрелки стреляют независимо друг от друга, то
P( A)  P( A1 A1 A2 A2 A2 )  P( A1 ) P( A1 ) P( A2 ) P( A2 ) P( A2 ) 
 (1  0,6) 2 (1  0,7) 3  0,4 2  0,33  16  0,16  0,027  0.004.
Пример 3.3. Сообщение передается одновременно по n каналам связи,
причем для надежности по каждому каналу оно повторяется k раз. При одной
передаче сообщение (независимо от других) искажается с вероятностью p.
Каждый канал связи (независимо от других) «забивается» помехами
с
34
вероятностью q; «забитый» канал не может передавать сообщения. Найти
вероятность того, что адресат получит сообщение без искажений.
Решение. Обозначим события:
A = {хотя бы один раз сообщение передано без искажений};
Bi = {по i-му каналу сообщение хотя бы один раз было передано без
искажений}.
Для выполнения события Bi i–й
канал, во–первых, не должен быть
забит помехами и, во–вторых, хотя бы одно сообщение по нему не должно
быть искажено.
Вероятность того, что канал не «забит» помехами, равна 1 – q.
Вероятность того, что хотя бы одно сообщение передано без помех,
равна 1 – pk (p – вероятность того, что все сообщения переданы с
искажениями). Тогда p(B) = (1 – q)  (1 – pk).
Вероятность события A, состоящего в том, что хотя бы на одном канале
произойдет событие, равна
n
n 
n 
k
n
p( A)  p  Bi   1  p(A)  1  p  Bi   1   (1  p( Bi ))  1  [1  (1  q)(1  p )] .




i 1
 i 1 
 i 1 
Пример 3.4. Три стрелка стреляют по одной мишени, и каждый
попадает или промахивается независимо от результатов выстрелов других
стрелков. Вероятности попадания в мишень для каждого из стрелков,
соответственно, равны: 0,8; 0,7; 0,5. Определить вероятности следующих
событий:
а) все три стрелка попали в мишень;
б) хотя бы один стрелок попал в мишень;
в) в мишень попали два стрелка.
Решение. Так как здесь рассматриваются независимые события,
вероятность попадания в мишень всех трѐх стрелков равна произведению
вероятностей попадания каждого:
P = 0,8 · 0,7 · 0,5 = 0,28.
35
Обозначим
это
событие
А.
Ему
благоприятствует
несколько
несовместимых исходов, например, такой: {первый стрелок попал в мишень,
второй не попал, третий попал}. Вместо того чтобы рассматривать все эти
исходы, возьмѐм событие A – дополнение события А или, иначе, событие,
противоположное событию А. Оно состоит в том, что все три стрелка не
попали в мишень. Его вероятность равна:
(1 – 0,8) · (1 – 0,7) · (1 – 0,5) = 0,5.
Теперь можно определить вероятность интересующего нас события:
Р(А) = 1 – Р( A ) = 1 – 0,5 = 0,5.
Этому событию благоприятствуют три исхода:
1 – {первый попал, второй попал, третий не попал} c вероятностью
0,8 · 0,7 · (1 – 0,5) = 0,28;
2 – {первый попал, второй не попал, третий попал} c вероятностью
0,8 · (1 – 0,7) · 0,5 = 0,12;
3 – {первый не попал, второй попал, третий попал} c вероятностью
(1 – 0,8) · 0,7 · 0,5 = 0,07.
Очевидно, что эти исходы несовместимы, и поэтому вероятность их
объединения,
представляющего
собой
событие
А,
равна
сумме
их
вероятностей:
Р(А) = 0,28 + 0,12 + 0,07 = 0,47.
Пример 3.5. Противник стремится сорвать связь, создавая помехи в
двух частотных диапазонах со средними частотами f1 и f 2 , с этой целью
мешающий передатчик настраивается попеременно на частоты f1 и f 2 через
равные промежутки времени. Вероятность сбоя от помехи на частоте
f1 составляет 0,3; а на частоте f1 – 0,6. Какова вероятность того, что связь
будет сорвана?
Решение. Пусть события H k – передатчик настроен на частоту f k ; k =
1,2. События H k попарно не совместны и образуют полную группу.
36
1
P( H1 )  P( H 2 )  (приемник настроен на частоты f1 и f 2 через равные
2
промежутки времени).
А = {связь сорвана}; P( A / H1 )  0,3; P( A / H 2 )  0,6 .
По формуле полной вероятности
2
1
1
P( A)   P( H k )  P( A / H k )   0,3   0,6  0,45 .
2
2
k 1
Пример 3.6. Батарея из трѐх орудий произвела залп, причѐм два
снаряда попали в цель. Найти вероятность того, что первое орудие дало
попадание, если вероятности попадания в цель первым, вторым и третьим
орудиями соответственно равны p1 = 0,4; p2 = 0,3; p3 = 0,5.
Решение. Обозначим через A событие – два орудия попали в цель.
Выдвинем две гипотезы: H1 – первое орудие попало в цель; H2 – первое
орудие не попало в цель.
По условию P(H1) = 0,4, следовательно, P(H2) = 1 – 0,4 = 0,6 (так как
событие H2 противоположно событию H1).
Если событие A наступило при осуществлении гипотезы H1, то это
означает, что вместе с первым орудием в цель попало либо второе орудие, а
третье не попало, либо, наоборот, третье орудие попало в цель, а второе не
попало. Применяя теоремы сложения и умножения вероятностей, получаем:
P(A/H1) = p2(1 – p3) + p3(1 – p2) = 0,3 · 0,5 + 0,5 · 0,7 = 0,5.
Если событие A наступило при осуществлении гипотезы H2, то это
означает, что первое орудие дало промах, а в цель попали снаряды второго и
третьего орудий, поэтому P(A/H2) = p2 · p3 = 0,3  0,5 = 0,15.
Искомую вероятность получаем по формуле Байеса:
PH 1 /A 
PH 1   P A/H1 
0,4  0,5
20


 0,690.
P  A
0,4  0,5  0,6  0,15 29
Компьютерная реализация на C#:
Класс HashSet<T> является коллекцией множества, которая реализует
интерфейс ICollection и универсальный интерфейс ICollection<T>.
37
Свойство Comparer получает способ сравнения для вызывающего
множества. Свойство Max – наибольшее значение во множестве, а свойство
Min – наименьшее. Пример использования множеств:
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
// Создадим два множества
SortedSet<char> ss = new SortedSet<char>();
SortedSet<char> ss1 = new SortedSet<char>();
ss.Add('A');
ss.Add('B');
ss.Add('C');
ss.Add('Z');
ShowColl(ss, "Первая коллекция: ");
ss1.Add('X');
ss1.Add('Y');
ss1.Add('Z');
ShowColl(ss1, "Вторая коллекция");
ss.SymmetricExceptWith(ss1);
ShowColl(ss, "Исключили разноименность (одинаковые
множеств: ");
ss.UnionWith(ss1);
ShowColl(ss, "Объединение множеств: ");
ss.ExceptWith(ss1);
ShowColl(ss, "Вычитание множеств");
Console.ReadLine();
}
static void ShowColl(SortedSet<char> ss, string s)
{
Console.WriteLine(s);
foreach (char ch in ss)
Console.Write(ch + " ");
Console.WriteLine("\n");
}
}
}
элементы)
двух
5. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
* наименование работы, постановку задачи
* выбранный вариант задания
* результаты решения всех задач без применения ЭВМ
* программу решения задачи (представляется в электронном виде)
* результаты работы всех разделов программы и их анализ.
38
Тема. Энтропия и информация
Практическая работа № 2 Количественная оценка информации.
1. ОБЩИЕ СВЕДЕНИЯ
Общее число неповторяющихся сообщений, которое может быть
составлено из алфавита т путем комбинирования по п символов в
сообщении,
N  mn
(1)
Неопределенность, приходящаяся на символ первичного (кодируемого)
алфавита, составленного из равновероятных и взаимонезависимых символов,
H  log m
(2)
Основание логарифма влияет лишь на удобство вычисления. В случае
оценки энтропии:
а) в двоичных единицах
H  log 2 m ; бит/символ
б) в десятичных единицах
H  lg m , бит/символ
где log 2 m  3,32 lg m, 1 бит  0,3 дит.
в) в натуральных единицах
H  ln m
нат/символ
где log 2 m  1,443 ln m, 1 бит  0,693 нат / символ .
Так как информация есть неопределенность, снимаемая при получении
сообщения, то количество информации может быть представлено как
произведение общего числа сообщений k на среднюю энтропию Н,
приходящуюся на одно сообщение:
I  k H
Для
случаев
равновероятных
бит
и
(3)
взаимонезависимых
символов
первичного алфавита количество информации в k сообщениях алфавита т
равно
39
I  k log 2 m бит
(4)
Для неравновероятных алфавитов энтропия на символ алфавита
m
H   pi log 2
i 1
количество
(5)
m
1
   pi log 2 pi бит/символ
i 1
pi
информации
в
сообщении,
составленном
из
k
неравновероятных символов,
(6)
m
I  k  pi log 2 pi бит
i 1
При решении задач, в которых энтропия вычисляется как сумма
произведений вероятностей на их логарифм, вероятности всегда должны
представлять группу полных событий, независимо от того, являются ли они
безусловными pa i  условными
pai / bi  или
вероятностями совместных
событий pai , bi  .
Количество информации определяется исключительно характеристиками первичного алфавита, объем — характеристиками вторичного
алфавита. Объем1 информации
Q  k  lср
(7)
где lср — средняя длина кодовых слов вторичного алфавита. Для
равномерных кодов (все комбинации кода содержат одинаковое количество
разрядов)
Q  kn ,
(8)
где п — длина кода (число элементарных посылок в коде). Согласно (3),
объем равен количеству информации, если
l ср  H ,
т. е. в случае
максимальной информационной нагрузки на символ сообщения. Во всех
остальных случаях I  Q .
40
Например, если кодировать в коде Бодо некоторый равновероятный
алфавит, состоящий из 32 символов, то
I  kH  k log 2 m  kl log 32  k * 5 , бит;
Q  klср  k * 5.
Если кодировать в коде Бодо русский 32-буквенный алфавит, то без
учета корреляции между буквами количество информации
I  kH  k * 4,358 бит; Q  k * 5; Q  1, ,
т. е. если в коде существует избыточность и H  H макс , то объем в битах
всегда больше количества информации в тех же единицах.
2. ЦЕЛЬ И ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ
Цель задания – закрепить и усовершенствовать знания и умения по
построению математических моделей теории информационных процессов.
Вычисления количества информации и величины энтропии заданных систем
Сформировать умение разделить сложный объект на простые
составляющие, определить взаимосвязи между ними
Работу следует выполнять в таком порядке:
изучить описание работы;
получить необходимые теоретические знания из раздела Общие
сведения по предмету работы
внимательно изучить приемы решения типовых задач в разделе
Методические указания
согласно своему варианту задания, соответствующему номеру ячейки решить
заданные примеры без применения ЭВМ
разработать алгоритмы решения отдельных задач (по согласованию с
преподавателем) в инструментальной среде и системах компьютерной
математики Maple, MatLab, Mathcad по одному из каждого раздела задания.
Оформить и защитить отчет.
41
3. ЗАДАНИЯ:
Определить количество информации по условиям задач
Задача
1.1.Символы
алфавита
обладают
двумя
качественными
признаками,
а) Какое количество сообщений можно получить, комбинируя по 3, 4, 5
и 6 элементов в сообщении?
б) Какое количество информации приходится на один элемент таких
сообщений?
Задача 1.2. В алфавите три буквы А, В, С. а) Составить максимальное
количество сообщений, комбинируя по три буквы в сообщении, б) Какое
количество информации приходится на одно такое сообщение? в) Чему равно
количество информации на символ первичного алфавита?
Задача 1.3. а) Чему равна максимальная энтропия системы, состоящей
из двух элементов, каждый из которых может быть и двух состояниях? б)
Чему равна энтропия системы, состоящей из трех элементов, каждый из
которых может быть в четырех состояниях? в) Чему равна энтропия системы,
состоящей из четырех элементов, каждый из которых может быть в трех
состояниях?
Задача 1.4. Генератор вырабатывает четыре частоты
f1,f2, f3, f4. В
шифраторе частоты комбинируются по три частоты в кодовой комбинации,
а) Чему равно максимальное количество комбинаций, составленных из
этих частот?
б) Чему равно количество информации па одну кодовую посылку этих
кодов?
Задача 1.5. Сколькими способами можно передать положение фигур на
шахматной доске? Чему равно количество информации в каждом случаев?
Задача 1.6. Какое количество информации приходится на букву
алфавита, состоящего из 16; 25; 32 букв?
42
Задача 1.7. Известно, что одно из равновероятных возможных
сообщений несет 3 бита информации. Из скольких качественных признаков
состоит алфавит, если N  8 ?
Задача 1.8. Чему равно количество информации в сообщении,
переданном
в
пятизначными
двоичном
коде
комбинациями,
пятизначной
если
символы
комбинацией
кодируемого
и
двумя
алфавита
равновероятны?
Задача 1.9. Чему равно количество информации при получении 8
сообщений равномерного четырехзначного троичного кода?
Задача 1.10. Чему равна вероятность появления комбинации 10110 при
передаче пятизначных двоичных кодов? Чему равно среднее количество
информации, приходящейся на одну комбинацию?
Определить энтропию системы по условиям задач
Задача 2.1 Сообщения составлены из равновероятного алфавита,
содержащего m  128 качественных признаков. Чему равно количество
символов в принятом сообщении, если известно, что оно содержит 42 бита
информации? Чему равна энтропия этого сообщения?
Задача 2.2 Определить максимум энтропии системы, состоящей из 6
элементов, каждый из которых может быть в одном из четырех состояний
равновероятно.
Задача 2.3. Физическая система может находиться в одном из четырех
состояний. Состояния системы заданы через вероятности следующим
образом:
A
a1
a2
a3
a4
0,25 0,25 0,25 0,25
Определить энтропию такой системы.
43
Задача 2.4. Определить энтропию источника сообщений, если статистика распределения вероятностей появления символов на выходе
источника сообщений представлена следующей схемой:
A
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
0,35 0,035 0,07 0,15 0,07 0,07 0,14 0,035 0,01 0,07
Задача 2.5 В сообщении, составленном из 5 качественных признаков,
которые используются с разной частотой, вероятности их появления равны
соответственно:
p1  0,7; p2  0,2; p3  0,08; p4  0,015; p5  0,005. .
Всего
в
сообщении принято 20 знаков. Определить количество информации во всем
сообщении. Каким будет количество информации в данном сообщении, если
все признаки будут иметь равную вероятность?
Задача 2.6. Определить энтропию полной многоуровневой иерархической системы, количество элементов которой на каждом уровне связано
зависимостью l n  K n , где К — основание системы, а n — номер
иерархического
уровня.
При
этом
считается,
что
корень
графа,
представляющего иерархическое дерево системы, расположен на нулевом
уровне. Каждый элемент системы может находиться с равной вероятностью в
т состояниях.
Задача 2.7. Определить энтропию иерархической системы, заданной
графом (рис. 1), если каждый элемент системы (узел графа) может с равной
вероятностью находиться в трех состояниях.
Задача 2.8 Определить энтропию иерархической системы, заданной
графом (рис. 2), если каждый элемент системы может с равной вероятностью
находиться в четырех состояниях.
44
4.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
4.1 Примеры решения задач.
Задача 1. Сколькими способами можно передать положение фигур на
шахматной доске? Чему равно количество информации в каждом случаев?
Решение:
Можно пронумеровать все клетки шахматной доски и передавать номер
клетки. Для этого потребуется 64 качественных признака т — 64, но для
передачи номера клетки достаточно будет одного сообщения. При этом
количество информации:
I  n log 2 m  1log 2 64  6 бит.
Указать на доске необходимую клетку можно, передав ее координаты по
горизонтали и вертикали. Для этого достаточно восьми качественных
признаков (восемь номеров по горизонтали и восемь по вертикали), но
передавать нужно будет два сообщения. При этом количество информации:
I  2 log 2 8  2 * 3  6 бит.
Если номер по горизонтали и вертикали передавать двоичным кодом,
потребуется два качественных признака, которые комбинируются по три
элемента в сообщении. При этом количество информации:
I  2 log 2 23  2 * 3 log 2 2  6
бит.
Задача 2. На ВЦ постоянная информация хранится в 32768 стандартных
ячейках. Сколькими способами можно передать сведения о том, из какой
ячейки можно извлечь данные постоянной информации? Чему равно
количество информации в каждом случае? Какое геометрическое построение
хранилища
позволит
передавать
эту
информацию
минимальным
количеством качественных признаков?
Решение:
Пронумеровать все ячейки и передавать номер, в этом случае:
I  n log 2 m  1* log 2 32768  15 бит.
45
Расположить ячейки квадратом и передавать номер ячейки по вертикали
и горизонтали. Число сообщений при этом равно двум:
I  n log 2 m  2 log 2 2 32768  log 2 32768  15 бит.
Расположить ячейки в форме куба и передавать три координаты. Число
сообщений при этом равно трем:
I  3 log 2 3 32768  15 бит.
Куб — форма, обеспечивающая наименьшее т. Разместить, например,
постоянную информацию в 64 шкафа, внутри каждого шкафа расположить
ячейки в форме куба. При этом придется передавать отдельно номер шкафа и
номер ячейки в шкафу. Общее количество информации
I  I1  I 2
Количество качественных признаков для передачи номера ячейки и
номера шкафа тремя сообщениями соответственно равны:
I 1  log 2 N1  log 2 64  6 бит,
I 2  log 2 N 2  log 2 512  9 бит, .
I  I 1  I 2  15 бит.
Примечание: С точки зрения уменьшения количества качественных
признаков число шкафов, на которое целесообразно разбивать хранилище,
должно быть таким, чтобы m2  m1 . В нашем примере для четвертого случая
m1  3 512  8; m2  3 64  4.
Задача
3.
Чему
равна
энтропия
системы,
состоящей
из
k
взаимонезависимых подсистем, если: 1) каждая подсистема состоит из п
элементов, каждый из которых с равной вероятностью может находиться в т
состояниях; 2) подсистема S1 состоит из п1 элементов, подсистема S2 состоит
из п2 элементов и т.д., подсистема Sk состоит из nk элементов, каждый из
которых может с равной вероятностью находиться в т состояниях; 3) каждая
подсистема состоит из разного количества элементов, которые с разной вероятностью могут находиться в одном из состояний?
46
Решение:
1) Находим энтропию одной подсистемы
H  log 2 m n .
Общая энтропия системы равна сумме энтропии отдельных подсистем
k
H общ   H k log 2 m n ;
i 1
2) Определяем энтропию отдельных подсистем
H1  log 2 m1n1 ; H 2  log 2 m2n2 ; ; H k  log 2 mknk . .
Общая энтропия системы
H общ  H 1  H 2    H k  log 2 m1n1  log 2 m2n21   log 2 mknk 1 


.
k
 log 2 m1 q * m2n2 *  * mknk  log 2  mini .
n
i 1
3) Определяем энтропию на один элемент подсистемы
m1
m2
mk 1
i 1
i 1
i 1
H 1   pi1 log 2 pi1 ; H 2   pi2 log 2 pi21 ;; H k   pik log 2 pik ; .
Определяем энтропию отдельных подсистем
H1'  n1 H1 ; H 2'  n2 H 2 ;; H k'  nk H k .
Общая энтропия системы
k
H общ   H i  H 1' H 2'   H k'  .
i 1
Задача4 Определить объем и количество информации в тексте «Широка
страна моя родная», переданном стандартным телеграфным кодом № 3
Решение.
Число принятых символов, включая пробел:
k  24 .
Объем информации:
Q  k * lср  24 * 7  168 бит.
Количество информации:
а) для равновероятного алфавита
H1  log 2 m  log 2 32  5 бит/символ,
47
I1  kH1  24 * 5  120 бит;
б) для не равновероятного алфавита (в этом и подобных случаях
энтропия первичного алфавита не высчитывается каждый раз, а берется
энтропия русского алфавита)
32
H 2   pi log 2 pi   p a log 2 p a  pб log 2 pб    p я log 2 p я   4,36 бит / символ.
i 1
I 2  kH  24 * 4,36  104,64 бит.
4.2 Примеры решения задач с применением ЭВМ
Задача 1. Сколькими способами можно передать положение фигур на
шахматной доске? Чему равно количество информации в каждом
случаев?
Разработаем алгоритм решения данной задачи в среде Mathcad:
Задача 2. На ВЦ постоянная информация хранится в 32768 стандартных
ячейках. Сколькими способами можно передать сведения о том, из какой
ячейки можно извлечь данные постоянной информации? Чему равно
количество информации в каждом случае? Какое геометрическое построение
хранилища
позволит
передавать
эту
информацию
минимальным
количеством качественных признаков?
Разработаем алгоритм решения данной задачи в среде Mathcad:
Если пронумеровать все ячейки и передавать номер, в этом случае:
48
Если расположить ячейки квадратом и передавать номер ячейки по
вертикали и горизонтали. Число сообщений при этом равно двум:
Если расположить ячейки в форме куба и передавать три координаты.
Число сообщений при этом равно трем:
Количество качественных признаков для передачи номера ячейки и
номера шкафа тремя сообщениями соответственно равны:
С точки зрения уменьшения количества качественных признаков число
шкафов, на которое целесообразно разбивать хранилище, должно быть
таким, чтобы m2  m1 . В нашем примере для четвертого случая:
Задача4 Определить объем и количество информации в тексте «Широка
страна моя родная», переданном стандартным телеграфным кодом № 3
Разработаем алгоритм решения данной задачи в среде Mathcad:
49
Число принятых символов, включая пробел:
5. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
 наименование работы, постановку задачи
 выбранный вариант задания
 результаты решения задачи с применением ЭВМ
программу решения задачи (представляется в электронном виде)
50
Тема. Энтропия и информация.
Практическая работа № 3 Условная энтропия и энтропия объединения.
1. ОБЩИЕ СВЕДЕНИЯ
Понятие условной энтропии в теории информации используется при
определении взаимозависимости между символами кодируемого алфавита,
для определения потерь при передаче информации по каналам связи, при
вычислении энтропии объединения.
Во всех случаях при вычислении условной энтропии в том или ином виде
используются условные вероятности.
Если при передаче п сообщений символ А появился т раз, символ В появился
l раз, а символ А вместе с символом В- kраз, то вероятность появления
символа А р(А) = m/n; вероятность появления символа В р(В)=l/n;
вероятность совместного появления символов А и В р (А В) = k/n ; условная
вероятность появления символа А относительно символа В и условная
вероятность появления символа В относительно символа А
(7)
Если известна условная вероятность, то можно легко определить и
вероятность совместного появления символовА и В, используя выражение (7)
(8)
От классического выражения (4) формула условной энтропии отличается тем,
что в ней вероятности — условные:





H b j / ai   p b j / ai log p b j / ai

(9)
i
Суть взаимозависимости символов букв алфавита заключается в том, что
вероятность появления i-й буквы в любом месте сообщения зависит от того,
какие буквы стоят перед ней и после нее, и будет отличаться от безусловной
вероятности ptизвестной из статистических свойств данного алфавита.
H ai / b j    pai / b j log pai / b j ,
(10)
i
51
где индекс iвыбран для характеристики произвольного состояния источника
сообщенийА, индекс j выбран для характеристики произвольного состояния
адресата В.
Различают понятия частной и общей условной энтропии. Выражения(9) и
(10) представляют собой частные условные энтропии.
Общая условная энтропия сообщения В относительно сообщения А
характеризует количество информации, содержащееся в любом символе
алфавита, и определяется усреднением по всем символам, т.е. по всем
состояниям с учетом вероятности появления каждого из состояний, и равна
сумме вероятностей появления символов алфавита на неопределенность,
которая остается после того, как адресат принял сигнал
H B / A   pai H b j / ai    pai  pb j / ai log pb j / ai .
i
i
(11)
j
Выражение (11) является общим выражением для определения количества
информации на один символ сообщения для случая неравномерных и
взаимозависимых символов.
Так как р(ai) p (bj / аi) представляет собой вероятность совместного появления
двух событий р(аi, bj),то формулу (11) можно записать следующим образом:
H B / A   pai , b j log pb j / ai .
i
(12)
j
Понятие общей и частной условной энтропии широко используется при
вычислении информационных потерь в каналах связи с шумами.
В общем случае, если мы передаем т сигналовАи ожидаем получить т
сигналов В, влияние помех в канале связи полностью описывается канальной
матрицей, которую мы приводим ниже:
52
B
А
b1
a1
p(b1 /a1), p(b2 /a1), …, p(bj/a1), …, p(bm/a1)
a2
p(b1 /a2), p(b2 /a2), …, p(bj/a2), …, p(bm/a2)
b2
...bj... bm
ai
am
p(b1/am), p(b2 /ai), …, p(bj/am), …, p(bm/am)
Вероятности, которые расположены по диагонали (выделенные полужирным
шрифтом), определяют правильный прием, остальные— ложный. Значения
цифр, заполняющих колонки канальной матрицы, обычно уменьшаются по
мере удаления от главной диагонали и при полном отсутствии помех все,
креме цифр, расположенных на главной диагонали, равны нулю.
Если описывать канал связи со стороны источника сообщений, то
прохождение данного вида сигнала в данном канале связи описывается
распределением условных вероятностей вида p(bi/ai), так для сигнала а
распределением вида
p (b1 /a 1 )  p(b2 /a 1 )  ...  p(bj /a 1 )  ...  p (b m /a 1 )
(13)
Сумма вероятностей распределения (13) всегда должна равняться 1. Потери
информации, которые приходятся на долю сигнала а описываются при
помощи частной условной энтропии вида
H (b j / a1 )   p(b j / a1 ) log p(b j / a1 ) (14)
(12)
j 1
Суммирование производится по j, так как i-е состояние (в данном случае
первое) остается постоянным.
Чтобы учесть потери при передаче всех сигналов по данному каналу связи,
следует просуммировать все частные условные энтропии, т.е. произвести
53
двойное суммирование по iи по j. При этом в случае равновероятных
появлений сигналов на выходе источника сообщений
H ( B / A)  
1
 p(b j / ai ) log p(b j / ai )
m j
(15)
(на т делим, так как энтропия есть неопределенность на один символ).
В случае неравновероятного появления символов источника сообщений
следует учесть вероятность появления каждого символа, умножив на нее
соответствующую частную условную энтропию. При этом общая условная
энтропия
H ( B / A)   p(ai ) p(b j / ai ) log p(b j / ai )
j
(16)
j
Если мы исследуем канал связи со стороны приемника сообщений, то с
получением
сигнала
bjпредполагаем,
что
был
послан
какой-то
из
сигналов à 1 , à 2 ..... à i ..., à m . При этом канальная матрица будет иметь вид
A / B b1
b2
bj
bm
а1
p(a1 / b1 )
p(a1 / b2 )
p(a1 / b j )
p(a1 / bm )
а2
p(à 2 / b1 )
p(a2 / b2 )
p( a 2 / b j )
p(a2 / bm )
аi
p(ai / b1 )
p(ai / b2 )
p ( ai / b j )
p(ai / bm )
ат
p(am / b1 )
p(am / b2 )
p(a m / b j )
p(am / bm )
В этом случае единице должны равняться суммы условных вероятностей не
по строкам, а по столбцам канальной матрицы
P(a1 /b j )  p(a2 /b j )  ...  p(ai /b j )  ...  p(am /b j )  1 .
54
Частная условная энтропия
m
H (ai / b j )   p(ai / b j ) log p(ai / b j ),
(17)
i 1
а общая условная энтропия
H ( A / B)   p(b j ) p(ai / b j ) log p(ai / b j )
j
(18)
j
Так как
p(ai ) p(b j / ai )  p(ai , b j )
то для вычисления общей условной энтропии наравне с выражением (16)
может быть использовано следующее выражение:
H ( B / A)   p(ai , b j ) log p(b j / ai )
i
(19)
j
Если заданы канальная матрица вида p(b j / ai ) , частная условная энтропия в
этом случае соответствует (14) и безусловные вероятности вида p(ai ) , то
безусловные вероятности приемника p(b j ) находим как
 p(a ) p(b
i
j
/ ai ) , т. е.
i
если заданы безусловные вероятности источника и канальная матрица, то
может быть вычислена энтропия приемника
H ( B)   p(b j ) log p(b j )
j
и наоборот, если заданы вероятности вида p(b j ) и канальная матрица,
описывающая канал связи со стороны приемника сообщений
(частная условная энтропия при этом соответствует выражению (17)), то
p(ai )   p(b j ) p(ai / b j ) , aзначит может быть определена
j
55
энтропия источника сообщений H ( A)   p(ai ) log p(ai )
i
Если взаимозависимость связывает 3 элемента ai, aj , akто условная энтропия
вычисляется по формуле
H ( A / B, K )   p(ai , a j , ak ) log p(ai , a j , ak )
i
j
k
аналогично и для 4, 5, ..., п элементов.
Энтропия объединения используется для вычисления энтропии совместного
появления статистически зависимых сообщений. Например, передав сто раз
цифру 5 по каналу связи с помехами, заметим, что цифра 5 была принята 90
раз, цифра 6—8 раз и цифра 4 —2 раза. Неопределенность возникновения
комбинаций вида 5—4, 5—5, 5—6 при передаче цифры 5 может быть
описана при помощи энтропии объединения. Н(А, В)— неопределенность
того, что будет послано
А, а принято В. Для ансамблей переданных
сообщений А и принятых сообщений В энтропия объединения представляет
собой сумму вида
H ( A, B)   p(ai , b j ) log 2 p(ai , b j )
i
j
Энтропия объединения и условная энтропия связаны между собой
следующими соотношениями:
Энтропия объединения может быть подсчитана при помощи матрицы вида
p (ai / b j ) 
p(a1 / b1 )
p(a1 / b2 )
......
p(a1 / bm )
p(a 2 / b1 )
p(a 2 / b2 ) ......
p(a 2 / bm )
p(a3 / b1 )
p(a3 / b2 ) ......
p(a3 / bm )
p(a m / b1 )
p(a m / b2 ) ......
p(a m / bm )
56
Такая матрица обладает замечательным свойством:
 p(a , b )  p(b )
i
i
j
i
 p(a , b )  p(a ) , при этом  p(a )  p(b )  1 .
i
i
i
i
j
i
i
j
Это
свойство, в свою очередь, позволяет вычислять энтропию как источника, так
и приемника сообщений непосредственно по канальной матрице
H ( A)    p(ai , b j ) log  p(ai , b j )
i
j
j
H ( B)    p(b j , ai ) log  p(b j , ai )
i
j
j
Суммирование производим по i и j, так как для того, чтобы найти
безусловные вероятности, необходимо суммировать их по одной координате
(имея в виду матричное представление вероятностей), а для нахождения H
суммирование производится по другой координате. Условные вероятности
вида p(ai / b j ) и p(b j / ai ) вычисляются как
p (ai , b j ) 
p (ai , b j )
 p(a , b )
i
;
p(b j / ai ) 
j
i
p(b j , ai )
 p(b , a )
j
i
j
Количество информации на символ сообщения, переданного по каналу связи,
в котором влияние помех описывается при помощи энтропии объединения,
подсчитывается следующим образом:
I   A, B  H  A  H B  H B, A.
2. ЦЕЛЬ И ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ
Цель задания – закрепить и усовершенствовать знания и умения по
построению математических моделей теории информационных процессов.
Вычисления количества информации и величины энтропии заданных систем
57
Сформировать умение разделить сложный объект на простые составляющие,
определить взаимосвязи между ними
Работу следует выполнять в таком порядке:
 изучить описание работы;
 получить необходимые теоретические знания из раздела Общие
сведения по предмету работы
 внимательно изучить приемы решения типовых задач в разделе
Методические указания
 согласно своему варианту задания, соответствующему номеру
ячейки решить заданные примеры без применения ЭВМ
 разработать алгоритмы решения отдельных задач (по
согласованию с преподавателем) в инструментальной среде и
системах компьютерной математики Maple, MatLab, Mathcad по
одному из каждого раздела задания.
 оформить и защитить отчет.
3. ЗАДАНИЯ:
Задача 1.1 При передаче текстовых сообщений статистические наблюдения
показали, что для слов со средней длиной в 6 букв на каждые 100 сообщений
буква А встречается 80 раз, буква В встречается 50 раз, буквы А а В вместе
встречаются 10 раз. Определить условную энтропию появления Л, если в
слове присутствует В, и условную энтропию В, если в слове присутствует А.
Задача
1.2
Определить
общую
условную
энтропию
сообщений,
составленных из алфавита Л, В, если вероятности появления символов в
сообщении равны р Л = 0,6; р В = 0,4. Условные вероятности переходов
одного символа в другой равны .
Задача 1.3 Сообщения передаются двоичным кодом. В первом случае
вероятности появления 0 и 1 равны соответственно P0= 0,8 и
P1 = 0,2.
Помехи в канале связи отсутствуют, т. е. условные вероятности переходов 0 в
1 и 1 в 0 равны нулю.
Во втором случае символы передаются с равными вероятностями р 0 = рi =
0,5, однако в результате действия помех условные вероятности переходов
равны p (1/1)  0,8, p (1/0)  0,2, p (0/0)  0,8, p (0/1)  0,2 .
58
Чему равна энтропия сообщений в первом и во втором случаях?
Задача 1.4 В результате статистических испытаний канала связи № 1 со
стороны источника сообщений были получены следующие условные
вероятности:
p (b1/ à1 )  0,9, p ( b 2 / à1 )  0,1, p (b3 / à1 )  0, p (b1/ à 2 )  0,1, p(b2 / à 2 )  0,8, p (b3 / a 2 =0,1;
p(b1 / à 3 )  0, p(b2 / à 3 )  0, l ;
При испытании канала связи № 2 со стороны приемника сообщений
получены условные вероятности; р(а2/b1) = 0,1; р (а2/b2) = 0,8; p (а2/b3) = 0,08;
р (а3/b1) = 0; р (a3/b2) = 0,12; р (а3/b3) = 0,92.
Построить соответствующие канальные матрицы и определить частные
условные энтропии относительно сигнала а2 (со стороны источника
сообщений) и сигнала b3 (со стороны приемника).
Задача 1.5 Определить все возможные
информационные характеристики
канала связи, в котором взаимосвязь источника с приемником может быть
описана матрицей вида
0,2 0,1 0
p( A / B)  0,2 0 0,2
0,1 0,1 0,1
Задача 1.6 Вероятности появления сигналов на входе приемника сообщений
равны соответственно: p(b1 )  0,2, p (b 2 )  0,3, p( b3 )  0,5 . Канал связи описан
следующей канальной матрицей:
0,97
0
0,01
p(a / b)  0,02 0,98 0,01
0,01 0,02 0,98
Определить энтропию источника сообщений.
Задача 1.7 Определить частную условную энтропию относительно каждого
символа источника сообщений при передаче по каналу связи, описанному
следующей канальной матрицей:
59
0,2
0
p(a, b)  0,1 0,2
0
0
0
0,1 0,4
Задача 1.8 В результате статистических
испытаний канала связи были
получены следующие условные вероятности перехода одного сигнала в
другой: р (b1/а1)= 0,85; р ( b2/а1) = 0,1; р (b3/а1) = 0,05; p(b1/а2) = 0,09; р (b2/а2)
= 0,91; р (b3/а2) = 0; р (b1/а3) = 0; р (b2/а3) = 0,08; р (b3/а3) = 0,92. Построить
канальную матрицу и определить общую условную энтропию сообщений,
передаваемых по данному каналу связи.
Задача 1.9 Построить произвольные канальные матрицы, описывающие
канал связи, как со стороны источника сообщений, так и со стороны
приемника. В чем разница таких матриц? Как определить частные условные
энтропии по одной и по другой матрице?
Задача 1.10 Построить
произвольную матрицу некоторой объединенной
системы. Какие замечательные свойства такой матрицы?
Задача 1.11 Показать процесс перехода от матрицы с вероятностями вида р
(а, b) к матрице с вероятностями вида р(b/а).
Задача 1.12 Определить полные условные энтропии двух систем A и В, если
матрица вероятностей системы, полученной в результате объединения систем
А и В, имеет вид
0,1 0,1
0
p( A, B)  0
0,2 0,1
0
0,2 0,3
Задача 1.13 Чему равна условная энтропия сообщений, передаваемых по
каналу связи, если канальная матрица имеет вид
1 0 0 0
p(b / a) 
0 1 0 0
0 0 1 0
0 0 0 1
Задача 1.14 Влияние помех в канале связи описывается следующим
распределением условных вероятностей:
60
0,98 0,01 0,01
p(b / a)  0,15 0,75
0,3
0,1
0,2
0,5
Вычислить полную условную энтропию сообщений, передаваемых по
данному каналу связи:
а) при равновероятном появлении символов в сообщении;
б) при вероятностях p(a1 )  0,7, p(a2 )  0,2, p(a3 )  0,1.
Задача 1.15 Взаимодействие двух систем А и В описывается следующей
матрицей:
0,4
p( A, B)  0
0,1
0
0,2
0,1 ;
0
0,2
0
Определить безусловную энтропию системыАи системы В
Задача 1.16 Чему равна энтропия источника сообщений H(A), энтропия
приемника H(В), энтропия объединения H(А, В), если канал связи описан
следующей канальной матрицей:
0,1 0,1
0
H ( B, A)  0
0,2 0,1
0
0,2 0,3
Задача 1.17 Условные вероятности состояний системы A
относительно
системы В: p(b1/a 1 )  0,5, p (b 2 /à 1 )  0,5, p (b 2 /à 2 )  0,666, p(b3 /à 2 )  0,334 ;
p(b2 /à 3 )  0,4, p (b3 /à 3 )  0,6, p (b1/à 1 )  p (b1/à 2 )  p(b1/à 3 )  0 . Какой вид имеет матрица
вероятностей объединенной системы AB, если безусловные вероятности
системы А: p(à1 )  0,2, p(à2 )  0,3, p(à3 )  0,5 ?
Задача 2. Выполнять согласно номеру в списке
Пусть опыт α – извлечение из урны 1ого шара, а β – извлечение из этой же
урны 2ого шара. В урне x белых и y черных шаров. Найти H(α), H(β), H(β/α),
H(α/β). (Таблица необходимых логарифмов в конце Метод.указаний)
№
варианта
Кол-во
белых
шаров (x)
Кол-во
черных
шаров (y)
61
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4
2
2
8
18
9
6
17
19
6
13
11
25
7
34
46
14
2
3
7
12
2
2
14
4
14
7
3
2
5
15
29
32
7
26
30
13
3
62
61
57
4
4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Примеры решения задач.
Задача 1. В результате статистических испытаний установлено, что
при передаче каждых 100 сообщений длиной по 5 символом и сообщении
символ K (встречается 50 раз, а символ Т — 30 раз). Вместе с символом К
символ Т встречается 10 раз. Определить условные энтропии Н (K/T) и Н
(Т/К).
Решение. Общее количество переданных символов
n  100 * 5  500.
Вероятность появления символа К
p( K ) 
50
 0,1
500
Вероятность появления символа Т
p(T ) 
30
 0,06
500
62
Вероятность совместного появления символа К и Т
p( KT ) 
10
 0,02
500
Так как ð(ÊÒ)  ð(Ò) ð(Ê/Ò)  ð(Ê) ð(Ò/Ê) , то условная вероятность появления
символа К относительно символа Т
p( K / T ) 
p( KT ) 0,02

 0,33
p(T )
0,06
Условная вероятность появления символаТотносительно символа К
p(T / K ) 
p( KT ) 0,02

 0,2
p( K )
0,1
Условная энтропия символа К относительно Т
H ( K / T )   p(b j , ai ) log 2 p(b j / ai ) 
i
 { p( K / T ) log 2 p( K / T )  [1  p( K / T )] log 2 [1  p( K / T )]} 

 (0,33 log 2 0,33  0,67 log 2 0,67)  0,9149
Условная энтропия появления символа Т относительно К
H (T / K )  (0,2 log 2 0,2  0,8 log 20,8)  0,7219 бит/символ
Задача 2. Построить матрицу вероятностей состояний объединѐнной
системы АВ, если безусловные вероятности системы А:
P(a1 )  0,1, (à 2 )  0,4, (à 3 )  0,5 ;
безусловные
вероятности
системы
B:
p(b1 )  0,2, p(b2 )  0,4, ð(b 3 )  0,4 ; матрицы условных вероятностей:
0,5
0
0
p(a / b)  0,5 0,75 0 ;
0
0,25 1
1
0
p(b / a)  0,25 0,75
0
0,2
0
0 .
0,8
Решение. Определяем вероятности совместных событий вида:
p(a1 / b1 )  p(a1 ) p(b1 / a1 )  0,1
p(a2 / b1 )  p(a2 ) p(b1 / a2 )  0,1
p(a3 / b1 )  p(a3 ) p(b1 / a3 )  0
p(a1 / b2 )  p(a1 ) p(b2 / a1 )  0
63
p(a2 / b2 )  p(a2 ) p(b2 / a2 )  0,3
p(a3 / b2 )  p(a3 ) p(b2 / a3 )  0,1
p(a1 / b3 )  p(a1 ) p(b3 / a1 )  0
p(a2 / b3 )  p(a2 ) p(b3 / a2 )  0
p(a3 / b3 )  p(a3 ) p(b3 / a3 )  0,4
или
p(a1 / b1 )  p(b1 ) p(a1 / b1 )  0,1
p(a1 / b2 )  p(b2 ) p(a1 / b2 )  0
p(a1 / b3 )  p(b3 ) p(a1 / b3 )  0
p(a2 / b1 )  p(b1 ) p(a2 / b1 )  0,1
p(a2 / b2 )  p(b2 ) p(a2 / b2 )  0,3
p(a2 / b3 )  p(b3 ) p(a2 / b3 )  0
p(a3 / b1 )  p(b1 ) p(a3 / b1 )  0
p(a3 / b2 )  p(b2 ) p(a3 / b2 )  0,1
p(a3 / b3 )  p(b3 ) p(a3 / b3 )  0,4
Матрица вероятностей объединенной системы
0,1
0
p( A / B)  0,1 0,3
0
0
0
0,1 0,4
Задача 3. Пусть опыт α – извлечение из урны 1ого шара, а β – извлечение из
этой же урны 2ого шара. В урне 4 белых и 2 черных шара. Найти H(α), H(β),
H(β/α), H(α/β).
Решение.
События опыта α:
Аб – извлечение белого шара, Ач – извлечение черного шара.
Второе событие β:
Вб – извлечение белого шара, Вч – извлечение черного шара.
Если первое извлечение неизвестно (например, мы держим шар, зажатым в руке), то
вероятности будут такими
64
Опыт α
Вероятность
Аб
Р(Аб) =
Опыт β
Вероятность
Вб
Р(Вб) =
=
Ач
Р(Ач) =
=
=
Вч
Р(Вч) =
=
Тогда мы можем найти H(α) и H(β).
H(α) = - Аб ∙
H(α) = -
- Ач ∙
∙
∙
-
H(β) = - Вб ∙
H(β) = -
.
- Вч ∙
∙
= 0, 918
.
∙
-
= 0, 918
Вероятности после вытаскивания 1ого шара:
P(Вб / Аб) =
= 0,6
P(Вч / Аб) =
= 0,4
P(Вб / Ач) =
= 0,8
P(Вч / Ач) =
= 0,2
Найдем условную энтропию опыта β при событии Аб
H(β/ Аб) = - P(Вб / Аб) ∙
H(β/ Аб) = -
∙
- P(Вч / Аб) ∙
-
H(β/ Ач) = - P(Вб / Ач) ∙
H(β/ Ач) = -
∙
= 0,971
- P(Вч / Ач) ∙
-
.
.
= 0,721
Тогда по формуле
H(β/α) = P(Аб) ∙ H(β/ Аб) + P(Ач) ∙ H(β/ Ач).
H(β/α) =
∙ 0,971 +
∙ 0,721 = 0,8879
Просчитать H(α/β) можно двумя способами:
1) Аналогично H(β/α)
2) Или другим способом из равенства:
H(α) + H(β/α) = H(β) + H(α/β)
= > H(α/β) = H(α) + H(β/α) - H(β)
H(α/β) = 0,918 + 0,8879 – 0,918 = 0,8879
ОТВЕТ: H(α) = 0,918;
H(β) = 0,918; H(β/α) = 0,8879; H(α/β) = 0,8879.
65
Программа для просчета H(α), H(β), H(β/α), H(α/β), в которой переменные
обозначают различные значение, некоторые из которых являются лишь
промежуточными.
[
class Program
{
static void Main(string[] args)
{
double otv1, otv2, h1, h2, x, y, p1, p2, p3, p4, ab, ah, vb, vh, bel, cher;
Console.Write("bel=
");
bel = Convert.ToDouble(Console.ReadLine());
Console.Write("cher=
");
cher = Convert.ToDouble(Console.ReadLine());
ab = Convert.ToDouble((double)bel / (double)(bel + cher));
ah = Convert.ToDouble((double)(cher + bel - bel) / (double)(bel + cher));
vb = Convert.ToDouble((double)cher / (double)(bel + cher));
vh = Convert.ToDouble((double)(cher + bel - cher) / (double)(bel + cher));
x = (-1) * (ab * (Math.Log(ab, 2))) - (ah * (Math.Log(ah, 2)));
Console.WriteLine("x=
" + x);
y = (-1) * (vb * (Math.Log(vb, 2))) - (vh * (Math.Log(vh, 2)));
Console.WriteLine("y=
" + y);
p1 = Convert.ToDouble((double)(bel - 1) / (double)(cher + bel - 1));
p2 = Convert.ToDouble((double)cher / (double)(cher + bel - 1));
p3 = Convert.ToDouble((double)bel / (double)(cher + bel - 1));
p4 = Convert.ToDouble((double)(cher - 1) / (double)(cher + bel - 1));
h1 = (-1) * (p1 * (Math.Log(p1, 2))) - (p2 * (Math.Log(p2, 2)));
h2 = (-1) * (p3 * (Math.Log(p3, 2))) - (p4 * (Math.Log(p4, 2)));
otv1 = ab * h1 + ah * h2;
Console.WriteLine("OTV1=
" + otv1);
otv2 = otv1 + x - y;
Console.WriteLine("OTV2=
" + otv2);
Console.ReadLine();
}
}
]
Переменная ab принимает значение Р(Аб);
Переменная ah принимает значение Р(Ач);
Переменная vb принимает значение Р(Вб);
Переменная vh принимает значение Р(Вч);
Переменная x является одной из результатов нам необходимых и принимает
значение H(α);
Переменная y является одной из результатов нам необходимых и принимает
значение H(β)
Переменная p1 принимает значение P(Вб / Аб)
66
Переменная p2 принимает значение P(Вч / Аб)
Переменная p3 принимает значение P(Вб / Ач)
Переменная p4 принимает значение P(Вч /Ач)
Переменная h1принимает значение H(β/ Аб)
Переменная h2 принимает значение H(β/ Ач)
Переменная otv1 является одной из результатов и принимает значение H(β/α)
Переменная otv2 является одной из результатов и принимает значение H(α/β).
К Задаче 2:
Таблица значений логарифмов, которые потребуются для расчета
энтропии в данных задачах
Число P
Число P
Число P
-1
-1,7369
-0.2995
- 1,5849
-0,5145
-2,5025
- 0,5849
-1,8744
-0,2801
-2
-1,4564
-4,1699
-0,4150
-0,6520
-0,0824
- 0,3219
-0,4594
-3,2479
- 1,3219
-3,9068
-0,1604
- 0,7369
-2,9068
-4,3923
- 2,3219
-1,9068
-3,3923
-1,8073
-1,0995
-2.0703
-0,4854
-0,9068
-1.0703
-3
-0,4474
-0.9328
-1,4150
-0,2064
-0.3923
-0,6780
-0,0995
-0,0703
-0,1926
-2.4150
-2,5235
-3,1699
-1,1926
-2,2016
-0,1699
-0,8300
-0,3536
-0,2756
-2.2370
-0.8898
-2,2630
-0.3439
-0.1699
67
-0,3370
-1,7725
-0,1443
-2,2730
-1,6571
-0,0465
-0,3344
-0,5501
-0,0230
-2.3692
-0,4995
-4,4150
-2.1468
-1.9328
-3,1926
-1,2537
-1,6918
-0,1671
-1,1468
-0,5343
-0,0692
-0,8667
-0.4381
-0.8898
-0,7842
-1.9668
-0.1699
-0.3692
-0.4262
-0,1443
-0.3103
-2,1575
-0,0465
-5
-0,3661
-0,0230
-2.4150
-2,1822
-4,4150
-2.1926
-0,3590
-3,1926
-1.0931
-5,9777
-0,1671
-0.9125
-4,9772
-0,0692
-0.3561
-3,1699
-0,4580
-1.1192
5. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
 наименование работы, постановку задачи
 выбранный вариант задания
 результаты решения задач без применения ЭВМ
 программу решения задач по указанию преподавателя (представляется
в электронном виде)
68
Тема. Оптимальное кодирование
Практическая работа №4 Почти оптимальные коды
2. ОБЩИЕ СВЕДЕНИЯ
Дискретная форма представления информации является наиболее
общей и универсальной. В виде совокупности символов, принадлежащих к
ограниченному алфавиту, можно представить, как текст или массивы чисел,
так и оцифрованные звук и изображение. С учетом этого, очевидно, что
должны существовать универсальные методы сжатия данных (цифровой
информации), применимые ко всем ее разновидностям. В силу своей
универсальности эти методы должны исключать потерю информации (такая
потеря может быть допустима при передаче, например, мелкой детали
изображения, но неприемлема, когда речь идет, скажем, о коде программы).
С другой стороны, в ряде приложений общие методы наверняка не будут
наиболее эффективными. Например, в силу особенностей зрительного и
слухового восприятия, некоторое «огрубление» изображения или звука
может оказаться малозаметным, при этом выигрыш в объеме передаваемых
данных окажется значительным. В этих случаях уместно использовать
специальные методы сжатия с потерями (см. рис. 1).
Рисунок 1 – Обзор методов сжатия информации.
При кодировании со сжатием без потерь выделяются две
разновидности методов: первая основана на раздельном кодировании
символов. Основная идея состоит в том, что символы разных типов
встречаются неодинаково части и если кодировать их неравномерно (так,
чтобы короткие битовые последовательности соответствовали часто
встречающимся символам), то в среднем объем кода будет меньше. Такой
подход, именуемый статистическим кодированием, реализован, в
частности, в широко распространенном коде Хаффмана. Именно коды таких
69
типов и рассматриваются в данной лабораторной работе. Все остальные типы
кодирования представлены несколькими вариантами в расчѐтно-графической
работе.
Очевидно, что посимвольное кодирование не использует такого
важного
резерва
сжатия
данных,
как
учет
повторяемости
последовательностей (цепочек) символов. Простейший вариант учета
цепочек – так называемое ―кодирование повторов‖ или код RLE, когда
последовательность одинаковых символов заменяется парой ―код символа +
количество его повторов в цепочке‖. В большинстве случаев цепочки
одинаковых символов встречаются нечасто. Однако, например, при
кодировании черно-белых растровых изображений, каждая строка которых
состоит из последовательных чѐрных или белых точек, такой подход
оказывается весьма эффективным (он широко применяется при
факсимильной передаче документов). Кроме того, кодирование повторов
нередко используется как составной элемент более сложных алгоритмов
сжатия. Гораздо более универсальным является алгоритм, позволяющий
эффективно кодировать повторяющиеся цепочки разных символов, имеющие
при этом произвольную длину. Такой алгоритм был разработан Лемпелем и
Зивом и применяется в разных версиях в большинстве современных
программ-архиваторов. Идея алгоритма состоит в том, что цепочка символов,
уже встречавшаяся в передаваемом сообщении, кодируется ссылкой на более
раннюю (при этом указываются ―адрес‖ начала такой цепочки в ―словаре‖
сообщения и ее длина).
Специализированные методы сжатия с потерями информации,
естественно принципиально различаются для графики и звука.
К методам сжатия изображений относятся ―блочный‖ алгоритм JPEG,
основанный на независимом ―огрублении‖ небольших фрагментов
изображений (квадраты 8×8 пикселей). Здесь с ростом степени сжатия
проявляется мозаичность изображения. Блочный метод JPEG (разработанный
специальной группой международного комитета по стандартизации) получил
сейчас повсеместное распространение. Достигается степень сжатия, в
среднем, в десятки раз.
При волновом сжатии в отличие от блочного изображение как бы
―размывается‖ (чем выше степень сжатия, тем более нечетки границы и
детали). При передаче данных получаемое изображение постепенно
―проявляется‖ в деталях. Это позволяет получателю самому выбирать
необходимый компромисс между качеством и скоростью получения
изображения, что очень удобно, например, в Интернет. К тому же, как потеря
70
качества ―размытость‖ не столь резко воспринимается глазом по сравнению с
―мозаичностью‖. Так что при субъективно близком уровне качества волновой
метод дает большую степень сжатия по сравнению с ―блочным‖. Именно
такой подход реализован в новом стандарте JPEG 2000.
Наконец, фрактальное сжатие основывается на том, что в
изображении можно выделить фрагменты, повороты и масштабирование
которых позволяет многократно использовать их при построении всей
―картинки‖. Выделение и построение математического описания таких
элементов-фракталов – трудоемкая в вычислительном отношении задача.
Зато высокая степень сжатия (в сотни раз) и быстрота построения
изображения по его фрактальному описанию делают метод очень удобным,
когда не требуется быстрота компрессии. Например, этот метод удобно
использовать при записи изображений на CD-ROM.
Наконец, методы сжатия звука существенно различаются в
зависимости от того, насколько хорошо известны специфические
особенности его источника. Примерами источников, чьи особенности
решающим образом влияют на характер звука, являются человеческий
речевой аппарат и музыкальные инструменты. Для них эффективным
способом сжатия звуковой информации является моделирование, когда
передаются не характеристика звука, а параметры модели его источника.
При кодировании сообщений считается, что символы сообщения
порождаются некоторым источником информации. Источник считается
заданным
полностью,
если дано вероятностное описание процесса
появления сообщений на выходе источника. Это означает, что в любой
момент времени определена вероятность порождения источником любой
последовательности символов Р(x1x2x3...xL), L≥1. Такой источник называется
дискретным вероятностным источником.
Если вероятностный источник с алфавитом А={a1, a2, ..., an} порождает
символы алфавита независимо друг от друга, т.е. знание предшествующих
символов не влияет на вероятность последующих, то такой источник
называется бернуллиевским. Тогда для любой последовательности x1x2...xL,
L≥1, порождаемой источником, выполняется равенство:
P(x1x2...xL ) = P(x1)·P(x2)·...·P(xL),
где P(x) – вероятность появления символа х, Р(x1x2x3...xL) – вероятность
появления последовательности x1x2x3...xL.
Для
другого
класса
источников
(марковских)
существует
статистическая взаимосвязь между порождаемыми символами. В
дальнейшем мы будем рассматривать кодирование стационарных (с
71
неизменным распределением вероятностей) бернуллиевских дискретных
источников без памяти.
Пусть имеется дискретный вероятностный источник без памяти,
порождающий символы алфавита А={a1,…,an} с вероятностями pi  P(ai ) ,
i1 pi  1 .
n
Основной характеристикой источника является энтропия,
которая представляет собой среднее значение количества информации в
сообщении источника и определяется выражением (для двоичного случая)
n
H ( p1 ,, pn )   pi log 2 pi .
i 1
Энтропия характеризует меру неопределенности выбора для данного
источника.
1
Величина H L    P( x) log P( x) называется энтропией на символ
L xAL
последовательности длины L, где AL  множество всех последовательностей
длины L в алфавите A, x=(x1,x2,...,xL)  последовательность L букв
дискретного cтационарного источника. Обозначим через H 
предел
энтропии HL при L  H   lim H L . Эту величину называют предельной
L
энтропией источника. Показано, что для стационарного бернуллиевского
источника
Н   H ( p1 ,..., pn ) .
Для практических применений важно, чтобы коды сообщений имели по
возможности
наименьшую
длину.
Основной
характеристикой
неравномерного кода является количество символов, затрачиваемых на
кодирование одного сообщения. Пусть имеется разделимый побуквенный
код для источника, порождающего символы алфавита А={a1,…,an} с
вероятностями pi =P(ai), состоящий из n кодовых слов с длинами L1,…,Ln в
алфавите {0,1}. Средней длиной кодового слова называется величина
n
Lcp   pi Li , которая показывает среднее число кодовых букв на одну букву
i 1
источника.
Побуквенный разделимый код называется оптимальным, если средняя
длина кодового слова минимальна среди всех побуквенных разделимых
кодов для данного распределения вероятностей символов.
Избыточностью кода называется разность между средней длиной
кодового слова и предельной энтропией источника сообщений
72
r  Lcp  H ( p1 ,..., pn ) .
Избыточность кода является показателем качества кода, оптимальный
код обладает минимальной избыточностью. Задача эффективного
неискажающего сжатия заключается в построении кодов с наименьшей
избыточностью, у которых средняя длина кодового слова близка к энтропии
источника. К таким кодам относятся классические коды Хаффмана,
Шеннона, Фано, Гилберта-Мура и арифметический код.
Взаимосвязь между средней длиной кодового слова и энтропией
дискретного вероятностного источника при побуквенном кодировании
выражает следующая теорема.
Теорема 1 (Шеннон). Для источника с алфавитом А={a1,…,an} и
вероятностями pi =P(ai),
n
 pi  1
и любого разделимого побуквенного кода
i 1
средняя длина кодового слова всегда не меньше энтропии
Lcp ≥ H(p1,…,pn)
и можно построить разделимый побуквенный код, у которого средняя
длина кодового слова превосходит энтропию не больше, чем на единицу:
Lcp < H(p1,…,pn)+1
Можно получить более сильные результаты, если кодовые слова
приписывать не отдельными буквами, а блоками из L букв источника. Так,
для неравномерных блоковых кодов справедлива следующая теорема.
Теорема 2. Пусть HL  энтропия на букву в блоке длины L
дискретного источник. Тогда существует префиксный код для кодирования
блоков длины L, такой, что средняя длина кодового слова Lcp будет
удовлетворять неравенствам:
1
H L  Lcp  H L  .
L
Кроме того, в случае бернуллиевского стационарного источника для
любого >0 можно выбрать достаточно большое L, чтобы величина Lcp
удовлетворяла неравенствам:
H ( p1 ,..., pn )  Lcp  H ( p1 ,..., pn )   ,
и левое неравенство для Lcp никогда не нарушается для разделимого
кода.
73
Рассмотрим несколько классических побуквенных кодов, у которых
средняя длина кодового слова близка к оптимальной. Пусть имеется
дискретный вероятностный источник, порождающий символы алфавита
А={a1,…,an} с вероятностями pi = P(ai).
Код Шеннона
Код Шеннона позволяет построить почти оптимальный код с длинами
кодовых слов Li   log pi  1. Тогда по теореме Шеннона из п. 5.1
Lcp  H ( p1 ,..., pn )  1 .
Код Шеннона, удовлетворяющий этому соотношению, строится
следующим образом:
1.
Упорядочим символы исходного алфавита
А={a1,a2,…,an} по убыванию их вероятностей: p1≥p2≥p3≥…≥pn.
2.
Вычислим величины Qi:, которые называются
кумулятивные вероятности
Q0=0, Q1=p1, Q2=p1+p2, Q3=p1+p2+p3, … , Qn=1.
3.
Представим Qi в двоичной системе счисления и
возьмем в качестве кодового слова первые  log pi  знаков после
запятой .
Для вероятностей, представленных в виде десятичных дробей, удобно
определить длину кодового слова Li из соотношения
1
1
, i  1,, n .

p

i
2 Li
2 Li 1
Код Фано
Метод Фано построения префиксного почти оптимального кода, для
которого Lcp  H ( p1 ,..., pn )  1 , заключается в следующем. Упорядоченный по
убыванию вероятностей Cписок букв алфавита источника делится на две
части так, чтобы суммы вероятностей букв, входящих в эти части, как можно
меньше отличались друг от друга. Буквам первой части приписывается 0, а
буквам из второй части – 1. Далее также поступают с каждой из полученных
частей. Процесс продолжается до тех пор, пока весь список не разобьется на
части, содержащие по одной букве.
Алфавитный код Гилберта – Мура
74
Е. Н. Гилбертом и Э. Ф. Муром был предложен метод построения
алфавитного кода, для которого Lcp  H ( p1 ,..., pn )  2 .
Пусть символы алфавита некоторым образом упорядочены, например,
a1≤a2≤…≤an. Код  называется алфавитным, если кодовые слова
лексикографически упорядочены, т.е.  (a1 )   (a2 )  ...   (an ) .
1.
2.
3.
Процесс построения кода происходит следующим образом.
Вычислим величины Qi, i=1,n:
Q1=p1/2,
Q2=p1+p2/2,
Q3=p1+p2+p3/2,
…
Qn=p1+p2+…+pn-1+pn/2.
Представим суммы Qi в двоичном виде.
В качестве кодовых слов возьмем  log pi   1
младших бит в двоичном представлении Qi, i  1,...,n .
3. ЦЕЛЬ И ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ
Задание
1. Рассмотреть 3 распределения вероятностей символов алфавита:
равномерное, P1(A) и P2(A). Для каждого распределения получить
кодовые слова, вычислить среднюю длину кодового слова,
избыточность и проверить неравенство Крафта.
2. С помощью реализованных приложений исследовать зависимость
получаемых кодовых слов от распределения вероятностей символов
алфавита:

смоделировать последовательность, символы которой
подчиняются равномерному распределению. Закодировать эту
последовательность при равномерном, P1(A) и P2(A) распределениях
и вычислить длину каждой из трѐх закодированных
последовательностей;

смоделировать последовательность, символы которой
подчиняются распределению P1(A). Закодировать эту
последовательность при равномерном, P1(A) и P2(A) распределениях
и вычислить длину каждой из трѐх закодированных
последовательностей;

смоделировать последовательность, символы которой
подчиняются распределению P2(A). Закодировать эту
75
последовательность при равномерном, P1(A) и P2(A) распределениях
и вычислить длину каждой из трѐх закодированных
последовательностей;

сделать выводы о связи распределения символов
последовательности, вероятностях символов, используемых при
кодировании, и длины получившегося кода.
Замечание: можно объединить приложения для кодирования и
декодирования в одно, в котором будет возможность выбора режима
работы.
ЗАДАНИЯ:
Вари- Алфавит
ант источника А
3.
1
Вероятности появления букв
P1(A)
P2(A)
2,20,200,0,00, ' _' 0.4,0.1,0.1,0.05,0.05,0.3
2
,,*, /, 
0.2,0.3,0.1,0.1,0.3
3
a, b, c, d 
0.01,0.1,0.09,0.8
4
5
4,14,5,1,0,2,8, ' _' 0.01,0.1,0.09,0.1,0,0,0,0.7
11,12,13,14,


15,16,17 
0.5,0.01,0.09,0.02,


0.08,0.2,0.1

Алгоритм
  6 1  2 3 5 5 
2 ,2 ,2 ,2 ,2 , 
64 

 3 1  2 3 5 
 ,2 ,2 ,2 ,2 
 32

2
2
,23 ,21,23

  2 5 11 1

,2 ,0,0,0,23 
2 ,2 ,
128


 3  4  2 5  7 1 3 
2 ,2 ,2 ,2 ,2 ,2 ,

128 

2
0.1,0.1,0.1,0.4,0.3

6
a, b, d , g, _
7
a, b, c, d , e, f 
0.09,0.01,0.1,0.2,0.5,0.1
2
,21,25 ,24 ,23 ,22
8
,,8,3, , a
0.88,0.02,0.01,


0.05,0.01,0.03 
2
,2 5 ,2 5 ,2 2 ,2 3 ,2 4
9
z, w, x
0.01,0.9,0.09
10
A, H , z, w, _
0.35,0.35,0.1,0.1,0.1
3
5
1
,23 ,21,0,22
2
1
,22 ,22

 5 1 5  4 3 
2 ,2 ,2 ,2 , 
8



Шеннона
ГильбертаМура
ШеннонаФано
ШеннонаФано
ГильбертаМура
Шеннона
ГильбертаМура
Шеннона
ГильбертаМура
ШеннонаФано
76
4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Примеры решения задач.
Задача1. Пусть имеются два источника с одним и тем же алфавитом
А={a1,a2,a3} и разными вероятностными распределениями P1={1/3, 1/3, 1/3},
P2={1/4, 1/4, 1/2}, которые кодируются одним и тем же кодом
Задача2. Если А={a1,a2}, p1=0, p2 =1, т.е. источник может породить
только символ a2, то неопределенности нет, энтропия H(p1,p2)=0.
Источник с равновероятными символами А={a1,a2}, p1 =1/2, p2 =1/2,
будет иметь максимальную энтропию H(p1,p2)=1.
  a1  10, a2  000, a3  01 .
Средняя длина кодового слова для разных источников будет различной
Lср(P1)=1/3.2 + 1/3.3 + 1/3.2= 7/3 ≈2.33
Lср(P2)=1/4.2 + 1/4.3 + 1/2.2= 9/4 =2.25
Пример. Код Шеннона. Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с
вероятностями p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07.
Построенный код приведен в таблице 6.
Таблица 6 Код Шеннона
ai Pi
Qi
Li
кодовое слово
2
a1 1/2 ≤0.36<1/2
0
2
00
3
2
a2 1/2 ≤0.18<1/2
0.36
3
010
3
2
a3 1/2 ≤0.18<1/2
0.54
3
100
4
3
a4 1/2 ≤0.12<1/2
0.72
4
1011
a5 1/24≤0.09<1/23
0.84
4
1101
4
3
a6 1/2 ≤0.07<1/2
0.93
4
1110
Построенный код является префиксным. Вычислим среднюю длину
кодового слова и сравним ее с энтропией. Значение энтропии вычислено при
построении кода Хаффмана в п. 5.2 (H = 2.37), сравним его со значением
средней длины кодового слова кода Шеннона
Lср= 0.36.2+(0.18+0.18).3+(0.12+0.09+0.07).4=2.92< 2.37+1,
что полностью соответствует утверждению теоремы Шеннона.
Алгоритм на псевдокоде
Построение кода Шеннона
Обозначим
n – количество символов исходного алфавита
P – массив вероятностей, упорядоченных по убыванию
77
Q– массив для величин Qi
L – массив длин кодовых слов
C – матрица элементарных кодов
P [0]:=0, Q [0]:=0
DO (i=1,…,n)
Q [i] := Q [i-1]+P [i]
L [i]:= - log2P[i] 
OD
(длину кодового слова определять
из соотношения, указанного выше)
DO (i=1,…,n)
DO (j=1,…,L[i])
Q [i-1]:=Q [i-1] *2
(формирование кодового слова
C [i,j]:= Q [i-1]
в двоичном виде)
IF (Q [i-1]>1) Q [i-1]:=Q [i-1] - 1 FI
OD
OD
Пример. код Фано. Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с
вероятностями p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07.
Построенный код приведен в таблице 7 и на рисунке 6.
Таблица 7 Код Фано
ai Pi
кодовое Li
слово
a1 0.36 0 0
2
a2 0.18 0 1
2
a3 0.18 1 0
2
a4 0.12 1 1 0
3
a5 0.09 1 1 1 0 3
a6 0.07 1 1 1 1 4
Λ
0
0
0
а
1
1
0 1
1 0
1
Р
а а
1
2
3
10
1
1
11
а
1
4
1
110
а
5
78
111
а
6
Рисунок 1 Кодовое дерево для кода Фано
Полученный код является префиксным и почти оптимальным со
средней длиной кодового слова
Lср=0.36.2+0.18.2+0.18.2+0.12.3+0.09.4+0.07.4=2.44
Алгоритм на псевдокоде
Построение кода Фано
Обозначим
P–массив вероятностей символов алфавита
L – левая граница обрабатываемой части массива P
R– правая граница обрабатываемой части массива P
k – длина уже построенной части элементарных кодов
С – матрица элементарных кодов
Length – массив длин элементарных кодов
SL – сумма элементов первой части массива
SR – сумма элементов второй части массива.
Fano (L,R,k)
IF (L<R)
k:=k+1
m:=Med (L,R)
DO (i=L,…,R)
IF (i≤m) C [i,k]:=0, Length [i]:= Length [i]+1
ELSE C [i,k]:=1, Length [i]:= Length [i]+1
FI
OD
Fano (L,m,k)
Fano (m+1,R,k)
FI
Функция Med находит медиану части массива P, т.е. такой индекс
m
L≤m≤R, что величина |  pi 
iL
R
 pi | минимальна.
i  m 1
Med (L,R)
SL:= 0
79
DO (i=L,…,R-1)
SL:=SL+ P [i]
OD
SR:=P [R]
m:= R
DO (SL ≥ SR)
m:=m-1
SL:=SL - P [m]
SR:=SR+ P [m]
OD
Med:= m
Пример код Гилберта-Мура. Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с
вероятностями p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07.
Построенный код приведен в таблице 8.
Таблица 8 Код Гилберта-Мура
ai
Pi
Qi
Li
кодовое слово
3
a1 1/2 ≤0.18
0.09 4
0001
3
2
a2 1/2 ≤0.18<1/2
0.27 4
0100
2
1
a3 1/2 ≤0.36<1/2
0.54 3
100
4
a4 1/2 ≤0.07
0.755 5
11000
4
a5 1/2 ≤0.09
0.835 5
11010
4
a6 1/2 ≤0.12
0.94 5
11110
Средняя длина кодового слова не превышает значения энтропии
плюс 2. Действительно,
Lср=4.0.18+4.0.18+3.0.36+5.0.07+5.0.09+5.0.12=3.92<2.37+2
Алгоритм на псевдокоде
Построение кода Гилберта-Мура
Обозначим
n – количество символов исходного алфавита
P – массив вероятностей символов
Q – массив для величин Qi
L – массив длин кодовых слов
C – матрица элементарных кодов
pr:=0
DO (i=1,…,n)
80
Q [i]:= pr+ P[i] /2
pr:=pr+ P[i]
L [i]:= - log2P[i]  +1
(использовать соотношение из п. 6.1)
OD
DO (i=1,…,n)
DO (j=1,…,L[i])
Q [i]:=Q [i] *2
C [i,j]:= Q [i]
IF (Q [i] >1) Q [i]:=Q [i] - 1 FI
OD
OD
(формирование кодового слова
в двоичном виде)
Требования к оформлению отчѐта
Отчѐт должен содержать:
 титульный лист;
 задание на лабораторную работу;
 описание метода решения заданий;
 описание разработанного программного средства;
 описание проведѐнных исследований;
 программный код, написанный непосредственно студентами;
 тестирование программы.
Отчѐт не должен содержать орфографических, пунктуационных и
смысловых ошибок.
Все его разделы должны быть выдержаны в едином стиле оформления.
81
Тема. Оптимальное кодирование
Практическая работа №5 Оптимальные коды Хаффмана
4. ОБЩИЕ СВЕДЕНИЯ
При кодировании сообщений считается, что символы сообщения
порождаются некоторым источником информации. Источник считается
заданным
полностью,
если дано вероятностное описание процесса
появления сообщений на выходе источника. Это означает, что в любой
момент времени определена вероятность порождения источником любой
последовательности символов Р(x1x2x3...xL), L≥1. Такой источник называется
дискретным вероятностным источником.
Если вероятностный источник с алфавитом А={a1, a2, ..., an} порождает
символы алфавита независимо друг от друга, т.е. знание предшествующих
символов не влияет на вероятность последующих, то такой источник
называется бернуллиевским. Тогда для любой последовательности x1x2...xL,
L≥1, порождаемой источником, выполняется равенство:
P(x1x2...xL ) = P(x1)·P(x2)·...·P(xL),
где P(x) – вероятность появления символа х, Р(x1x2x3...xL) – вероятность
появления последовательности x1x2x3...xL.
Пусть имеется дискретный вероятностный источник без памяти,
порождающий символы алфавита А={a1,…,an} с вероятностями pi  P(ai ) ,
i1 pi  1 .
n
Основной характеристикой источника является энтропия,
которая представляет собой среднее значение количества информации в
сообщении источника и определяется выражением (для двоичного случая)
n
H ( p1 ,, pn )   pi log 2 pi .
i 1
Энтропия характеризует меру неопределенности выбора для данного
источника.
Для практических применений важно, чтобы коды сообщений имели по
возможности
наименьшую
длину.
Основной
характеристикой
неравномерного кода является количество символов, затрачиваемых на
кодирование одного сообщения. Пусть имеется разделимый побуквенный
код для источника, порождающего символы алфавита А={a1,…,an} с
вероятностями pi =P(ai), состоящий из n кодовых слов с длинами L1,…,Ln в
алфавите {0,1}. Средней длиной кодового слова называется величина
n
Lcp   pi Li , которая показывает среднее число кодовых букв на одну букву
i 1
источника.
Взаимосвязь между средней длиной кодового слова и энтропией
дискретного вероятностного источника при побуквенном кодировании
выражает следующая теорема.
82
Приведем некоторые свойства, которыми обладает оптимальный
побуквенный код.
Лемма 1. Для оптимального кода с длинами кодовых слов L1,…,Ln: верно
соотношение L1≤L2≤…≤Ln , если p1≥p2≥…≥pn.
Доказательство (от противного): Пусть есть i и j, что Li>Lj при pi>pj.
Тогда
Lipi+Ljpj=
=Lipi+Ljpj+Lipj+Ljpi-Lipj-Ljpi=
=pi(Li-Lj)-pj(Li-Lj)+Ljpi+Lipj=
=(pi-pj)(Li-Lj) +Lipj+Ljpi>Lipj+Ljpi,
т.е. если поменяем местами Li и Lj, то получим код, имеющий меньшую
среднюю длину кодового слова, что противоречит с оптимальности кода.
Лемма 1 доказана.
Лемма 2 Пусть   a1  b1 ,, an  bn
– схема оптимального
префиксного
кодирования
для
распределения
вероятностей
Р,
p1  p2   pn  0 . Тогда среди элементарных кодов, имеющих максимальную
длину, существуют два, которые различаются только в последнем разряде.
Доказательство. Покажем, что в оптимальной схеме кодирования
всегда найдется два кодовых слова максимальной длины. Предположим
обратное. Пусть кодовое слово максимальной длины одно и имеет вид
bn  bx , x {0,1} . Тогда длина любого элементарного кода не больше длины
b, т.е. Li | b | , i  1,, n . Поскольку схема кодирования префиксная, то
кодовые слова b1 ,, bn1 не являются префиксом b. С другой стороны, b не
является префиксом кодовых слов b1 ,, bn1 . Таким образом, новая схема
кодирования    a1  b1 ,, an  b также является префиксной, причем с
меньшей средней длиной кодового слова L  ( P)  L ( P)  pn , что
противоречит оптимальности исходной схемы кодирования. Пусть теперь два
кодовых слова bn1 и bn максимальной длины отличаются не в последнем
разряде, т.е. bn1  bx , bn  bx , b  b , x, x {0,1} . Причем b , b не
являются префиксами для других кодовых слов b1 ,, bn2 и наоборот. Тогда
новая схема σ   a1  b1 ,, an2  bn2 , an1  bx, an  b также является
префиксной, причем L  ( P)  L ( P)  pn , что противоречит оптимальности
исходной схемы кодирования. Лемма 2 доказана.
Оптимальный код Хаффмана
Метод оптимального побуквенного кодирования был разработан в
1952 г. Д. Хаффманом. Оптимальный код Хаффмана обладает минимальной
средней длиной кодового слова среди всех побуквенных кодов для данного
источника с алфавитом А={a1,…,an} и вероятностями pi =P(ai).
Рассмотрим алгоритм построения оптимального кода Хаффмана,
который основывается на утверждениях лемм предыдущего параграфа.
83
1.
Упорядочим
символы исходного алфавита А={a1,…,an} по убыванию их
вероятностей p1≥p2≥…≥pn.
2.
Если
А={a1,a2}, то a10, a21.
3.
Если
А={a1,…,aj,…,an} и известны коды <aj  bj >, j = 1,…,n, то для
алфавита {a1,…aj/, aj//…,an} с новыми символами aj/ и aj// вместо aj,
и вероятностями p(aj)=p(aj/)+ p(aj//), код символа aj заменяется на
коды aj/  bj0, aj// bj1.
2.
ЦЕЛЬ И ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ
1. Реализовать приложение для кодирования с помощью заданного в
варианте алгоритма:
 вероятности появления символов алфавита должны
храниться в одном файле, а последовательность, подлежащая
кодированию, – в другом;
 закодированный текст должен сохраняться в файл;
 приложение должно:
а)
выводить полученные кодовые слова для всех
символов алфавита;
б)
вычислять среднюю длину кодового слова;
в)
вычислять избыточность;
г)
проверять неравенство Крафта.
5.
Реализовать приложение для декодирования с
помощью заданного в варианте алгоритма:
 вероятности появления символов алфавита должны
храниться в одном файле, а закодированная последовательность – в
другом;
 раскодированная последовательность должна сохраняться в
файл.
Замечание: можно объединить приложения для кодирования и
декодирования в одно, в котором будет возможность выбора режима работы.
ЗАДАНИЕ
Вероятности появления букв
ВариАлфавит
Алгоритм
ант
источника А
P1(A)
P2(A)
1
 A, B, C , D,


 E , F , 1, 2 
5
а, б , в, г , 


д, е, ж, з 
0.9,0.01,0.01,0.02,


0.05,0.01,0,0

0.5,0.01,0.09,0.02,


0.08,0.2,0.07,0.03 
2
5

,21,22 ,23 ,24 ,25 ,0,0
 4 5 6 17 
,
2 ,2 ,2 ,
128 

2 7 ,2 2 ,2 2 ,2 2 


Хаффмана
Хаффмана
84
Вариант
Вероятности появления букв
P1(A)
P2(A)
Алфавит
источника А
0.1,0.01,0.09,0.4,0.4,0,0,0 22 ,25 ,21, 11 ,23 ,0,0,0
 А, Б , В, Г , 


 Д , Е, Ж , З 
7

1,2,3,4,5,6,7,8
10
2,4,6,8, 


0, а, б , в 
15
Алгоритм
Хаффмана

128
3 2

,2 ,0,0,0
0.5,0.01,0.09,0.3,0.1,0,0,0 2 5 ,2 3 ,2 1 , 32
Хаффмана


0.4,0.4,0.1,0.05,


0.025,0,0.025,0 
2
3
 Хаффмана
,23 ,0,21,0,22 ,0,0
4.МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Пример. Пусть дан алфавит A={a1, a2, a3, a4, a5, a6} с вероятностями
p1=0.36, p2=0.18, p3=0.18, p4=0.12, p5=0.09, p6=0.07.
Здесь символы источника уже упорядочены в соответствии с их
вероятностями. Будем складывать две наименьшие вероятности и включать
суммарную вероятность на соответствующее место в упорядоченном списке
вероятностей до тех пор, пока в списке не останется два символа. Тогда
закодируем эти два символа 0 и 1. Далее кодовые слова достраиваются, как
показано на рисунке 4.
a1
a2
a3
a4
a5
a6
0.36
0.36
0.18
0.18
0.18
0.18
0.12
0.16
0.09
0.12 010
0.07 0100
011
0101
0.36
0.36
0.28
0.36
0.18
0.28 00
0.18 000
01
001
0.64
0.36
0
1
Рисунок 2 Процесс построения кода Хаффмана
i
1
2
3
Таблица 5 Код Хаффмана
a p
L кодовое
слово
i
i
a 0
2 1
.36
3 000
a 0
3 001
.18
4 011
a 0
4 0100
.18
4 0101
85
4
5
6
a 0
.12
a 0
.09
a 0
.07
Посчитаем среднюю длину, построенного кода Хаффмана
Lср(P)=1.0.36 + 3.0.18 + 3.0.18 + 3.0.12 + 4.0.09 + 4.0.07 =2.44,
при этом энтропия данного источника
H(p1,…,p6) = − 0.36.log0.36 − 2.0.18.log0.18 −
− 0.12.log0.12 − 0.09.log0.09 − 0.07log0.07=2.37

0
0
0
2
а
0
1
0
0
00
а
1
01
1
0
10
11
а
0
3
100
0
0
а
4
101
а
Рисунок 3 Кодовое дерево
для акода Хаффмана
Код Хаффмана обычно строится
и хранится
в виде двоичного дерева, в
5
6
листьях которого находятся символы алфавита, а на «ветвях» – 0 или 1. Тогда
уникальным кодом символа является путь от корня дерева к этому символу,
по которому все 0 и 1 собираются в одну уникальную последовательность
(рис. 5).
Пример возможной реализации алгоритма Хаффмана на С#
namespace huffman
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class Node
{
public char Symbol { get; set; }
86
public int Frequency { get; set; }
public Node Right { get; set; }
public Node Left { get; set; }
public List<bool> Traverse(char symbol, List<bool> data)
{
// Leaf
if (Right == null && Left == null)
{
if (symbol.Equals(this.Symbol))
{
return data;
}
else
{
return null;
}
}
else
{
List<bool> left = null;
List<bool> right = null;
if (Left != null)
{
List<bool> leftPath = new List<bool>();
leftPath.AddRange(data);
leftPath.Add(false);
left = Left.Traverse(symbol, leftPath);
}
if (Right != null)
{
List<bool> rightPath = new List<bool>();
rightPath.AddRange(data);
rightPath.Add(true);
right = Right.Traverse(symbol, rightPath);
}
if (left != null)
{
return left;
}
87
else
{
return right;
}
}
}
}
public class HuffmanTree
{
private List<Node> nodes = new List<Node>();
public Node Root { get; set; }
public Dictionary<char, int> Frequencies = new Dictionary<char, int>();
public void Build(string source)
{
for (int i = 0; i < source.Length; i++)
{
if (!Frequencies.ContainsKey(source[i]))
{
Frequencies.Add(source[i], 0);
}
Frequencies[source[i]]++;
}
foreach (KeyValuePair<char, int> symbol in Frequencies)
{
nodes.Add(new Node() { Symbol = symbol.Key, Frequency =
symbol.Value });
}
while (nodes.Count > 1)
{
List<Node> orderedNodes = nodes.OrderBy(node =>
node.Frequency).ToList<Node>();
if (orderedNodes.Count >= 2)
{
// Take first two items
List<Node> taken = orderedNodes.Take(2).ToList<Node>();
// Create a parent node by combining the frequencies
Node parent = new Node()
{
88
Symbol = '*',
Frequency = taken[0].Frequency + taken[1].Frequency,
Left = taken[0],
Right = taken[1]
};
nodes.Remove(taken[0]);
nodes.Remove(taken[1]);
nodes.Add(parent);
}
this.Root = nodes.FirstOrDefault();
}
}
public List<string> code = new List<string>();
public IEnumerable<string> codec;
public BitArray Encode(string source)
{
List<bool> encodedSource = new List<bool>();
for (int i = 0; i < source.Length; i++)
{
List<bool> encodedSymbol = this.Root.Traverse(source[i], new
List<bool>());
encodedSource.AddRange(encodedSymbol);
this.code.Add("");
foreach (bool a in encodedSymbol.ToArray())
{
this.code[i]+=Convert.ToInt32(a).ToString();
}
}
// IEnumerable<string>
codec = code.Distinct();
BitArray bits = new BitArray(encodedSource.ToArray());
return bits;
}
89
public string Decode(BitArray bits)
{
Node current = this.Root;
string decoded = "";
foreach (bool bit in bits)
{
if (bit)
{
if (current.Right != null)
{
current = current.Right;
}
}
else
{
if (current.Left != null)
{
current = current.Left;
}
}
if (IsLeaf(current))
{
decoded += current.Symbol;
current = this.Root;
}
}
return decoded;
}
public bool IsLeaf(Node node)
{
return (node.Left == null && node.Right == null);
}
}
public HuffmanTree htree;
public BitArray encoded;
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
richTextBox1.Text = "";
90
HuffmanTree htree = new HuffmanTree();
htree.Build(textBox1.Text);
encoded = htree.Encode(textBox1.Text);
MessageBox.Show("Закодировано");
foreach (bool bit in encoded)
{
richTextBox1.Text += ((bit ? 1 : 0).ToString()+" ");
}
foreach (KeyValuePair<char, int> item in htree.Frequencies)
{
richTextBox3.Text += ("Символ: " + item.Key + "\tКоличество: "
+ item.Value.ToString() + "\tЧастота: " + (Math.Round((float)item.Value /
textBox1.Text.Length, 3))+"\tКод " + htree.codec.ToArray()[i]+ "\n");
i++;
}
}
private void button2_Click(object sender, EventArgs e)
{
richTextBox2.Text = "";
richTextBox2.AppendText(htree.Decode(encoded));
}
private void Form1_Load(object sender, EventArgs e)
{
htree = new HuffmanTree();
textBox1.Width = this.Size.Width - 50;
richTextBox1.Width = this.Size.Width - 50;
richTextBox2.Width = this.Size.Width - 50;
richTextBox3.Width = this.Size.Width - 50;
}
private void textBox1_Leave(object sender, EventArgs e)
{
}
ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЁТА
ОТЧЁТ ДОЛЖЕН СОДЕРЖАТЬ:

титульный лист;
91

задание на лабораторную работу;

описание метода решения заданий;

описание разработанного программного средства;

описание проведѐнных исследований;

программный код, написанный непосредственно
студентами;

тестирование программы.
Отчѐт не должен содержать орфографических, пунктуационных и
смысловых ошибок.
Все его разделы должны быть выдержаны в едином стиле оформления.
92
Тема. Помехоустойчивое кодирование
Практическая работа № 6 Помехоустойчивое кодирование по Хеммингу
1.
ОБЩИЕ СВЕДЕНИЯ
Понятие корректирующего кода
Теория помехоустойчивого кодирования базируется на результатах
исследований, проведенных Клодом Шенноном. Он сформулировал теорему
для дискретного канала с шумом: при любой скорости передачи двоичных
символов, меньшей, чем пропускная способность канала, существует такой
код, при котором вероятность ошибочного декодирования будет сколь
угодно мала.
Построение такого кода достигается ценой введения избыточности. То
есть, применяя для передачи информации код, у которого используются не
все возможные комбинации, а только некоторые из них, можно повысить
помехоустойчивость приема. Такие коды называют избыточными или
корректирующими. Корректирующие свойства избыточных кодов зависят
от правил построения этих кодов и параметров кода (длительности символов,
числа разрядов, избыточности и др.).
В настоящее время наибольшее внимание уделяется двоичным
равномерным корректирующим кодам. Они обладают хорошими
корректирующими свойствами и их реализация сравнительно проста.
Наиболее часто применяются блоковые коды. При использовании
блоковых кодов цифровая информация передается в виде отдельных кодовых
комбинаций (блоков) равной длины. Кодирование и декодирование каждого
блока осуществляется независимо друг от друга, то есть каждой букве
сообщения соответствует блок из п символов.
Блоковый код называется равномерным, если п (значность) остается
одинаковой для всех букв сообщения.
Различают разделимые и неразделимые блоковые коды.
При кодировании разделимыми кодами кодовые операции состоят из двух
разделяющихся частей: информационной и проверочной. Информационные и
проверочные разряды во всех кодовых комбинациях разделимого кода
занимают одни и те же позиции.
При кодировании неразделимыми кодами разделить символы выходной
последовательности на информационные и проверочные невозможно.
Непрерывными называются такие коды, в которых введение
избыточных символов в кодируемую последовательность информационных
символов осуществляется непрерывно, без разделения ее на независимые
блоки. Непрерывные коды также могут быть разделимыми и неразделимыми.
Общие принципы использования избыточности
Способность кода обнаруживать и исправлять ошибки обусловлена
наличием избыточных символов. На ввод кодирующего устройства
поступает последовательность из k информационных двоичных символов. На
93
выходе ей соответствует последовательность из п двоичных символов,
причем n>k. Всего может быть
различных входных последовательностей
и
последовательностей.
различных
выходных
Из
общего
числа
выходных последовательностей только
последовательностей
соответствуют входным. Будем называть их разрешенными кодовыми
комбинациями.
Остальные
(
)
возможных
выходных
последовательностей для передачи не используются. Их будем называть
запрещенными кодовыми комбинациями.
Искажение информации в процессе передачи сводится к тому, что
некоторые из передаточных символов заменяются другими - неверными.
Каждая из
разрешенных комбинаций в результате действия помех может
трансформироваться в любую другую. Всего может быть
случаев. В это число входит:
-
·
возможных
случаев безошибочной передачи;
·( -1) случаев перевода в другие разрешенные комбинации, что
соответствует необнаруживаемым ошибкам;
·(
) случаев перехода в неразрешенные комбинации, которые
могут быть обнаружены.
Часть обнаруживаемых ошибочных кодовых комбинаций от общего
числа возможных случаев передачи соответствует:
Кобн
.
Рассмотрим, например, обнаруживающую способность кода, каждая
комбинация которого содержит всего один избыточный символ (п=k+1).
Общее число выходных последовательностей составит
, то есть вдвое
больше общего числа кодируемых входных последовательностей. За
подмножество разрешенных кодовых комбинаций можно принять, например,
подмножество
комбинаций, содержащих четное число единиц (или
нулей).
При
кодировании
к
каждой
последовательности
из k
информационных символов добавляется один символ (0 или 1), такой, чтобы
число единиц в кодовой комбинации было четным. Искажение любого
четного числа символов переводит разрешенную кодовую комбинацию в
подмножество запрещенных комбинаций, что обнаруживается на приемной
стороне по нечетности числа единиц. Часть обнаруженных ошибок
составляет:
Кобн
.
94
Пример кодирующего устройства с проверкой на четность показан на рис.
Основные параметры корректирующих кодов
Основными параметрами, характеризующими корректирующие свойства
кодов,
являются избыточность
кода, кодовое
расстояние, число
обнаруживаемых или исправленных ошибок.
Рассмотрим суть этих параметров.
Избыточность корректирующего кода может быть абсолютной и
относительной. Под абсолютной избыточностью понимают число вводимых
дополнительных разрядов
r = n - k.
Относительной избыточностью корректирующего кода называют
величину
ROTH
или
ROTH
Эта величина показывает, какую часть общего числа
символов кодовой комбинации составляют информационные
символы. Ее еще называют относительной скоростью передачи информации.
Если производительность источника равна Н символов в секунду, то
скорость передачи после кодирования этой информации будет равна
поскольку
в
последовательности
из п символов
только k информационных.
Если число ошибок, которое нужно обнаружить или исправить,
значительно, необходимо иметь код с большим числом проверочных
символов. Скорость передачи информации при этом будет уменьшена, так
как появляется временная задержка информации. Она тем больше, чем
сложнее кодирование.
Кодовое расстояние характеризует cтепень различия любых двух
кодовых комбинаций. Оно выражается числом символов, которыми
комбинации отличаются одна от другой.
Чтобы получить кодовое расстояние между двумя комбинациями
двоичного кода, достаточно подсчитать число единиц в сумме этих
комбинаций по модулю 2.
95
Кодовое расстояние может быть различным. Так, в первичном
натуральном безызбыточном коде это расстояние для различных комбинаций
может различаться от единицы до п, равной значности кода.
Число
обнаруживаемых
ошибок
определяется
минимальным
расстоянием
между
кодовыми
называется хэмминговым.
комбинациями. Это
расстояние
В безызбыточном коде все комбинации являются разрешенными,
=1.
Достаточно только исказиться одному символу, и будет ошибка в сообщении.
Теорема. Чтобы код обладал свойствами обнаруживать одиночные
ошибки, необходимо ввести избыточность, которая обеспечивала бы
минимальное
расстояние
между любыми
двумя
разрешенными
комбинациями не менее двух.
Доказательство. Возьмем значность кода п=3. Возможные комбинации
натурального кода образуют следующее множество: 000, 001, 010, 011, 100,
101, 110, 111. Любая одиночная ошибка трансформирует данную
комбинацию в другую разрешенную комбинацию. Ошибки здесь не
обнаруживаются и не исправляются, так как
=1. Если
=2, то ни
одна из разрешенных кодовых комбинаций при одиночной ошибке не
переходит в другую разрешенную комбинацию.
Пусть подмножество разрешенных комбинаций образовано по принципу
четности числа единиц. Тогда подмножества разрешенных и запрещенных
комбинаций будут такие:
000, 011, 101, 110 - разрешенные комбинации;
001, 010, 100, 111 - запрещенные комбинации.
Очевидно, что искажение помехой одного разряда (одиночная ошибка)
приводит к переходу комбинации в подмножество запрещенных комбинаций.
То есть этот код обнаруживает все одиночные ошибки.
В общем случае при необходимости обнаруживать ошибки кратности минимальное хэммингово расстояние должно быть, по крайней мере, на
единицу больше
, то есть
+1.
В этом случае никакая ошибка кратности не в состоянии перевести
одну разрешенную комбинацию в другую.
Ошибки можно не только обнаруживать, но и исправлять.
Теорема. Для исправления одиночной ошибки каждой разрешенной
кодовой комбинации необходимо сопоставить подмножество запрещенных
кодовых комбинаций. Чтобы эти подмножества не пересекались, хэммингово
расстояние должно быть не менее трех.
96
Доказательство. Пусть, как и в предыдущем примере, п=3. Примем
разрешенные комбинации 000 и 111 (кодовое расстояние между ними равно
3). Разрешенной комбинации 000 поставим в соответствие подмножество
запрещенных комбинаций 001, 010, 100. Эти запрещенные комбинации
образуются в результате возникновения единичной ошибки в комбинации
000.
Аналогично разрешенной комбинации 111 необходимо поставить в
соответствие подмножество запрещенных комбинаций 110, 011, 101. Если
сопоставить эти подмножества запрещенных комбинаций, то очевидно, что
они не пересекаются:
В общем случае исправляемые ошибки кратности
расстоянием соотношением
связаны с кодовым
=2 +1. (2.1)
Для ориентировочного определения необходимой избыточности кода при
заданном кодовом расстоянии d можно воспользоваться верхней граничной
оценкой для r = n - k, называемой оценкой Хэмминга:
r=n-k
,
где
- сочетание из п элементов по t (число возможных ошибок
кратности t на длине п-разрядной комбинации).
Если, например, п=7,
=1, то из (2.1)
=3, n - k
(1+7)=3 .
Нужно отметить, что каждый конкретный корректирующий код не
гарантирует исправления любой комбинации ошибок. Коды предназначены
для исправления комбинаций ошибок, наиболее вероятных для заданного
канала связи.
Групповой код с проверкой на четность
Недостатком кода с четным числом единиц является необнаружение
четных групповых ошибок. Этого недостатка лишены коды с проверкой на
четность, где комбинации разбиваются на части, из них формируется
матрица, состоящая из некоторого числа строк и столбцов:
97
Строки образуются последовательно по мере поступления символов
исходного кода. Затем после формирования т строк матрицы производится
проверка на четность ее столбцов и образуются контрольные символы
.
Контрольные символы образуются путем суммирования по модулю 2
информационных символов, расположенных в столбце:
.
При таком кодировании четные групповые ошибки обнаруживаются. Не
обнаруживаются лишь такие ошибки, при которых искажено четное число
символов в столбце.
Можно повысить обнаруживающую способность кода путем
одновременной проверки на четность по столбцам и строкам или столбцам и
диагоналям (поперечная и диагональная проверка).
Если проверка проводится
называется матричным.
по
строкам
и
столбцам,
то
код
Проверочные символы располагаются следующим образом:
;
.
98
В этом случае не обнаруживаются только ошибки четной кратности с
кратностью 4, 8, 16 и т.д., при которых происходит искажение символов с
попарно одинаковыми индексами строк столбцов. Наименьшая избыточность
кода получается в том случае, когда образуемая матрица является
квадратной.
Недостатком такого кода является необходимость внесения задержки в
передачу информации на время, необходимое для формирования матрицы.
Матричный код позволяет исправлять одиночные ошибки. Ошибочный
элемент находится на пересечении строки и столбца, в которых имеется
нарушение четности.
Коды с постоянным весом
Весом называется число единиц, содержащихся в кодовых комбинациях.
Если число единиц во всех комбинациях кода будет постоянным, то такой
код будет кодом с постоянным весом. Коды с постоянным весом относятся к
классу блочных неразделимых кодов, поскольку здесь невозможно выделить
информационные и проверочные символы. Наибольшее применение
получили коды «3 из 7», «3 из 8», хотя возможны другие варианты. Первая
цифра указывает на вес кода, вторая - на общее число символов в
комбинации.
Разрешенными комбинациями кода «3 из 7» являются такие, которые
содержат три единицы независимо от их места в комбинации, например
1110000 или 1010100 и т.д. Обнаружение ошибок сводится к определению их
веса. Если вес отличается от заданного, то считается, что произошла ошибка.
Код обнаруживает веса ошибок нечетной кратности и части ошибок четной
кратности. Не обнаруживаются ошибки, при которых несколько единиц
превращается в нули и столько же нулей - в единицы (ошибки смещения), так
как при этом вес кода не изменяется.
В коде «3 из 7» возможных комбинаций сто двадцать восемь ( =128), а
разрешенных кода только тридцать пять. Относительная избыточность отн =
0,28.
Код Хэмминга
Код Хэмминга относится к классу блочных, разделимых,
систематических кодов. Кодовое расстояние данного кода d0=3 или d0=4.
99
Блочные систематические коды характеризуются разрядностью кодовой
комбинации n и количеством информационных разрядов в этой комбинации
k остальные разряды являются проверочными (r):
r = n - k.
Данные коды обозначаются как (n,k).
Рассмотрим код Хэмминга (7,4). В данном коде каждая комбинация имеет
7 разрядов, из которых 4 являются информационными,
При кодировании формируется кодовая комбинация вида:
а1 а2 а3 а4 b1 b2 b
где аi — информационные символы;
bi — проверочные символы.
В данном коде проверочные элементы bi находятся через линейные
комбинации информационных символов ai, причем, для каждого
проверочного символа определяется свое правило. Для определения правил
запишем таблицу синдромов кода (С) (таблица 1), в которой записываются
все возможные синдромы, причем, синдромы имеющие в своем составе одну
единицу соответствуют ошибкам в проверочных символах:
 синдром 100 соответствует ошибке в проверочном символе b 1;

синдром 010 соответствует ошибке в проверочном символе b2;

синдром 001 соответствует ошибке в проверочном символе b3.
Синдромы с числом единиц больше 2 соответствуют ошибкам в
информационных символах. Синдромы для различных элементов кодовой
комбинации аi и bi должны быть различными.
Таблица 1 — Синдромы кода Хэмминга (7;4)
Число
Элементы синдрома
Элементы
кодовой
синдрома
С1
С2
С3
комбинации
1
0
0
1
b3
2
0
1
0
b2
3
0
1
1
a1
4
1
0
0
b1
5
1
0
1
a2
6
1
1
0
a3
7
1
1
1
a4
100
Определим правило формирования элемента b3. Как следует из таблицы,
ошибке в данном символе соответствует единица в младшем разряде
синдрома С4. Поэтому, из таблицы, необходимо отобрать те элементы аi у
которых, при возникновении ошибки, появляется единица в младшем
разряде. Наличие единиц в младшем разряде, кроме b3,соответствует
элементам a1, a2 и a4. Просуммировав эти информационные элементы
получим правило формирования проверочного символа:
b3 = a1 + a2 + a4
Аналогично определяем правила для b2 и b1:
b2 = a1 + a3 + a4
b1 = a2 + a3 + a4
2. ЦЕЛЬ И ПОРЯДОК РАБОТЫ
Цель работы – закрепить и усовершенствовать знания и умения по теме
«Помехоустойчивое кодирование», научиться кодировать и декодировать
коды Хэмминга, научиться вычислять одиночные ошибки при помощи
синдромов кода Хэмминга.
Сформировать
умение разделить сложный объект на простые
составляющие, определить взаимосвязи между ними
Работу следует выполнять в таком порядке:
 изучить описание работы;
 согласно своему варианту задания, решить задания без
применения ЭВМ;
 разработать алгоритмы решения отдельных задач на любом
известном языке программирования или в инструментальной среде и
системах компьютерной математики Maple, MatLab, Mathcad по одному из
каждого раздела задания.
 оформить отчет.
3. ЗАДАНИЯ
 3.1. Сформировать кодовую комбинацию кода Хэмминга
заданных слов из раздела 1 (1.01-1.60). Выбор конкретного
варианта задания должен соответствовать порядковому номеру
ячейки. Например, ячейка №4 выполняет задания под номерами:
1.04; 1.14; 1.24; 1.34; 1.44; 1.54.
 Оформить подробное решение и показать результат.
101
1.01
1.02
1.03
1.04
1.05
1.06
1.07
1.08
1.09
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
1.27
1.28
1.29
1.30
*
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
1110
0111
1100
0010
0100
0101
0001
0011
0010
0101
1100
0001
0100
1010
0001
0101
0101
0001
0111
1000
0010
0100
1101
0100
1111
1010
0100
1110
1011
1010
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
0011
0101
0000
1001
0011
0110
1111
0100
1100
1101
1010
0100
1000
1110
0101
1001
0110
1110
0101
0111
1101
1100
1000
0100
1110
0101
0111
1001
1110
0111
1.31
1.32
1.33
1.34
1.35
1.36
1.37
1.38
1.39
1.40
1.41
1.42
1.43
1.44
1.45
1.46
1.47
1.48
1.49
1.50
1.51
1.52
1.53
1.54
1.55
1.56
1.57
1.58
1.59
1.60
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
a)
1111
1110
0110
0010
1110
1010
0101
1011
0110
1101
1010
0001
1010
0111
1100
1110
0011
0010
0101
1000
1101
0011
1101
0011
1010
1010
1011
1110
1111
0110
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
б)
0101
1011
1011
0000
0011
1000
0110
0101
1111
0111
0110
1110
1011
0001
0001
0110
1110
1010
0001
1000
0011
0011
1011
1010
1111
1001
1110
1001
0011
1101
3.2. Написать программу на любом доступном языке.
Результатом работы программы должен служить:
а) вывод сформированного кода Хэмминга на заданное
пользователем слово;
б) корректировка согласно таблице синдромов введенной
комбинации кода Хэмминга при наличии одной ошибки и вывод
соответствующего сообщения при наличии двух и более ошибок.
4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ
102
Раздел 1. Пример решения задач на формирование кодовой комбинации
кода Хэмминга заданных слов.
Пример 1: необходимо сформировать кодовую комбинацию кода
Хэмминга (7,4) соответствующую информационным символам 1101.
В соответствии с проверочной матрицей определяем bi:
b1 = 1 + 0 + 1 = 0; b2 = 1 + 0 + 1=1; b3 = 1 + 1 + 1 = 1.
Добавляем проверочные символы к информационным и получаем
кодовую комбинацию:
Biр = 1101001.
В теории циклических кодов все преобразования кодовых комбинаций
производятся в виде математических операций над полиномами (степенными
функциями). Поэтому двоичные комбинации преобразуют в полиномы
согласно выражения:
Аi(х) = аn-1xn-1 + аn-2xn-2 +…+ а0x0
где an-1, … коэффициенты полинома принимающие значения 0 или 1.
Например, комбинации 1001011 соответствует полином
Аi(х) = 1*x6 + 0*x5 + 0*x4 + 1*x3 + 0*x2 + 1*x+1*x0 + x6 + x3 + x+1.
При формировании кодовых комбинаций над полиномами производят
операции сложения, вычитания, умножения и деления. Операции умножения
и деления производят по арифметическим правилам, сложение заменяется
суммированием по модулю два, а вычитание заменяется суммированием.
Разрешенные кодовые комбинации циклических кодов обладают тем
свойством,
что
все
они
делятся
без
остатка
на образующий или порождающий полином G(х). Порождающий полином
вычисляется с применением ЭВМ. В приложении приведена таблица
синдромов.
Этапы формирования разрешенной кодовой комбинации разделимого
циклического кода Biр(х).
1. Информационная кодовая комбинация Ai преобразуется из двоичной
формы в полиномиальную (Ai(x)).
2. Полином Ai(x) умножается на хr,
Ai(x)*xr
где r - количество проверочных разрядов:
r = n — k.
3. Вычисляется остаток от деления R(x) полученного произведения на
порождающий полином:
R(x) = Ai(x)?xr/G(x).
4. Остаток от деления (проверочные разряды) прибавляется к
информационным разрядам:
103
Biр(x) = Ai(x)?xr + R(x).
5. Кодовая комбинация Bip(x) преобразуется из полиномиальной формы
в двоичную (Bip).
Пример 2. Необходимо сформировать кодовую комбинацию
циклического кода (7,4) с порождающим полиномом G(x)=х 3+х+1,
соответствующую информационной комбинации 0110.
1. Преобразуем комбинацию в полиномиальную форму:
Ai = 0110 * х2 + х = Ai(x).
2. Находим количество проверочных символов и умножаем полученный
полином на xr:
r = n – k = 7 – 4 =3
Ai(x)*xr = (х2 + х)* x3 = х5 + х4
3. Определяем остаток от деления Ai(x)*xr на порождающий полином,
деление осуществляется до тех пор пока наивысшая степень делимого не
станет меньше наивысшей степени делителя:
R(x) = Ai(x)*xr/G(x)
4. Прибавляем остаток от деления к информационным разрядам и
переводим в двоичную систему счисления:
Biр(x) = Ai(x)*xr+ R(x)+ х5 + х4 + 1= 0110001.
5. Преобразуем кодовую комбинацию из полиномиальной формы в
двоичную:
Biр(x) = х5 + х4 + 1 = 0110001 = Biр
Как видно из комбинации четыре старших разряда соответствуют
информационной комбинации, а три младших — проверочные.
Формирование разрешенной кодовой комбинации неразделимого
циклического кода.
Формирование данных комбинаций осуществляется умножением
информационной комбинации на порождающий полином:
Biр(x) = Ai(x)*G(x).
Причем умножение можно производить в двоичной форме.
104
Пример 3: необходимо сформировать кодовую комбинацию
неразделимого циклического кода используя данные примера 2, т. е. G(x) =
х3+х+1, Ai(x) = 0110, код (7,4).
1. Переводим комбинацию из двоичной формы в полиномиальную:
Ai = 0110*х2+х = Ai(x)
2. Осуществляем деление Ai(x)?G(x)
3. Переводим кодовую комбинацию из полиномиальной форы в
двоичную:
Bip(x) = х5+х4+х3+х = 0111010 = Bip
В этой комбинации невозможно выделить информационную и
проверочную части.
Пример 4 Сформировать кодовую комбинацию кода Хэмминга заданного
словах слова: а) 1101
Решение:
При кодировании формируется кодовая комбинация вида:
а1 а2 а3 а4 b1 b2 b
где аi — информационные символы;
bi — проверочные символы.
В данном коде проверочные элементы bi находятся через линейные
комбинации информационных символов ai, причем, для каждого
проверочного символа определяется свое правило.
Проверочные символы формируются следующим образом:
b3 = a1 + a2 + a4
b2 = a1 + a3 + a4
b1 = a2 + a3 + a4
Таким образом, нам необходимо сформировать кодовую комбинацию
кода Хэмминга (7,4) соответствующую информационным символам 1101.
В соответствии с проверочной матрицей определяем bi:
b1 = 1 + 0 + 1 = 0;
b2 = 1 + 0 + 1=1;
b3 = 1 + 1 + 1 = 1.
Добавляем проверочные символы к информационным и получаем
кодовую комбинацию:
Biр = 1101001.
105
Раздел 2. Пример реализации формирования кодовой комбинации кода
Хэмминга, декодирование и проверка на наличие ошибок на языке С.
/* Program to find hamming code*/
#include<stdio.h>
#include<stdlib.h>
char data[5];
int encoded[8],edata[7],syndrome[3];
int hmatrix[3][7] = {
1,0,0,0,1,1,1,
0,1,0,1,0,1,1,
0,0,1,1,1,0,1
};
char gmatrix[4][8]={"0111000","1010100","1100010","1110001"};
int main(){
int i,j;
system("clear");
printf("\nHamming code----- Encoding\n");
printf("Enter 4 bit data : ");
scanf("%s",data);
printf("\nGenerator matrix\n");
for(i=0;i<4;i++)
printf("%s\n",gmatrix[i]);
printf("\nEncoded data ");
for(i=0;i<7;i++)
{
for(j=0;j<4;j++)
encoded[i]+=((data[j]-'0')*(gmatrix[j][i]-'0'));
encoded[i]=encoded[i]%2;
printf("%d ",encoded[i]);
}
printf("\nHamming code----- Decoding\n");
printf("Enter encoded bits as recieved : ");
for(i=0;i<7;i++)
scanf("%d",&edata[i]);
for(i=0;i<3;i++)
{
for(j=0;j<7;j++)
syndrome[i]+=(edata[j]*hmatrix[i][j]);
syndrome[i]=syndrome[i]%2;
}
for(j=0;j<7;j++)
if((syndrome[0]==hmatrix[0][j]) && (syndrome[1]==hmatrix[1][j])&&
(syndrome[2]==hmatrix[2][j]))
break;
if(j==7)
printf("\nError free\n");
else
{
printf("\nError recieved at bit number %d of data\n",j+1);
edata[j]=!edata[j];
printf("\nCorrect data should be : ");
106
for(i=0;i<7;i++)
printf("%d",edata[i]);
}
return 0;
}
5. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
* наименование работы, постановку задачи
* выбранный вариант задания
* результаты решения всех задач без применения ЭВМ
* программу решения задачи (представляется в электронном виде)
* результаты работы всех разделов программы и их анализ.
6. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Какие коды относятся к помехоустойчивым? Какими общими
свойствами они характеризуются?
2. Для чего в помехоустойчивые коды вводится избыточность?
3. Какие существуют классы помехоустойчивых кодов?
4. Какие коды относятся к блочным помехоустойчивым кодам? В каких
случаях их целесообразно использовать?
5. Как определяются операции сложения и умножения в поле двоичных
символов GF(2) (операции сложения и умножения по мод. 2) ?
6. Какие коды называются линейными блочными кодами? Какие коды
обладают свойством систематичности?
7. В чем заключается кодирование с проверкой на четность? Какова
избыточность такого кода? В чем достоинства и недостатки этого кода?
8. Какой канал передачи информации описывается моделью двоичного
симметричного канала?
9. В чем заключается процедура обнаружения и исправления
ошибок итеративным кодом? Каковы достоинства и недостатки
данного кода?
10.Каким свойством характеризуется синдром принятого вектора? В каких
случаях кодовый синдром не позволяет обнаружить ошибки в
переданной последовательности?
107
11. Как с помощью кодового
синдрома обнаруживаются и исправляются ошибки линейным
блочным кодом?
12.Как определяются вес и расстояние Хэмминга для двоичных
последовательностей?
13.Что такое минимальное кодовое расстояние Хэмминга линейного
блочного кода? Как оно определяется?
14.Каковы необходимое и достаточное условия существования
помехоустойчивого кода?
15.Какие линейные блочные коды называются кодами Хэмминга?
16.Как определяется количество информационных и проверочных
символов для кода Хэмминга?
17. Как строятся кодовые слова кода Хэмминга?
18.Как составляется проверочная матрица двоичного кода Хэмминга?
19.Чему соответствует значение синдрома при использовании
кода Хэмминга?
20. Как происходит декодирование кода Хэмминга?
21.Как строится порождающая матрица кода Хэмминга?
108
Тема. Линейные коды
Практическая работа № 7 Линейные и циклические коды
1. ОБЩИЕ СВЕДЕНИЯ
Множество {0,1} n с операциями суммы и произведения по модулю 2
образует линейное пространство над конечным полем из двух элементов
{0,1}.
Примеры линейных кодов.
1. Код повторения длины n есть [n, 1, n]-код
2. Код с проверкой на четность длины n есть [n, n − 1, 2]-код
3. Коды Хэмминга [7, 4], [8, 4] и [4, 2], также являются линейными
Широкое распространение на практике получил класс линейных кодов,
которые называются циклическими. Данное название происходит от
основного свойства этих кодов, а именно, если некоторая кодовая
комбинация принадлежит циклическому коду, то комбинация, полученная
циклической перестановкой исходной комбинации (циклическим сдвигом),
также принадлежит данному коду:
(a1, a2, …, an) → (an, a1, a2, …, an−1)
Вторым свойством всех разрешенных комбинаций циклических кодов
является их делимость без остатка на некоторый выбранный полином,
называемый производящим.
Циклические коды — это целое семейство помехоустойчивых кодов,
включающее в себя в качестве одной из разновидностей коды Хэмминга, но в
целом обеспечивающее большую гибкость с точки зрения возможности
реализации кодов с необходимой способностью обнаружения и исправления
ошибок, возникающих при передаче кодовых комбинаций по каналу связи.
В основе построения циклических кодов лежит операция деления
передаваемой кодовой комбинации на порождающий неприводимый
полином степени r. Остаток от деления используется при формировании
проверочных разрядов. При этом операции деления предшествует операция
умножения, осуществляющая сдвиг влево k-разрядной информационной
кодовой комбинации на r разрядов.
При декодировании принятой n-разрядной кодовой комбинации опять
производится деление на порождающий полином.
Синдромом ошибки в этих кодах является наличие остатка от деления
принятой кодовой комбинации на производящий полином. Если синдром
равен нулю, то считается, что ошибок нет. В противном случае, с помощью
полученного синдрома можно определить номер разряда принятой кодовой
комбинации, в котором произошла ошибка, и исправить ее.
Реализация циклического сдвига
109
Циклический сдвиг реализуется с помощью регистра сдвига длины
обратной связью:
x0
x1 x2
n с
x n  2 xn 1
Регистр сдвига на такте 1:
xn 1 x0 x1
x n  3 xn  2
xn  2 xn 1 x0
xn  4 x n  3
Регистр сдвига на такте 2:
Представление кодовой комбинации в виде многочлена
Описание циклических кодов и их построение удобно проводить с помощью
многочленов (или полиномов). Запись комбинации в виде полинома
понадобилась для того, чтобы отобразить формализованным способом
операцию циклического сдвига исходной кодовой комбинации. Так, nэлементную кодовую комбинацию можно описать полиномом (n − 1)
степени, в виде:
An−1(x) = an−1 xn−1 + an−2 xn−2 + … + a1 x + a0,
где ai = {0, 1}
причем ai = 0 соответствуют нулевым элементам комбинации, ai = 1 —
ненулевым.
Пример полиномов для конкретных комбинаций:
1000011 ⇔ A1(x) = x6 + x1 + 1
1000011⇔ A2(x) = x6 + x+1
110
Операции сложения и вычитания выполняются по модулю 2. Они являются
эквивалентными и ассоциативными:

G1(x) + G2(x) ⇒ G3(x)

G1(x) − G2(x) ⇒ G3(x)

G2(x) + G1(x) ⇒ G3(x)
Пример:

G1(x) = x5 + x3 + x

G2(x) = x4 + x3 + 1

G3(x) = G1(x) ⊕ G2(x) = x5 + x4 + x + 1
Операция деления является обычным делением многочленов, только вместо
вычитания используется сложение по модулю 2:

G1(x) = x6 + x4 + x3

G2(x) = x3 + x2 + 1
x6 + x4 + x3
| x3 + x 2 + 1
+-----------6
5
3
x +x +x
| x3 + x 2
-----------x 5 + x4
x 5 + x4 + x 2
-----------x2
Циклический сдвиг кодовой комбинации — перемещение ее элементов
справа налево без нарушения порядка их следования, так что крайний левый
элемент занимает место крайнего правого.
Основные свойства связаны с тем, что все разрешенные комбинации бит в
передаваемом сообщении (кодовые слова) могут быть получены путем
операции циклического сдвига некоторого исходного кодового слова.
Допустим, задана исходная кодовая комбинация и соответствующий ей
полином:
a(x) = anxn−1 + an−1xn−2 + … + a2x + a1
Умножим a(x) на x:
a(x) · x = anxn + an−1xn−1 + … + a2x2 + a1x
Так как максимальная степень x в кодовой комбинации длиной n не
превышает (n − 1), то из правой части полученного выражения для получения
исходного полинома необходимо вычесть an(xn − 1). Вычитание an(xn − 1)
называется взятием остатка по модулю (xn − 1).
Сдвиг исходной комбинации на i тактов можно представить следующим
образом: a(x) · xi − an(xn − 1), то есть умножением a(x) на xi и взятием остатка
по модулю (xn − 1). Взятие остатка необходимо при получении многочлена
степени, большей или равной n.
111
Порождающий полином
Идея построения циклических кодов базируется на использовании
неприводимых многочленов. Неприводимым называется многочлен, который
не может быть представлен в виде произведения многочленов низших
степеней, т. е. такой многочлен делится только на самого себя или на
единицу и не делится ни на какой другой многочлен. На такой многочлен
делится без остатка двучлен xn + 1. Неприводимые многочлены в теории
циклических кодов играют роль образующих полиномов.
Возвращаясь к определению циклического кода и учитывая запись операций
циклического сдвига кодовых комбинаций, можно записать порождающую
матрицу циклического кода в следующем виде:
p(x)
p(x) · x − C2 (xn − 1)
V = p(x) · x2 − C3 (xn − 1) ,
…
p(x) · xm−1 − Cm (xn − 1)
где p(x) — исходная кодовая комбинация, на базе которой получены все
остальные (m − 1) базовые комбинации
Ci = 0 или Ci = 1 («0», если результирующая степень полинома p(x) · xi не
превосходит (n − 1), «1», если превосходит).
Комбинация p(x) называется порождающей (порождающей, генераторной)
комбинацией. Для построения циклического кода достаточно верно
выбрать p(x). Затем все остальные кодовые комбинации получаются такими
же, как и в групповом коде.
Порождающий полином должен удовлетворять следующим требованиям:
1. p(x) должен быть ненулевым;
2. вес p(x) не должен быть меньше минимального кодового
расстояния: v(p(x)) ≥ dmin;
3. p(x) должен иметь максимальную степень k (k — число избыточных
элементов в коде);
4. p(x) должен быть делителем полинома (xn − 1).
Выполнение условия 4 приводит к тому, что все рабочие кодовые
комбинации циклического кода приобретают свойство делимости на p(x) без
остатка. Учитывая это, можно дать другое определение циклического кода.
Циклический код — код, все рабочие комбинации которого делятся на
порождающий без остатка.
Для определения степени порождающего полинома можно воспользоваться
выражением
r ≥ log2(n+1),
112
где n — размер передаваемого пакета за раз, т. е. длина строящегося
циклического кода.
Примеры порождающих полиномов, можно найти в таблице:
r, степень полинома
P(x), порождающий полином
2
111
3
1011
4
10011
5
100101, 111101, 110111
6
1000011, 1100111
7
10001001, 10001111, 10011101
8
111100111, 100011101, 101100011
Кодирование циклического кода – умножение информационного многочлена
на порождающий многочлен.
Пример:
Информационным элементам 1111 соответствует информационный
многочлен
P(x) = x3 + x2 + x + 1.
Пусть порождающий многочлен
g(x) = x + 1.
Произведение
P(x)*g(x) = x4 + 1,
что соответствует кодовой комбинации 10001, в которой исходные
информационные элементы не сохранены. Для исключения этого недостатка
используют следующий прием:
Информационный многочлен P(x) умножается на xr, где r - старшая степень
образующего многочлена g(x), и полученное выражение делится на
g(x).
В результате получится частное Q(x) и остаток R(x) степени меньше r:
xrP(x) = g(x)Q(x) + R(x).
Перенесем R(x) в левую часть:
xrP(x) + R(x) = g(x)Q(x) .
113
Правая часть последнего равенства кратна g(x) и, следовательно, является
кодовым многочленом F(x), т.е.
xrP(x) + R(x) = F(x) .
Первое слагаемое кодового многочлена имеет нулевые коэффициенты в r
младших членах. Этот многочлен соответствует сдвинутой влево на r
разрядов информационной части P(x). Степень многочлена R(x) меньше r,
поэтому его коэффициенты не изменяют нулевые коэффициенты первого
многочлена при их сложении. Таким образом, информационные элементы в
кодовой комбинации сохраняются, а проверочными элементами являются
коэффициенты остатка R(x), число которых равно степени порождающего
многочлена.
Пример:
Определить кодовую комбинацию при информационной части 101011 и
порождающем многочлене
g(x) = x2 + x + 1.
Очевидно,
P(x) = x5 + x3 + x + 1,
F(x) = x7 + x5 + x3 + x2 + x + 1,
чему соответствует кодовая комбинация 10101111. Шесть первых элементов
- информационные, остальные два - проверочные, соответствующие остатку
R(x) = x + 1.
1.
2.
3.
o
o
4.
o
o
Алгоритм определения ошибки
Пусть имеем n-элементные комбинации (n = k + r) тогда:
Получаем остаток от деления Е(х) соответствующего ошибке в
старшем разряде [1000000000], на порождающий полином Pr(x):
E1(x) ⁄ Pr(x) = R0(x)
Делим полученный полином Н(х) на Pr(x) и получаем текущий
остаток R(x).
Сравниваем R0(x) и R(x).
Если они равны, то ошибка произошла в старшем разряде.
Если нет, то увеличиваем степень принятого полинома на x и
снова проводим деления:
H(x) · x ⁄ Pr(x) = R(x)
Опять сравниваем полученный остаток с R0(x).
Если они равны, то ошибки во втором разряде.
Если нет, то умножаем Н(х) · х2 и повторяем эти операции до тех
пор, пока R(x) не будет равен R0(x).
114
Ошибка будет в разряде, соответствующем числу, на которое повышена
степень Н(х), плюс один.
Например: H(x) · x3 ⁄ Pr(x) = R0(x)
Пример кодирования:
Рассмотрим (7,4)-код, порожденный многочленом g(x) = x3 + x2 +1. Пусть
информационным сообщением является a = 1011, которому соответствует
многочлен a(x) = x3 + x +1. Для нахождения соответствующего кодового
слова перемножаем многочлены g(x) и a(x), и получаем кодовый
многочлен g(x)×a(x) = x6 + x5 + x4 + + x2 + x + 1.
Если в принятом векторе не было ошибок, то соответствующий многочлен
должен делиться на порождающий многочлен g(x) циклического кода, и
переданное информационное слово равно частному от деления принятого
многочлена на многочлен g(x).
Пример декодирования:
Пусть (7,4)-код порожден многочленом g(x) = x3 + x2 +1 и принято слово
1110111. По принятому слову строим многочлен x6 + x5 +x4 + x2 + x + 1,
который делится на g(x). Поэтому мы делаем заключение, что при передаче
ошибок не было, и переданное информационное слово есть вектор
коэффициентов частного x3 + x +1 от деления ногочлена x6 + x5 + x4 + x2 + x +
1 на g(x), т. е. вектор 1011.
Таким образом, процедуры кодирования и декодирования циклических кодов
сводятся к умножению и делению многочленов.
Пример программной реализации:
Разработать программу аппаратной реализации циклического кода (15, 11) с
порождающим многочленом x4 + x3 + +x2 +1
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
namespace SystemNippel
{
publicclassSystemNippel
{
//основной модуль программы
//содержит функции для обработки двоичных комбинаций и
//кодирования/декодирования по алгоритмам циклического кода
publicstaticstring Polynom = "11111";//порждающиймногочлен
publicstaticintinf = 11;//количество инф. символов
publicstaticintcount = 15;//общее колическтов символов
publicstaticint t = 1;//колическтво исправляемых ошибок
publicstaticintCountMoves=0;//количество левых сдвигов в текущем сеансе декодирования
115
//перед началом декодирования должен быть установлен в ноль
publicstaticchar plus(char c1, char c2)
{
//сложение разрядов по модудю 2
if (c1 == '0'&& c2 == '0') return'0';
if (c1 == '0'&& c2 == '1') return'1';
if (c1 == '1'&& c2 == '0') return'1';
if (c1 == '1'&& c2 == '1') return'0';
thrownewException("Ошибка: недопутимый символ");
return'0';
}
publicstaticstring str_plus(string s1, string s2)
{
//сложение двоичных комбинаций по модулю 2
string s3 = "";
if (s1.Length != s2.Length) thrownewException("Внутренняяошибка: строкиразнойдлины");
for (int i = 0; i < s1.Length; i++)
{
s3 += plus(s1[i], s2[i]);
}
return s3;
}
publicstaticstring GetRemainder(string x, string d)
{
//получение остатка от деления х на d
string r = "";
int n; //длина делимого
int m; //длина делителя
int z; //указатель текущего положения разряда делимого
int i; //счетчикцикла
char[] arr;
z = 0;
n = x.Length;
m = d.Length;
for (i = 0; i < n; i++)//инициализация
{
if (x[i] != '0'&& x[i] != '1') thrownewException("Ошибка: недопутимыйсимвол");
r += x[i];
}
arr = r.ToCharArray();
while (true)
{
for (i = 0; i < m ; i++)
//прибавляем делитель в текущей позиции указателия
{
arr[z + i] =plus(arr[z + i], d[i]);
}
while (arr[z] == '0') {
z++;//сдвиг указателя влево, до первой единицы
if (z >= arr.Length) break;
}
if (z > n - m) break;//конец деления
}
r = newstring(arr);
return r;
}
publicstaticstring Coder(string s)
{
//кодирование двоичной комбинации
stringstr = "";
string output = "";
116
int r;
str = s;
r=count-inf;
for(int i=0;i<r;i++){
//увеличиваем длину строки до общего количества символов
str += '0';
}
output = str;
str = GetRemainder(str, Polynom);//остаток от деления на порождающий многочлен
output = str_plus(output, str);//сложениесостатком
return output;
}
publicstaticstring Transfer(string s, int bit)
{
//передача символа
//моделирует искажение выбранного бита (номер бита начинается с нуля)
char[] arr = s.ToCharArray();
if (arr[bit] == '0') { arr[bit] = '1'; }
elseif (arr[bit] == '1') { arr[bit] = '0'; }
returnnewstring(arr);
}
publicstaticint GetWeight(string s)
{
//вычисляет количество единиц в двоичной комбинации
int i;
int c=0;
for (i = 0; i < s.Length; i++)
{
if (s[i] == '1') c++;
}
return c;
}
publicstaticstring MoveLeft(string s)
{
//левый цикл.сдвиг двоичной комбинации на один разряд
stringres;
res = s.Substring(1, s.Length - 1);
res += s[0];
returnres;
}
publicstaticstring MoveRight(string s)
{
//правый цикл.сдвиг двоичной комбинации на один разряд
stringres="";
res += s[s.Length - 1];
res += s.Substring(0, s.Length - 1);
return res;
}
publicstaticbool CheckString(string str)
{
//проверка корректности введенной двоичной строки
//для правильной строки возвращает ИСТИНА
int i;
if (str.Length == 0) returnfalse;
for ( i = 0; i < str.Length; i++)
{
if (str[i] != '0'&& str[i] != '1') returnfalse;
}
Return true;
}
//генерация случайной двоичной комбинации
117
//длина комбинации соответствует длине инф. части
publicstaticstring NewRandomNippel()
{
Random rnd = newRandom();
String str = "";
int i;
for (i = 0; i < inf; i++)
{
str += rnd.Next(2).ToString();
}
return str;
}
}
}
Свойства циклических кодов:
1.
2.
3.
4.
5.
Минимальное кодовое расстояние d циклического кода не превышает
числа членов порождающего многочлена.
Циклический код с порождающим многочленом степени r>1
обнаруживает любую одиночную и любую двойную ошибку, т.е. имеет d>3.
Код с порождающим многочленом x + 1 является кодом с четным
числом единиц.
Циклический код с порождающим многочленом g(x)(x+1) имеет d>4.
Код с порождающим многочленом g(x) степени r обнаруживает все
пакеты ошибок длины r или меньше.
2. ЦЕЛЬ И ПОРЯДОК РАБОТЫ
ЦЕЛЬ РАБОТЫ
Изучение методов циклического кодирования и способов их технической
реализации.
Работу следует выполнять в таком порядке:
 изучить описание работы;
 согласно своему варианту задания, решить заданные примеры без
применения ЭВМ
 разработать алгоритмы решения отдельных задач в инструментальной
среде
 оформить отчет.
118
Download