2.6.5 Haffmen alqoritmi
Bu üsulda əvvəlcə bütün informasiya oxunur və təkrarlanan elementlər sayılır. Sonra
bunlar üçün binar ağac qurulur.
Haffmen alqoritmi ilə sıxmaya misal cədvəldə verilmişdir.
Fərz edək ki, mətnə daxil olan simvolların təkrarlanması aşağıdakı kimidir:
Simvol
A
B
C
D
E
F
Təkrarlanma
10
20
30
5
25
10
Simvolları təkrarlanma tezliyinin azalması qaydasında çeşidləyək:
Simvol
C
E
B
F
A
D
Təkrarlanma
30
25
20
10
10
5
Bu cədvəl əsasında qurulmuş binar ağac aşağıdakı kimidir:
23
Göründüyü kimi, son iki elementi (A və D) birləşdirib təkrarlanma tezliyi 15 (5+10)
olan bir ―düyün‖ alırıq. Sonra bu düyünü F-lə birləşdirib təkrarlanma tezliyi 25 (15+10)
olan yeni bir ―düyün‖ alırıq. Sonra bu düyünü B ilə birləşdirib təkrarlanma tezliyi 45
(25+20) olan daha bir ―düyün‖ alırıq. Sonra C və E elementlərini birləşdirib təkrarlanma
tezliyi 55 (30+25) olan yeni bir ―düyün‖ alırıq. Sonra isə bu düyünləri birləşdirib (45+55)
binar aşacın kökünü alırıq.
Bu düyünlərin sol (yuxarı) qanadını 0-la, sağ (aşağı) qanadını 1-lə kodlaşdırırıq.
Beləliklə:
C=00 (2 bit)
E=01 (2 bit)
B=10 (2 bit)
F=110 (3 bit)
A=1101 (4 bit)
D=1111 (4 bit) kimi kodlar alınır.
Sıxma zamanı bu simvollar yeni kodları ilə yadda saxlanır və açma zamanı əvvəlki
kodları bərpa olunur.
Bundan əlavə, hesabi kodlaşdırma, Lempel-Ziv-Velç (LZW) alqoritmi, ikipilləli
kodlaşdırma (Lempel-Ziv alqoritmi) kimi sıxma metodları mövcuddur.
Hal-hazırda PKPAK, ZİP, LHArc, LHA, ARJ, WinRAR kimi arxivator proqramları
geniş tətbiq edilir.
C=30
E=25
B=20
F=10
A=10
D=5
1
5
0
1
2
5
0
1
4
5
0
1
5
5
0
1
100
1
0
|