Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
all of DiskretMat.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
60.29 Mб
Скачать

4.2.2. Краткое описание lz-метода

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

Алгоритм декодирования

пусть по c1ck-1 уже восстановили a1ai-1,

читаем ck

если (первый бит ck = 0) то //(см. пример на рис.1)

рассмотреть остальные биты ck как двоичную запись числа n

следующие n символов ck+1ck+n просто скопировать на выход

если (первый бит ck = 1) то //(см. пример на рис.2)

рассмотреть остальные биты ck как двоичную запись числа n;

считать ck+1 — смещение назад;

скопировать на выход ;

конец алгоритма

Рис.4

Рис.5

“Минусы” LZ-метода:

  • cj ограничены (~ 16 бит), следовательно, смещение назад ограничено, т.е. кодировщик “забывает” начало входного потока;

  • долгий процесс кодирования.

4.2.3. Пример lz-метода

По методу Зива-Лемпеля тот же пример кодируется следующим образом. Сначала записаны номера строк, затем сами строки, затем представление каждой из этих строк в виде пар (номер предыдущей строки, дополняющий символ). В начале образовалось семь строк дли­ны 1. Восьмая буква совпала с первой строкой, поэтому восьмая стро­ка составлена из первой строки и буквы “а”. Девятая строка состоит из одной буквы, а десятая — из восьмой строки и буквы “и”.

1

е

2

х

3

а

4

л

5

и

6

_

0_

7

м

8

ед

9

в

10

еди

11

12

а_

3_

13

ве

14

ло

15

с

16

ип

5п

17

еде

18

19

20

а_н

12н

21

им

22

и_

5_

23

к

24

о

25

т

26

_за

19а

27

д

28

ом

24м

29

_на

11а

30

п

0п

31

ер

32

ед_

8_

33

а_з

12з

34

а_ни

20и

35

м_

7_

36

ко

23о

37

ма

38

р

39

ик

40

и_н

22н

41

а_в

12в

42

оз

24з

43

ду

27у

44

ш

45

н

46

ом_

28_

47

ша

44ф

48

ри

38и

49

ке

23е

50

_а_

18_

51

з

52

а_ним

34м

53

и_р

22р

54

ак

55

и_на

40а

56

57

ро

38о

58

мо

59

й

60

61

об

24б

62

аке

54е

63

64

ол

24л

65

ки

23и

66

_на_

29_

67

коб

36б

68

ы

69

ле

70

71

ь

72

вы

73

_в_

63_

74

ав

75

то

25о

76

моб

58б

77

ил

78

е_

1_

79

за

51а

80

йч

59ч

81

ики

39и

82

_в_т

73т

83

ра

38а

84

мв

85

ай

86

ч

87

ике

39е

88

89

аб

90

а_на

20а

91

92

ет

93

ле_

69_

94

еду

95

25_

96

и_с

22с

97

ме

98

ю

99

тс

25с

100

я

101

_п

6п

102

ря

38я

103

ни

45и

104

ки_

65_

105

ж

106

у

107

ют

98т

108

\n

0

109

eof

0

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

Рис. 6. Длины кодовых строк и поведение средней длины

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