1. Используя алгоритм RLE, закодируйте последовательность символов
BBBBBBACCCABBBBBB
Запишите результат в виде шестнадцатеричных кодов (каждый символ кодируется в виде байта, который представлен двумя шестнадцатеричными цифрами ). Проверьте полученный результат с помощью программы RLE.
Ответ:
6B1A3C1A6B
2. Раскодируйте последовательность, упакованную с помощью алгоритма RLE (приводятся шестнадцатеричные коды): 01 4D 8E 41 01 4D 8E 4116. Для определения символов по их шестнадцатеричным кодом используйте таблицу ASCII. В приведённой таблице в первом столбце записана первая цифра шестнадцатеричного кода символа, а в первой строке – вторая. Например, символ «&» имеет шестнадцатеричный код 2616.
|
.0 |
.1 |
.2 |
.3 |
.4 |
.5 |
.6 |
.7 |
.8 |
.9 |
.A |
.B |
.C |
.D |
.E |
.F |
0. |
NUL |
SOH |
STX |
ETX |
EOT |
ENQ |
ACK |
BEL |
BS |
TAB |
LF |
VT |
FF |
CR |
SO |
SI |
1. |
DLE |
DC1 |
DC2 |
DC3 |
DC4 |
NAK |
SYN |
ETB |
CAN |
EM |
SUB |
ESC |
FS |
GS |
RS |
US |
2. |
|
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
— |
. |
/ |
3. |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
: |
; |
< |
= |
> |
? |
4. |
@ |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
5. |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
[ |
\ |
] |
^ |
_ |
6. |
` |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
7. |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
{ |
| |
} |
~ |
DEL |
Ответ:
66.67 % коэффициент сжатия, MAAAAAAAAAAAAAAMAAAAAAAAAAAAAA
3. Определите количество байтов в исходной и распакованной последовательности (см. предыдущее задание) и вычислите коэффициент сжатия:
Сжатая последовательность |
Несжатая последовательность |
Коэффициент сжатия |
10 |
30 |
66,67 |
4. Проверьте результат, полученный в предыдущем пункте, с помощью программы RLE. Предложите два способа проверки.
1.Сжатие без потерь и 2. сжатие с потерей
5. Постройте последовательности, которые сжимаются алгоритмом RLE ровно в 2 раза, в 4 раза, в 5 раз. Проверьте свои ответы с помощью программы RLE.
1. SSSSOOOEEERROOOAAYYYYYDDDDOEUUUUUWWWWJJJORRUUUUUUUUUUXXXKHHHHHHMMMMMMGGGLLLLLLLJJJJTTTTTTTTTTTTTTTTT
2. QWERTYYYYYYDFGHJJJJJJJVBNMQQQQQWWWWWWWWWWWEEEEEYYYYYUUUUUUQWERRRRRRASDFGHJKLVVVVCXZWWWWWWWWWWWWEEEEE
Несжатая последовательность |
Сжатая последовательность |
Коэффициент сжатия |
100 |
50(50%) |
2 |
100 |
47(25%) |
4 |
100 |
80(20%) |
5 |
6. Придумайте три последовательности, которые невозможно сжать с помощью алгоритма RLE:
1. QWERTYUIOPLKJHGFDSAZXCVBNM
2. QWERTYUIOPASDFGHJKLMNBVCXZEEEEEEEEEEEEEEEEEEWWPPPOOOOOOOQQQQQYYYWWW
3. BDNN
Несжатая последовательность |
«Сжатая» последовательность |
Коэффициент сжатия |
26 |
52 |
-100% |
67 |
67 |
0% |
4 |
6 |
-50% |
7. Используя программу RLE, примените RLE-сжатие к следующим файлам и найдите для каждого из них коэффициент сжатия:
Файл |
Размер без сжатия |
Размер после сжатия |
Коэффициент сжатия |
grad_vert.bmp |
11 |
22 |
-100% |
grad_horz.bmp |
11 |
22 |
-100% |
grad_diag.jpg |
11 |
20 |
-82% |
8. Объясните результаты, полученные в предыдущем пункте:
· почему не удается сжать рисунки в формате JPEG?
Ответ:
Потому, что jpeg - это уже сжатые данные. Причём сжатые куда эффективнее, чем может обеспечить RLE.
· почему для двух рисунков в формате BMP одинакового размера коэффициенты сжатия по алгоритму RLE так сильно отличаются? Подсказка: откройте эти рисунки в любой программе просмотра.
Ответ:
Степень сжатия зависит от размера последовательности одинаковых байт, а не от размера файла. Чем она длиннее тем лучше сжатие, от самой картинки зависит так же как и архивирование, размер исходного файла может быть один и тот же, а коэффициент сжатия сильно отличаться
9. Оцените максимально достижимый коэффициент сжатия с помощью рассмотренного в учебнике варианта RLE-алгоритма. В каком случае его удастся достичь?
Ответ:
Максимальное значение при одной длинной серии, минимальное при отсутствии серий
10. Оцените коэффициент сжатия с помощью RLE-алгоритма в худшем случае. Опишите этот худший случай.
Ответ:
В худшем случае размер сжатых данных окажется больше исходного размера. Для кодирования пробега с помощью алгоритма RLE требуется информация, состоящая не менее чем из двух символов. В связи с чем запуск одиночных символов на самом деле занимает больше места. По тем же причинам данные, состоящие полностью из 2-символьных прогонов, остаются неизменными после кодирования.
© ООО «Знанио»
С вами с 2009 года.