- •Н.Н. Куцый, в.Н. Сизых введение в теорию информации учебное пособие
- •Оглавление
- •Часть 1. Вероятностные основы теории информации
- •Часть 2. Основы прикладной теории информации
- •Введение
- •Способы определения случайных событий
- •Часть 1. Вероятностные основы теории информации
- •Определение априорной и апостериорной вероятностей дискретного источника
- •Дискретные источники сообщений
- •Основные определения и оценка случайного события
- •Определение априорной вероятности
- •Элементы комбинаторики
- •Схемы подсчетов априорной вероятности по формуле (1.1)
- •Задачи для самостоятельной работы
- •Определение апостериорной вероятности
- •Задачи для самостоятельной работы
- •2. Условная и полная вероятности дискретного источника
- •2.1. Условная вероятность
- •Свойства независимых несовместных событий а1 и а2
- •Свойства зависимых событий а1 и а2
- •Задачи для самостоятельной работы
- •2.2. Полная вероятность
- •Задачи для самостоятельной работы
- •3. Случайные величины дискретных источников
- •3.1. Случайные величины
- •Задача для самостоятельной работы
- •4. Законы распределения дискретных случайных величин
- •4.1. Числовые характеристики дискретных св
- •4.2. Типовые законы распределения вероятностей дискретных св
- •Задачи для самостоятельной работы
- •5. Системы дискретных случайных величин
- •5.1. Характеристики систем дискретных случайных величин
- •5.2. Закон распределения системы дискретных случайных величин
- •Задачи для самостоятельной работы
- •6. Дискретные случайные процессы
- •6.1. Случайные процессы
- •6.2. Потоки событий
- •7. Марковские цепи
- •7.1. Марковские цепи с дискретными состояниями
- •7.2. Марковские цепи
- •7.3. Расчет цепи Маркова для стационарного режима
- •Задачи для самостоятельной работы
- •Часть 2. Введение в прикладную теорию информации
- •8. Энтропия как мера неопределенности
- •8.1. Энтропия
- •8.2. Условная энтропия
- •Задачи для самостоятельной работы
- •9. Оценка информационных характеристик дискретных источников
- •9.1. Условные и безусловные вероятности появления символов в виде стохастического вектора и матрицы дискретного источника
- •Снятые статистические данные источника
- •9.2. Информационные характеристики дискретного источника
- •Задача для самостоятельной работы
- •10. Основы теории кодирования и передачи информации
- •10.1. Кодирование информации
- •10.2. Формирование экономичного кода алфавита
- •10.2.1. Код Шеннона–Фано
- •10.2.2. Код Хаффмена
- •Задачи для самостоятельной работы
- •Решения и ответы задач для самостоятельной работы
- •Дополнительные задачи по курсу «Теория информации» Задача 1
- •Задача 2
- •Задача 3
- •Задача 8
- •Задача 22
- •Задача 23
- •Задача 24
- •Задача 25
- •Приложения Приложение 1. MatLab – программы для расчета цепи Маркова
- •Приложение 2. MatLab – программа для определения энтропии дискретного источника
- •Приложение 3. MatLab – программа для оценки информационных характеристик дискретных источников с памятью
- •Приложение 4. Алгоритмы кодирования и декодирования
- •Алгоритм построения кодового дерева кода Хаффмена
- •MatLab-программа декодирования арифметического кoда
Приложения Приложение 1. MatLab – программы для расчета цепи Маркова
Решение задачи 7.1
a=[0.488 -0.064 -0.008 -0.001;-0.384 0.392 -0.146 -0.027;-0.096 -0.292 0.316 -0.243; 1 1 1 1];
b=[0;0;0;1];
x1=a/b
x1=0.0370
0.2222
0.4444
0.2963
x2=a^(-1)*b
x2=0.0370
0.2222
0.4444
0.2963
x3=inv(a)*b
x3=0.0370
0.2222
0.4444
0.2963
Решение задачи 7.2
a=[0.5 -0.6 -0.1 0;-0.2 0.6 -0.2 0;0 0 0.3 -0.4;1 1 1 1];
b=[0;0;0;1];
x1=a/b
x1=0.2927
0.1951
0.2927
0.2195
x2=a^(-1)*b
x2=0.2927
0.1951
0.2927
0.2195
x3=inv(a)*b
x3=0.2927
0.1951
0.2927
0.2195
Приложение 2. MatLab – программа для определения энтропии дискретного источника
n=1618
x=[118 35 85 30 60 145 16 30 81 26 29 85 78 120 167 25 54 69 94 46 13 3 21 20 3 49 49 3 16 48]
x=Columns 1 through 28
118 35 85 30 60 145 16 30 81 26 29 85 78 120 167 25 54 69 94 46 13 3 21 20 3 49 49
Columns 1 through 28
16 48
p=x/n
p=Columns 1 through 16
0.0729 0.0216 0.0.0525 0.0185 0.0371 0.0896 0.0099 0.0185 0.0501 0.0161 0.0179 0.0525 0.0482 0.0742 0.1032 0.0155
Columns 17 through 30
0.0334 0.0426 0.0581 0.0284 0.0080 0.0019 0.0130 0.0124 0.0019 0.0303 0.0303 0.0019 0.0099 0.0297
h=abs(trace(log2(p)*p'))
h=4.4759
Приложение 3. MatLab – программа для оценки информационных характеристик дискретных источников с памятью
N_AA=input('Введите N(A|A)')
N_AC=input('Введите N(A|C)')
N_AD=input('Введите N(A|D)')
N_CA=input('Введите N(C|A)')
N_CC=input('Введите N(C|C)')
N_CD=input('Введите N(C|D)')
N_DA=input('Введите N(D|A)')
N_DC=input('Введите N(D|C)')
N_DD=input('Введите N(D|D)')
N_A1=N_AA+N_AC+N_AD
N_C1=N_CA+N_CC+N_CD
N_D1=N_DA+N_DC+N_DD
N=N_A1+N_C1+N_D1
P_A=N_A1/N
P_C=N_C1/N
P_D=N_D1/N
V=[P_A P_C P_D]
P_AA=N_AA/N_A1
P_CA=N_CA/N_A1
P_DA=N_DA/N_A1
P_AC=N_AC/N_C1
P_CC=N_CC/N_C1
P_DC=N_DC/N_C1
P_AD=N_AD/N_D1
P_CD=N_CD/N_D1
P_DD=N_DD/N_D1
M=[P_AA P_CA P_DA;P_AC P_CC P_DC;P_AD P_CD P_DD]
H_XA=-P_AA*log2(P_AA)-P_CA*log2(P_CA)-P_DA*log2(P_DA)
H_XC=-P_AC*log2(P_AC)-P_CC*log2(P_CC)-P_DC*log2(P_DC)
H_XD=-P_AD*log2(P_AD)-P_CD*log2(P_CD)-P_DD*log2(P_DD)
H_X=P_A*H_XA+P_C*H_XC+P_D*H_XD
ty=0.22
H1=H_X/ty
Rii=1-H_X/log2(3)
Приложение 4. Алгоритмы кодирования и декодирования
информации дискретного источника
Алгоритм построения кодового дерева кода Хаффмена
Input: Объем алфавита М, вероятности букв
Output: Двоичное дерево кода Хаффмена
Инициализация:
Количество
необработанных узлов
while
do
в списке необработанных узлов найти два узла с наименьшими вероятностями. Исключить эти узлы из списка необработанных.
Ввести новый узел, приписать ему суммарную вероятность двух исключенных узлов.
Новый узел связать ребрами с исключенными узлами.
end
Алгоритм построения кода Шеннона–Фано
Input:
Объем
алфавита
,
вероятности букв
Output: Список кодовых слов Шеннона
Сортировка:
for
to
do
индекс
-й
по убыванию вероятностей буквы алфавита
end
Кумулятивные вероятности:
for
to
do
end
Кодовые слова:
for to do
первые
разрядов после запятой в двоичной записи
числа
end
Алгоритм построения кода Гилберта–Мура
Input:
Объем алфавита
,
вероятности букв
Output: Список кодовых слов кода Гилберта – Мура
Вспомогательные вероятности:
for
to
do
end
Кодовые слова:
for to do
первые
разрядов после запятой в двоичной записи
числа
end
Алгоритм арифметического кодирования
Input: Объем алфавита
вероятности букв
длина последовательности
последовательность
на выходе источника
,
Output: Кодовое слова арифметического кода
Кумулятивные вероятности:
for
to
do
end
Кодирование:
for to do
end
Формирование кодового слова:
первые
разрядов после запятой в двоичной записи
числа
Алгоритм декодирования кода Гилберта – Мура
Input: Объем алфавита
кумулятивные
вероятности букв
вход
декодера
Output:
Декодированная буква
Инициализация:
Поиск буквы:
while
do
end
Результат:
Алгоритм декодирования арифметического кода
Input: Объем алфавита
вероятности
букв
кумулятивные вероятности букв
длина декодируемой последовательности
кодовое
слово в виде числа
Output:
Декодированная последовательность
букв
Инициализация:
Декодирование:
for to do
while
do
end
end
Результат: последовательность
Приложение 5. MatLab – программы неравномерного арифметического кодирования и декодирования информации дискретного источника
MatLab – программа арифметического кодирования
Function y=int_arithm_encoder(x,q);
% x is input data sequence,
% q is cumulative distribution (model)
% y is binary output sequence
% Constants
K=16;
R4=2^(k-2); R2=R4*2; R34=R2+R4; % half,quarter,etc.
R=2*R2; % Precision
% Initialization
Low=0; % Low
High=R-1; % High
btf=0; % Bits to Follow
y=[ ]; % code sequence
% Encoding
for i=1:length(x);
Rage=High-Low+1;
High=Low+fix(Range*q(x(i)+1)/q(m))-1;
Low=Low+fix(Range*q(x(i)/q(m));
% Normalization
while 1
if High<R2
y=[y 0 ones(1,btf)]; btf=0;
High=High*2+1; Low=Low*2;
else
if Low>=R2
y=[y 1 zeros(1,btf)]; btf=0;
High=Higt*2-R+1; Low=Low*2-R;
else
if Low>=R4 & High<R34
High=2*High-R2+1; Low=2*Low-R2;
else
break;
end;
end;
end;
end; % while
end; % for
% Completing
If Low<R4
y=[y 0 ones(1,btf+1)];
else
y=[y 1 xeros(1,btf+1)];
end;
