Transcript 0 1

Теория Информации
Кудряшов Борис Давидович
Часть 2. Кодирование дискретных
источников
Санкт-Петербург
2009
Неравномерное кодирование
Однозначно
декодируемый
Кодовые слова
A
B
C
D
00
01
10
11
?
1
01
001
000
?
1
10
100
000
?
0
1
01
10
?
?
Код должен быть однозначно декодируемым! (Последовательность слов
должна однозначно разбиваться на отдельные слова)
2
Неравномерное кодирование
Однозначно
декодируемый
Кодовые слова
A
B
C
D
00
01
10
11
ДА
1
01
001
000
ДА
1
10
100
000
?
0
1
01
10
НЕТ
Префиксные коды однозначно декодируемы!
Префиксность достаточное но не необходмое условие
?
3
Древовидные коды
Древовидные коды –
префиксные.
A
0
B
100
C
101
D
11
0
1
A
Декодируйте:
D
10101000101
B
C
4
Задача построения кода
Средняя длина кодовых слов
M
l  M[li ]   pi li
i 1
должна быть минимально возможной.
Теорема Крафта: Префиксный код существует если
и только если
M
2
 li
1
i 1
(Все слова не могут быть короткими).
5
Необходимость неравенства
Крафта
Число вершин на ярусе L:
6
Достаточность неравенства
Крафта
7
Теоремы побуквенного
кодирования
Прямая теорема:
Пусть
l  H 1
Следовательно, код существует.
Затраты на передачу (хранение) = Н. Если кодировать буквы по одной,
то потери не превысят 1 бит на букву. Это немного, если Н=1000000.
Это много, если Н =0.000001
8
Теоремы побуквенного
кодирования
Обратная теорема:
l H
(Неравенство
Крафта) 9
Следствие
l H
Тогда и только тогда когда все вероятности
являются числами вида
li
pi  2
10
Свойства оптимального кода
1. Меньше
вероятность длиннее слово
2. Самых длинных
слов не меньше
двух
3. Два самых длинных
слова имеют общего
родителя
11
Свойство 4 кода Хаффмена
Пусть
- общая часть
12
Свойство 4 кода Хаффмена
13
Алгоритм Хаффмена
14
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
e
0.10
f
0.10
15
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
e
0.10
f
0.10
0.20
16
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
0.25
e
0.10
f
0.10
0.20
17
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
0.25
0.40
e
0.10
f
0.10
0.20
18
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
0.60
0.25
0.40
e
0.10
f
0.10
0.20
19
Пример кода Хаффмена
a
b
c
d
0.35
0.20
0.15
0.10
0.60
0.25
0.40
e
0.10
f
0.10
1
0.20
20
Пример кода Хаффмена
a
b
c
d
0
0.35
0.20
0.15
0.10
0.60
f
0.10
1
0.25
0.40
e
0.10
1
0.20
a
b
c
d
e
f
00
10
010
011
110
111
l  2.45  H  2.40
21
Код Шеннона
Потребуем
Положим
p1  p2  ...  pM
q1  0
q2  p1 ,
q M  i 1 pi
M 1
Слово = l
m
  log pm  разрядов числа
qm
22
Свойства кода Шеннона
Префиксность:
Средняя длина слова:
23
Пример кода Шеннона
Буква
p
a
b
c
d
e
f
0,35
q
Длина
Запись
Слово
0,20
0,15
0,10
0,10
0,10
24
Пример кода Шеннона
Буква
p
q
a
b
c
d
e
f
0,35
0,00
0,20
0,35
0,15
0,55
0,10
0,70
0,10
0,80
0,10
0,90
Длина
Запись
Слово
25
Пример кода Шеннона
Буква
p
q
Длина
a
b
c
d
e
f
0,35
0,00
2
0,20
0,35
3
0,15
0,55
3
0,10
0,70
4
0,10
0,80
4
0,10
0,90
4
Запись
Слово
26
Пример кода Шеннона
Буква
p
q
Длина
Запись
a
b
c
d
e
f
0,35
0,00
2
0,00…
0,20
0,35
3
0,0101…
0,15
0,55
3
0,10001…
0,10
0,70
4
0,10110…
0,10
0,80
4
0,11001…
0,10
0,90
4
0,11100…
Слово
27
Пример кода Шеннона
Буква
p
q
Длина
Запись
Слово
a
b
c
d
e
f
0,35
0,00
2
0,00…
00
0,20
0,35
3
0,0101…
010
0,15
0,55
3
0,10001…
100
0,10
0,70
4
0,10110…
1011
0,10
0,80
4
0,11001…
1100
0,10
0,90
4
0,11100…
1110
l  H  1; l  2.95  2.40  1
28
Кодовое дерево
a
0
b
c
d
1
e
f
Что хорошо и что плохо в коде Шеннона?
29
Графическая интерпретация
p1  0.6; p2  0.3; p3  0.1
q2  0.6; l2  2; c  01
30
Сложность кода Шеннона
Вопросы:
• Для чего нужна упорядоченность?
• Какова сложность упорядочения?
• Нельзя ли подправить кодирование,
чтобы требование упорядоченности не
было обязательным?
31
Подсказка
Код Шеннона работает
p'
q
p
p' > p
Интервал неопределенности
Код Шеннона не работает
q
p'
p
p' < p
Интервал неопределенности
Исправляем код Шеннона
q
p
Интервал неопределенности

32
Код Гилберта-Мура
q1  0
q2  p1 ,
qM   i1 pi ,
M 1
pm 

Слово = l   log
m


2 
pm
 m  qm 
2
разрядов числа
m
33
Свойства кода ГМ
Префиксность
Средняя длина кодового слова
34
Пример
x
p
q
A
0.1
0,0=
0,00000…
B
0.6 0,1=
0,00011…
C
0.3 0,7=
0,10110…

l
Кодовое
Слово
Код
Шеннона
35
Пример
q

x
p
A
0.1
B
0.6 0,1=
0,00011…
0,40=
0,01100…
C
0.3 0,7=
0,10110…
0,85=
0,11011…
l
Кодовое
Слово
Код
Шеннона
0,0=
0,05=
0,00000… 0,00001…
36
Пример
q

x
p
A
0.1
B
0.6 0,1=
0,00011…
0,40=
0,01100…
2
C
0.3 0,7=
0,10110…
0,85=
0,11011…
3
0,0=
0,05=
0,00000… 0,00001…
l
Кодовое
Слово
Код
Шеннона
5
37
Пример
x
p
q
A
0.1
B
0.6 0,1=
0,00011…
C
0.3 0,7=
0,10110…

l
Кодовое
Слово
5
00001
0,40=
0,01100…
2
01
0,85=
0,11011…
3
110
0,0=
0,05=
0,00000… 0,00001…
l  H 2
l  2.6
Код
Шеннона
H  1, 296
38
Пример
x
p
q
A
0.1
B
0.6 0,1=
0,00011…
C
0.3 0,7=
0,10110…

l
Кодовое
Слово
Код
Шеннона
5
00001
0000
0,40=
0,01100…
2
01
0
0,85=
0,11011…
3
110
10
0,0=
0,05=
0,00000… 0,00001…
l  H 2
l  2.6
H  1, 296
39
Кодирование стационарных
последовательностей
Теорема об энтропии на букву:
n

H (X )
lim

n
n
H  
lim H ( X n | X 1 X 2 ... X n1 )
 n
40
Обратная теорема кодирования
Доказательство:
41
Прямая теорема кодирования
Для любого Н и
Доказательство:
При достаточно большом n  2 / 
42
Оптимальное кодирование – это
просто!
Достаточно кодировать длинные блоки
Проблема сложности:
Пусть |X|=256. Тогда при n=2,3,4,5,…
| X | 2 ,2 ,2 ,2 ,...
n
16
24
32
40
К таким алфавитам невозможно применить код Хаффмена!
Наши буквы теперь – целые файлы. Чтобы кодировать такие
огромные алфавиты нужны по-настоящему простые методы. Мы не
можем разрешить хранить код. Кодовые слова должны вычисляться
в процессе кодирования и декодирования
43
Арифметическое кодирование
Закодируем как одну «букву» кодом ГМ
текст (файл) x  ( x1, x2 ,..., xn )
Для этого нужно вычислить
 (x)  q(x)  p(x) / 2
Сначала надо условиться о порядке на
множестве последовательностей х.
Лексикографический порядок:
44
Арифметическое кодирование
45
Арифметическое кодирование
Результат:
q(x )  q(x
n
1
n 1
1
n 1
1
p(x )  p(x
n
1
)  p(x
n 1
1
)q ( xn ),
) p ( xn ).
46
Алгоритм
47
Алгоритм
• Инициализация. Даны { p1 ,..., pM }
Вычисляем
{q1,..., qM };
i  1,...,n
F  F  q( xi )G,
F  0; G  1
• Для
• Слово =
 logG  1
G  p( xi )G.
разрядов числа
( F  G / 2)
48
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
49
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
1
B
0,6
0,1
0,1000
0,6000
50
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
1
B
0,6
0,1
0,1000
0,6000
2
C
0,3
0,7
0,5200
0,1800
51
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
1
B
0,6
0,1
0,1000
0,6000
2
C
0,3
0,7
0,5200
0,1800
3
B
0,6
0,1
0,5380
0,1080
52
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
1
B
0,6
0,1
0,1000
0,6000
2
C
0,3
0,7
0,5200
0,1800
3
B
0,6
0,1
0,5380
0,1080
4
A
0,1
0,0
0,5380
0,0108
F  G / 2  0,5423...
Fˆ 
0,541
53
Пример
x  (bcbab)
pb  0,6 pc  0,3
pa  0,1
,
Шаг
х
p
q
F=F+qG
G=pG
0
-
-
-
0,0000
1,0000
1
B
0,6
0,1
0,1000
0,6000
2
C
0,3
0,7
0,5200
0,1800
3
B
0,6
0,1
0,5380
0,1080
4
A
0,1
0,0
0,5380
0,0108
5
B
0,6
0,1
0,5391
0,0065
6
Длина кодового слова
Кодовое слово
9
100010101
F  G / 2  0,5423...
Fˆ 
0,541
54
55
Декодирование
56
57
58
59
60
61
Проблемы реализации
Всего 2 умножения и 1 сложение на букву!
Но все не так просто:
• С каждым шагом все длиннее числа
• Чтобы сформировать результат, нужно
закодировать всю последовательность
• Задержка?
• Память?
• Переполнения?
62
Кодирование при неизвестной
статистике
Класс моделей
Избыточность
Универсальное кодирование:
Кодирование с задержкой (off-line) и без
задержки (мгновенное, on-line)
63
Пример 2-проходного
кодирования
64
Анализ 2-проходного
кодирования
Скорость стремится к скорости кодирования при
известных вероятностях букв
65
Нумерационное кодирование
Последовательность
Композиция
Пример: х=(0010001)
=(5,2)
Кодовое слово = (номер композиции, номер последовательности в списке последовательностей с заданной композицией)
Пример: с=(2, 3) =(010 00011)
66
Анализ нумерационного
кодирования
Число композиций
Число позиций с заданной композицией
67
Анализ нумерационного
кодирования
68
Адаптивное кодирование
Вероятности оцениваются «по прошлому» и
следующей буква кодируется по коду, построенному по оцененным вероятностям. Осталось
выбрать
• Длину «окна»
• Формулы для оценок вероятностей
• Способ кодирования
Будем использовать арифметическое кодирование и окно = вся предшествующая последовательность
69
Примеры оценок
Оценка Кричевского-Трофимова
Принцип esc-кода
70
Анализ А-алгоритма
M n - Число использованных букв
71
Анализ А-алгоритма
72
D-Алгоритм
Mn
- Число использованных букв
73
Сравнение алгоритмов
74
Монотонные коды
Из
следует
• Унарный код:
• Код Голомба:
• Монотонный код Элайеса (1) :
Монотонные коды часто используются в
архиваторах и в системах мультимедиа как
универсальные неравномерные коды
75
Еще монотонные коды
bin’(i)=двоичная запись i без первой единицы
Упрощенный код Левенштейна (Элайеса (2)):
Длины слов:
unar
Golomb
mon
Elias
76
Примеры
Код
Кодовое слово для i=21
unar
1111111111111111111110
Golomb, Т=3
11111110000
mon
1111100101
Elias
110000101
77
Анализ кода Элайеса
78
Доказательство
79
Кодирование интервалов и
«Стопка книг»
• Кодирование интервалов – вместо
буквы передаем расстояние (число
букв) от предыдущего появления буквы
• Стопка книг – вместо буквы передаем
число различных букв от предыдущего
появления буквы
При монотонном кодировании чем меньше
число, тем короче кодовое слово
80
Анализ интервального
кодирования
Лемма Каца:
Доказательство: выпуклость логарифма и
энтропии
81
Алгоритм
ЛемпелаЗива -77
82
Алгоритм
Лемпела
-Зива -78
LZW
83
Идея
Алгоритма
PPM
84
Сравнение
алгоритмов на
примере
85
Сравнение архиваторов на примере
Calgary Corpus
86