SlideShare a Scribd company logo
1 of 11
Download to read offline
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1251
IMPLEMENTASI TEKNIK KOMPRESI TEKS HUFFMAN
Andysah Putera Utama Siahaan
Fakultas Ilmu Komputer
Universitas Pembanguan Panca Budi
Jl. Jend. Gatot Subroto Km. 4,5 Sei Sikambing, 20122, Medan, Sumatera Utara, Indonesia
andiesiahaan@gmail.com
Abstrak
Huffman adalah salah satu algoritma kompresi. Ini adalah algoritma paling terkenal untuk
kompres teks. Ada empat fase dalam algoritma Huffman untuk kompres teks. Yang pertama adalah
kelompok karakter. Yang kedua adalah untuk membangun pohon Huffman. Yang ketiga adalah
encoding, dan yang terakhir adalah pembangunan bit kode. Prinsip algoritma Huffman adalah
karakter yang sering muncul di encoding dengan rangkaian bit yang pendek dan karakter yang
jarang muncul di bit-encoding dengan seri lagi. teknik kompresi Huffman dapat memberikan
penghematan dari 30% dari bit asli. Ia bekerja berdasarkan frekuensi karakter. Semakin banyak
karakter yang sama mencapai, semakin tinggi tingkat kompresi yang diperoleh.
Kata Kunci — Huffman, Compression, Algorithm, Security
I. Pendahuluan
Sebuah teks adalah kumpulan karakter atau string menjadi satu kesatuan. Ini berisi banyak
karakter di dalamnya yang selalu menimbulkan masalah di perangkat penyimpanan yang terbatas
dan kecepatan transmisi data pada waktu tertentu. Meskipun penyimpanan dapat digantikan oleh
yang lain lebih besar, ini bukan solusi yang baik jika kita masih bisa menemukan solusi lain. Dan
ini membuat semua orang mencoba untuk berpikir untuk menemukan cara yang dapat digunakan
untuk kompres teks.
Kompresi adalah proses mengubah data asli ke bentuk kode untuk menghemat penyimpanan dan
waktu persyaratan untuk transmisi data. Sebuah algoritma kompresi loseless harus menekankan
orisinalitas data selama proses kompresi dan dekompresi [1]. Dengan menggunakan algoritma
Huffman, proses kompresi teks dilakukan dengan menggunakan prinsip pengkodean; masing-
masing karakter dikodekan dengan rangkaian beberapa bit untuk menghasilkan hasil yang lebih
optimal. Tujuan penulisan makalah ini adalah untuk mengetahui efektivitas dan cara terpendek
algoritma Huffman dalam kompresi teks dan menjelaskan cara mengkompresi teks menggunakan
algoritma Huffman dalam pemrograman.
II. Landasan Teori
Kompresi data adalah proses menyusut data ke bit lebih kecil dari representasi asli sehingga
dibutuhkan lebih sedikit ruang penyimpanan dan waktu transmisi kurang saat berkomunikasi
melalui jaringan [2]. Huffman algoritma diciptakan oleh seorang mahasiswa MIT bernama David
Huffman pada tahun 1952. Ini adalah salah satu metode tertua dan paling terkenal di kompresi teks
[4]. Kode Huffman menggunakan prinsip-prinsip yang mirip dengan kode Morse. Setiap karakter
dikodekan hanya dengan rangkaian beberapa bit, di mana karakter yang sering muncul dengan
serangkaian kode bit pendek dan karakter yang jarang muncul dikodekan dengan panjang set bit.
Berdasarkan jenis peta, kode ini digunakan untuk mengubah pesan awal (isi input data) menjadi
satu set codeword. Algoritma Huffman menggunakan metode statis. Sebuah metode statis adalah
metode yang selalu menggunakan peta kode yang sama tapi kita masih bisa mengubah urutan
penampilan karakter. Metode ini membutuhkan dua langkah. Langkah pertama untuk menghitung
frekuensi terjadinya masing-masing simbol dan menentukan kode peta, dan yang terakhir adalah
untuk mengkonversi pesan menjadi kumpulan kode yang akan ditransmisikan. Sementara itu,
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1252
berdasarkan pada simbol teknik coding, Huffman menggunakan metode symbolwise. Symbolwise
adalah metode yang menghitung frequncy karakter dalam setiap proses. Tranforming karakter teks
ke symbolwise bukanlah proses yang mudah [3]. Simbol ini lebih sering terjadi akan diberikan
kode lebih pendek dari simbol-simbol yang jarang muncul.
A. Algoritma Greedy
Algoritma Greedy memecahkan masalah dengan memilih jarak terbaik pada saat tertentu. masalah
Huffman dapat diselesaikan dengan menggunakan algoritma serakah serta [5]. Sebuah algoritma serakah
adalah suatu algoritma yang mengikuti metaheuristik pemecahan masalah dari membuat pilihan yang
optimal. Dengan menghitung setiap langkah, kami berharap kami dapat menemukan solusi yang optimal.
Misalnya, menerapkan strategi serakah dengan TSP untuk mengunjungi tempat yang belum dikunjungi
terdekat. algoritma serakah tidak pernah menemukan solusi global. algoritma ini baik dalam menemukan
solusi terdekat. Dua contoh dari algoritma serakah yang Algoritma Kruskal dan Prim.
B. Algoritma Huffman.
David Huffman dikodekan karakter dengan hanya menggunakan pohon biner biasa, tapi setelah itu, David
Huffman menemukan bahwa menggunakan algoritma serakah dapat membangun kode prefix optimal.
Penggunaan algoritma serakah pada Huffman adalah pada pemilihan dua pohon dengan frekuensi terendah di
pohon Huffman. Sebuah algoritma serakah digunakan untuk meminimalkan total biaya. Biaya ini digunakan
untuk menggabungkan dua pohon pada akar frekuensi sama dengan jumlah dua pohon buah yang
digabungkan. Oleh karena itu total biaya pembentukan pohon Huffman adalah total dari seluruh merger. Oleh
karena itu, algoritma Huffman adalah salah satu contoh dari algoritma kompresi yang menggunakan
algoritma serakah. Tujuan kami adalah untuk menghitung total biaya yang dikeluarkan untuk membangun
teks.
III. Evaluasi
Dalam implementasinya, kami mencoba untuk mencari tahu teknik Huffman. Ada empat langkah
yang harus dilakukan untuk membuat teknik Huffman dioperasikan sepenuhnya. Fase-fase ini di
bawah menjelaskan langkah-langkah dari algoritma.
A. FasePertama.
Asumsikan bahwa kita memiliki kalimat "Lika-LIKU LAKI-LAKI TAK LAKU-LAKU". Teks
di atas adalah 33 panjang. Itu harus dikategorikan dasar pada frekuensi karakter. Fungsi
character_set adalah untuk menentukan berapa kali masing-masing karakter muncul.
function Character_Set(text : string) : string;
var
temp : string;
result : string;
begin
temp := text;
result := '';
for i := 1 to length(temp) do
for j := i + 1 to length(temp) do
if temp[i] = temp[j] then temp[j] := '#';
j := 1;
for i := 1 to length(temp) do
if temp[i] <> '#' then
begin
result := concat(result, temp[i]);
inc(j);
end;
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1253
Character_Set := result;
end;
Loop pertama yang dilakukan oleh "untuk" adalah untuk menggantikan duplikat karakter dalam
'#'. Loop kedua menghapus teks asli yang terdiri dari '#'. Kita bisa lihat ilustrasi di bawah ini.
Original Text : LIKA-LIKU LAKI-LAKI TAK LAKU-LAKU
Replaced Text : LIKA-###U ##########T############
Character Set : LIKA-U T
procedure Character_Freq(text : string);
var
temp : string;
freq : byte;
begin
temp := Character_Set(text);
for i := 1 to length(temp) do
begin
freq := 0;
for j := 1 to length(text) do
if temp[i] = text[j] then inc(freq);
AddNode(Head, Tail, temp[i], freq);
end;
end;
Prosedur di atas menghitung frekuensi terjadinya karakter. Pertama, kita harus menjalankan
fungsi set karakter untuk mendapatkan serangkaian karakter tunggal yang digunakan; maka kita
harus membandingkan dari karakter pertama sampai karakter terakhir pada teks asli untuk
mendapatkan frekuensi. Karena kita menggunakan pointer untuk mewakili nilai. Hasilnya akan
dikirim ke node setelah mendapatkan bertambah. Gambar 1 menggambarkan karakter dan
frekuensi mereka memperoleh dari Fase Satu.
Gambar 1. Frekuensi kemunculan karakter
Tabel harus diurutkan dalam urutan menaik dan kunci utama adalah frekuensi.
procedure Tree_Sorting;
var
tASCII : char;
tFreq : byte;
begin
for i := length(cs) - 1 downto 1 do
begin
Current := Head;
for j := 1 to i do
begin
if Current^.Freq > Current^.Next^.Freq then
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1254
begin
tASCII := Current^.ASCII;
tFreq := Current^.Freq;
Current^.ASCII := Current^.Next^.ASCII;
Current^.Freq := Current^.Next^.Freq;
Current^.Next^.ASCII := tASCII;
Current^.Next^.Freq := tFreq;
end;
Current := Current^.Next;
end;
end;
end;
Prosedur di atas adalah untuk mengurutkan daftar disortir dengan menggunakan algoritma
bubble sort. Node pertama akan dibandingkan dengan node berikutnya, dan nilai yang lebih besar
akan bertukar dan pindah ke kanan. Kami memiliki nilai terkecil di sebelah kiri. Gambar 2
menunjukkan hasil setelah semacam itu.
Gambar 2. Frekuensi karakter setelah terurutkan
B. FaseKedua
Setelah tabel sepenuhnya diurutkan, sekarang saatnya untuk menghadapi langkah yang paling
sulit; yang membuat pohon Huffman. Kita harus mengkategorikan setiap node dan meletakkannya
di linked list. Algoritma Greedy mengambil terpisah di bagian ini. Kita harus menggabungkan dua
node dan membuat node baru dan menjadikannya sebagai induk dari simpul sebelumnya. Mari kita
lihat ilustrasi di bawah ini:
!" #" $" "" %" &" '" ("
)" *" *" *" +" ," ," -"
Dua node pertama akan diambil dan dilepaskan dari tabel. Membuat node baru yang akan
menjadi orang tua mereka.
"
."
" "
$" "" ." %" &" '" ("
"
+"
" "
*" *" +" +" ," ," -"
!"
"
#"
" " " " " " " "
)"
"
*"
" " " " " " " "
Induk simpul akan dimasukkan ke tabel dalam urutan menaik menggunakan algoritma
penyisipan. Simpul pertama kini digantikan oleh node ketiga sebelum. Selain itu, kita harus
melakukan hal yang sama lagi sampai tabel terdiri dari satu simpul.
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1255
"
."
" "
." %" ." &" '" ("
"
,"
" "
+" +" ," ," ," -"
$"
"
""
" " " " " " "
*"
"
*"
" " " " " " "
"
."
" "
." &" '" (" ."
"
/"
" "
," ," ," -" /"
."
"
%"
" " " " " "
+"
"
+"
" " " " " "
"
."
" "
'" (" ." ."
"
)0"
" "
," -" /" )0"
."
"
&"
" " " " "
,"
"
,"
" " " " "
"
."
" "
." ." ."
"
)*"
" "
/" )0" )*"
'"
"
("
" " " "
,"
"
-"
" " " "
"
."
" "
." ."
"
01"
" "
)*" 01"
."
"
."
" " "
/"
"
)0"
" " "
"
."
" "
."
"
**"
" "
**"
."
"
."
" "
)*"
"
01"
" "
!" #" $" "" ." %" &" '" ("
" " " " " "
)" *" *" *" +" +" ," ," -"
" " " " " "
!" #" $" "" ." %" ." &" '" ("
" " " " "
)" *" *" *" +" +" ," ," ," -"
" " " " "
!" #" $" "" ." %" ." &" '" (" ."
" " " "
)" *" *" *" +" +" ," ," ," -" /"
" " " "
!" #" $" "" ." %" ." &" '" (" ." ."
" " "
)" *" *" *" +" +" ," ," ," -" /" )0"
" " "
!" #" $" "" ." %" ." &" '" (" ." ." ."
" "
)" *" *" *" +" +" ," ," ," -" /" )0" )*"
" "
!" #" $" "" ." %" ." &" '" (" ." ." ." ."
"
)" *" *" *" +" +" ," ," ," -" /" )0" )*" 01"
"
!" #" $" "" ." %" ." &" '" (" ." ." ." ." ."
)" *" *" *" +" +" ," ," ," -" /" )0" )*" 01" **"
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1256
Array terdiri dari 15 nodes.
Tahap ini memiliki dua jenis linked list:
- Double Linked List.
- Binary Tree Linked List.
Gambar 3.Double & Binary Tree Linked List
Gambar 3 menunjukkan hirarki dari array. * menunjukkan node memiliki orangtua. Gambar 4
adalah diagram lengkap dari pohon Huffman.
Gambar4.Pohon Huffman
Tujuan menggunakan dua model linked list adalah untuk menghindari prosedur pencarian. Kita
dapat menggunakan breadth-first atau kedalaman-pertama pencarian untuk membentuk kode bit,
tetapi membutuhkan waktu dan teknik pemrograman tingkat lanjut. Namun, kita dapat
menggunakan daftar untuk menggantikan prosedur backtracking. Kami hanya memiliki untuk
melacak siapa orang tua adalah.
procedure Huffman_Tree;
var
tFreq : byte;
tASCII : char;
InsertN : NodeP;
NewNode : NodeP;
begin
tASCII := '*';
Current := Head;
while Current^.Next <> NIL do
begin
InsertN := Head;
tFreq := Current^.Freq + Current^.Next^.Freq;
Current^.Bit := 0;
Current^.Next^.Bit := 1;
while InsertN <> NIL do
begin
if tFreq <= InsertN^.Freq then
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1257
begin
new(NewNode);
NewNode^.Freq := tFreq;
NewNode^.ASCII := tASCII;
NewNode^.Next := InsertN;
NewNode^.Prev := InsertN^.Prev;
InsertN^.Prev^.Next := NewNode;
InsertN^.Prev := NewNode;
NewNode^.Left := Current;
NewNode^.Right := Current^.Next;
Current^.Parent := NewNode;
Current^.Next^.Parent := NewNode;
break;
end
else if tFreq > Tail^.Freq then
begin
new(NewNode);
NewNode^.Freq := tFreq;
NewNode^.ASCII := tASCII;
Tail^.Next := NewNode;
NewNode^.Prev := Tail;
Tail:=NewNode;
Tail^.Next := NIL;
NewNode^.Left := Current;
NewNode^.Right := Current^.Next;
Current^.Parent := NewNode;
Current^.Next^.Parent := NewNode;
break;
end;
InsertN := InsertN^.Next;
end;
Current := Current^.Next;
Current := Current^.Next;
end;
end;
Prosedur Huffman digunakan untuk membentuk pohon Huffman dengan mengolah pohon linear
sebelumnya. Kita harus menandai node "yang berada di sebelah kiri" dan "yang ada di sebelah
kanan" dengan menambahkan tanda 0 atau 1 untuk bidang simpul.
type
NodeP = ^Node;
Node = record
ASCII : char;
Bit : byte;
Code : string;
Dec : byte;
freq : byte;
Prev,
Next : NodeP;
Parent,
Left,
Right : NodeP;
end;
ASCII : where character is memorized.
Bit : node sign. (left or right)
Code : Huffman code.
Dec : decimal code.
Freq : occurence of the character.
Next, Prev,
Parent,
Left, Right : represent the connected nodes.
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1258
Dua node pertama harus dikombinasikan. Node pertama akan ditandai sebagai '0' karena itu
adalah di sebelah kiri dan simpul kedua akan ditandai sebagai '1' karena itu adalah salah satu kanan.
Selain itu, kedua node memiliki induk yang sama, dan orang tua memiliki dua anak, node. Setelah
node induk dibuat, harus dimasukkan ke dalam daftar link dengan menggabungkan nilai node dan
nilai linked list. node harus ditambahkan di sebelah kiri nilai yang lebih besar atau sama. Namun,
jika node induk lebih besar dari setiap node, itu harus dimasukkan setelah node terakhir.
C. Fase Ketiga
Pada langkah ini, pohon tersebut sudah terstruktur. Ini adalah waktu untuk mengambil tanda
simpul dengan membuat lingkaran sampai induk dari node terakhir kosong (null).
procedure Write_Huffman;
var
result : string;
bit : string[1];
begin
Current := Head;
repeat
result := '';
Cursor := Current;
Current^.Dec := 0;
Biner := 1;
if Cursor^.ASCII <> '*' then
begin
repeat
if (Cursor^.Bit = 0) or
(Cursor^.Bit = 1) then
begin
Current^.Dec := Current^.Dec +
(Cursor^.Bit * Biner);
Biner := Biner * 2;
str(Cursor^.Bit, Bit);
insert(Bit, result, 1);
end;
Cursor := Cursor^.Parent;
until Cursor^.Parent = NIL;
end;
Current^.Code := result;
Current := Current^.Next;
until Current^.Next = NIL;
end;
Selain itu, tanda simpul dari node akan dimasukkan ke dalam sebuah string tunggal.
D. Fase Keempat
Setiap node telah terdiri dari kode. Fase ini, segala sesuatu yang telah dikodekan dikonversi ke
tabel Huffman. Tabel 1 menunjukkan prioritas karakter. Karakter "K" memiliki paling penampilan
sementara karakter "T" memiliki kurang satu. Karakter dengan munculnya tertinggi adalah
memiliki kode biner terpendek.
Table 1. Huffman Table.
!"#$% &$'()% !*+'% ,-.%/'0)% !*+'%/'0)%
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1259
!" )" )111" +" +"
#" *" )11)" +" )0"
$" *" ))11" +" )0"
"" *" ))1)" +" )0"
%" +" )1)" *" )0"
&" ," )))" *" )/"
'" ," 11" 0" )0"
(" -" 1)" 0" )+"
" " " "
12%
Setiap kode mewakili karakter. Ini terdiri dari beberapa digit dari string biner. Teks sebelumnya
akan berubah menjadi set biner baru. The berusia delapan bit diganti dengan yang baru. Mari kita
lihat contoh di bawah ini:
Original Text : LIKA-LIKU LAKI-LAKI TAK LAKU-LAKU
Original Code :
111 101 01 00 1001 111 101 01 1100 1101 111 00 01 101 1001 111 00 01 101 1101 1000 00 01
1101 111 00 01 1100 1001 111 00 01 1100
Bit Code :
11110101 00100111110101110011011110001101
100111100011011101100000 0111011110001110
01001111 00011100
Decimal Code :
254, 39, 215, 55, 141, 158,
55, 96, 119, 142, 79, 28
Gambar 5. Running Program (Bagian. 1).
Gambar 6. Running Program (Bagian. 2).
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1260
Gambar 7. Running Program (Bagian. 3)
Gambar 5 ke Gambar 7 adalah proses Huffman berjalan. Teks aslinya sebelum kompresi
mengambil 33 karakter panjang. Cepat setelah dikompresi, string hanya membutuhkan 12 karakter.
Jadi kita menghemat 21 karakter.
Original Text Length : 33
Coded Text Length : 12
Saving Rate : (33 – 12) / 33 * 100 %
63.63636 %
Dengan melakukan algoritma ini, tingkat kompresi mencapai 63% dari pesan asli. Tentu saja,
itu akan menghemat kapasitas penyimpanan.
IV. Kesimpulan
Penelitian ini menjelaskan teknik dasar tentang cara menerapkan algoritma kompresi. algoritma
Huffman dapat menggabungkan dengan algoritma serakah yang selalu menemukan cara termudah
dari node terdekat. Ada empat fase dalam algoritma Huffman untuk kompres teks; yang pertama
adalah fase untuk mengelola dan mendapatkan frekuensi karakter. Yang kedua adalah
pembentukan pohon Huffman; yang ketiga adalah untuk membentuk kode dari tanda simpul. Selain
itu, tahap terakhir adalah proses encoding. Namun, dalam makalah ini, kami hanya melakukan
metode encoding, decoding berada di bawah proyek. Menerapkan Huffman dalam kompresi akan
lagi lebih banyak ruang dalam penyimpanan. Huffman encoding sangat ampuh untuk pesan teks
yang memiliki terjadinya karakter yang sama.
JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016
1261
DAFTAR PUSTAKA
[1] I. Akman, H. Bayindir, S. Ozleme, Z. Akin and a. S. Misra, "Lossless Text Compression Technique
Using Syllable Based Morphology," International Arab Journal of Information Technology, vol. 8, no.
1, pp. 66-74, 2011.
[2] A. S. Sidhu and M. Garg, "Research Paper on Text Data Compression Algorithm using Hybrid
Approach," IJCSMC, vol. 3, no. 12, pp. 1-10, 2014.
[3] H. Al-Bahadili and S. M. Hussain, "A Bit-level Text Compression Scheme Based on the ACW
Algorithm," International Journal of Automation and Computing, pp. 123-131, 2010.
[4] M. Schindler, "Practical Huffman coding," 1998. [Online]. Available:
http://www.compressconsult.com/huffman/.
[5] A. Malik, N. Goyat and V. Saroha, "Greedy Algorithm: Huffman Algorithm," International Journal of
Advanced Research in Computer Science and Software Engineering, vol. 3, no. 7, pp. 296-303, 2013.

More Related Content

Similar to Penggunaan linkedlist

01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.ppt01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.pptJournalJPMN
 
Pengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.pptPengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.pptNoerisEkaBudiarti
 
Modul 6 kompresi data dan teks
Modul 6 kompresi data dan teksModul 6 kompresi data dan teks
Modul 6 kompresi data dan teksEkky Patria
 
Pcd 010 - model kompresi citra dan dekompresi
Pcd   010 - model kompresi citra dan dekompresiPcd   010 - model kompresi citra dan dekompresi
Pcd 010 - model kompresi citra dan dekompresiFebriyani Syafri
 
Bab 3. pengenalan algoritma
Bab 3. pengenalan algoritmaBab 3. pengenalan algoritma
Bab 3. pengenalan algoritmaArif Punk Street
 
Pengenalan algoritma.ppt
Pengenalan algoritma.pptPengenalan algoritma.ppt
Pengenalan algoritma.ppteriekorlando3
 
Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program rKhair Norrasid
 
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangJeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangIndividual Consultants
 
Faris persentasi
Faris persentasiFaris persentasi
Faris persentasisetiwan
 
Ringkasan materi teori algoritma
Ringkasan materi teori algoritmaRingkasan materi teori algoritma
Ringkasan materi teori algoritmaAkhmad Asari
 
Tugas modul praktikum pemrograman web
Tugas modul praktikum pemrograman  webTugas modul praktikum pemrograman  web
Tugas modul praktikum pemrograman webWayan Suntara
 
Pohon pengkode-huffman
Pohon pengkode-huffmanPohon pengkode-huffman
Pohon pengkode-huffmanAriBudiRiyanto
 
listiati univ bung hata (1110013211051) Algoritma dan flowchart
listiati univ bung hata (1110013211051) Algoritma dan flowchartlistiati univ bung hata (1110013211051) Algoritma dan flowchart
listiati univ bung hata (1110013211051) Algoritma dan flowchartMaryanto Sumringah SMA 9 Tebo
 
KOMPRESI DATA DAN TEKS.pdf
KOMPRESI DATA DAN TEKS.pdfKOMPRESI DATA DAN TEKS.pdf
KOMPRESI DATA DAN TEKS.pdfDestinySlicer
 

Similar to Penggunaan linkedlist (20)

Dasar dasar algoritma - 1
Dasar dasar algoritma - 1Dasar dasar algoritma - 1
Dasar dasar algoritma - 1
 
01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.ppt01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.ppt
 
Pengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.pptPengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.ppt
 
Modul 6 kompresi data dan teks
Modul 6 kompresi data dan teksModul 6 kompresi data dan teks
Modul 6 kompresi data dan teks
 
Pcd 010 - model kompresi citra dan dekompresi
Pcd   010 - model kompresi citra dan dekompresiPcd   010 - model kompresi citra dan dekompresi
Pcd 010 - model kompresi citra dan dekompresi
 
Bab 3. pengenalan algoritma
Bab 3. pengenalan algoritmaBab 3. pengenalan algoritma
Bab 3. pengenalan algoritma
 
Pengenalan algoritma.ppt
Pengenalan algoritma.pptPengenalan algoritma.ppt
Pengenalan algoritma.ppt
 
Bahan 2.pptx
Bahan 2.pptxBahan 2.pptx
Bahan 2.pptx
 
Laporan 1 penngantar program r
Laporan 1 penngantar program rLaporan 1 penngantar program r
Laporan 1 penngantar program r
 
Tugas dsm kelompok11
Tugas dsm kelompok11Tugas dsm kelompok11
Tugas dsm kelompok11
 
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.LangJeni Intro2 Bab04 Tour Dari Package Java.Lang
Jeni Intro2 Bab04 Tour Dari Package Java.Lang
 
Faris persentasi
Faris persentasiFaris persentasi
Faris persentasi
 
Makalah Kumpulan remaja
Makalah Kumpulan remajaMakalah Kumpulan remaja
Makalah Kumpulan remaja
 
Ringkasan materi teori algoritma
Ringkasan materi teori algoritmaRingkasan materi teori algoritma
Ringkasan materi teori algoritma
 
Daskom 3
Daskom 3Daskom 3
Daskom 3
 
Tugas modul praktikum pemrograman web
Tugas modul praktikum pemrograman  webTugas modul praktikum pemrograman  web
Tugas modul praktikum pemrograman web
 
Pohon pengkode-huffman
Pohon pengkode-huffmanPohon pengkode-huffman
Pohon pengkode-huffman
 
listiati univ bung hata (1110013211051) Algoritma dan flowchart
listiati univ bung hata (1110013211051) Algoritma dan flowchartlistiati univ bung hata (1110013211051) Algoritma dan flowchart
listiati univ bung hata (1110013211051) Algoritma dan flowchart
 
KOMPRESI DATA DAN TEKS.pdf
KOMPRESI DATA DAN TEKS.pdfKOMPRESI DATA DAN TEKS.pdf
KOMPRESI DATA DAN TEKS.pdf
 
Modul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdfModul Pemrograman Dasar.pdf
Modul Pemrograman Dasar.pdf
 

More from Fajar Baskoro

Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxFajar Baskoro
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterFajar Baskoro
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanFajar Baskoro
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUSFajar Baskoro
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxFajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdfFajar Baskoro
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptxFajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptxFajar Baskoro
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxFajar Baskoro
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimFajar Baskoro
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahFajar Baskoro
 
Meraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaMeraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaFajar Baskoro
 
Membangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetMembangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetFajar Baskoro
 
Transition education to employment.pdf
Transition education to employment.pdfTransition education to employment.pdf
Transition education to employment.pdfFajar Baskoro
 

More from Fajar Baskoro (20)

Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
 
Meraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaMeraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remaja
 
Membangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetMembangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan Appsheet
 
epl1.pdf
epl1.pdfepl1.pdf
epl1.pdf
 
user.docx
user.docxuser.docx
user.docx
 
Dtmart.pptx
Dtmart.pptxDtmart.pptx
Dtmart.pptx
 
DualTrack-2023.pptx
DualTrack-2023.pptxDualTrack-2023.pptx
DualTrack-2023.pptx
 
BADGE.pptx
BADGE.pptxBADGE.pptx
BADGE.pptx
 
womenatwork.pdf
womenatwork.pdfwomenatwork.pdf
womenatwork.pdf
 
Transition education to employment.pdf
Transition education to employment.pdfTransition education to employment.pdf
Transition education to employment.pdf
 

Recently uploaded

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
Ppt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada AnakPpt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada Anakbekamalayniasinta
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxalalfardilah
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsAdePutraTunggali
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 
implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023DodiSetiawan46
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxc9fhbm7gzj
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaNadia Putri Ayu
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfSitiJulaeha820399
 
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfHARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfkustiyantidew94
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Abdiera
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 

Recently uploaded (20)

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
Ppt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada AnakPpt tentang perkembangan Moral Pada Anak
Ppt tentang perkembangan Moral Pada Anak
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public Relations
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 
implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023implementasu Permendikbudristek no 53 2023
implementasu Permendikbudristek no 53 2023
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Materi Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptxMateri Bimbingan Manasik Haji Tarwiyah.pptx
Materi Bimbingan Manasik Haji Tarwiyah.pptx
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional Dunia
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdfModul 1.2.a.8 Koneksi antar materi 1.2.pdf
Modul 1.2.a.8 Koneksi antar materi 1.2.pdf
 
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdfHARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
HARMONI DALAM EKOSISTEM KELAS V SEKOLAH DASAR.pdf
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 

Penggunaan linkedlist

  • 1. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1251 IMPLEMENTASI TEKNIK KOMPRESI TEKS HUFFMAN Andysah Putera Utama Siahaan Fakultas Ilmu Komputer Universitas Pembanguan Panca Budi Jl. Jend. Gatot Subroto Km. 4,5 Sei Sikambing, 20122, Medan, Sumatera Utara, Indonesia andiesiahaan@gmail.com Abstrak Huffman adalah salah satu algoritma kompresi. Ini adalah algoritma paling terkenal untuk kompres teks. Ada empat fase dalam algoritma Huffman untuk kompres teks. Yang pertama adalah kelompok karakter. Yang kedua adalah untuk membangun pohon Huffman. Yang ketiga adalah encoding, dan yang terakhir adalah pembangunan bit kode. Prinsip algoritma Huffman adalah karakter yang sering muncul di encoding dengan rangkaian bit yang pendek dan karakter yang jarang muncul di bit-encoding dengan seri lagi. teknik kompresi Huffman dapat memberikan penghematan dari 30% dari bit asli. Ia bekerja berdasarkan frekuensi karakter. Semakin banyak karakter yang sama mencapai, semakin tinggi tingkat kompresi yang diperoleh. Kata Kunci — Huffman, Compression, Algorithm, Security I. Pendahuluan Sebuah teks adalah kumpulan karakter atau string menjadi satu kesatuan. Ini berisi banyak karakter di dalamnya yang selalu menimbulkan masalah di perangkat penyimpanan yang terbatas dan kecepatan transmisi data pada waktu tertentu. Meskipun penyimpanan dapat digantikan oleh yang lain lebih besar, ini bukan solusi yang baik jika kita masih bisa menemukan solusi lain. Dan ini membuat semua orang mencoba untuk berpikir untuk menemukan cara yang dapat digunakan untuk kompres teks. Kompresi adalah proses mengubah data asli ke bentuk kode untuk menghemat penyimpanan dan waktu persyaratan untuk transmisi data. Sebuah algoritma kompresi loseless harus menekankan orisinalitas data selama proses kompresi dan dekompresi [1]. Dengan menggunakan algoritma Huffman, proses kompresi teks dilakukan dengan menggunakan prinsip pengkodean; masing- masing karakter dikodekan dengan rangkaian beberapa bit untuk menghasilkan hasil yang lebih optimal. Tujuan penulisan makalah ini adalah untuk mengetahui efektivitas dan cara terpendek algoritma Huffman dalam kompresi teks dan menjelaskan cara mengkompresi teks menggunakan algoritma Huffman dalam pemrograman. II. Landasan Teori Kompresi data adalah proses menyusut data ke bit lebih kecil dari representasi asli sehingga dibutuhkan lebih sedikit ruang penyimpanan dan waktu transmisi kurang saat berkomunikasi melalui jaringan [2]. Huffman algoritma diciptakan oleh seorang mahasiswa MIT bernama David Huffman pada tahun 1952. Ini adalah salah satu metode tertua dan paling terkenal di kompresi teks [4]. Kode Huffman menggunakan prinsip-prinsip yang mirip dengan kode Morse. Setiap karakter dikodekan hanya dengan rangkaian beberapa bit, di mana karakter yang sering muncul dengan serangkaian kode bit pendek dan karakter yang jarang muncul dikodekan dengan panjang set bit. Berdasarkan jenis peta, kode ini digunakan untuk mengubah pesan awal (isi input data) menjadi satu set codeword. Algoritma Huffman menggunakan metode statis. Sebuah metode statis adalah metode yang selalu menggunakan peta kode yang sama tapi kita masih bisa mengubah urutan penampilan karakter. Metode ini membutuhkan dua langkah. Langkah pertama untuk menghitung frekuensi terjadinya masing-masing simbol dan menentukan kode peta, dan yang terakhir adalah untuk mengkonversi pesan menjadi kumpulan kode yang akan ditransmisikan. Sementara itu,
  • 2. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1252 berdasarkan pada simbol teknik coding, Huffman menggunakan metode symbolwise. Symbolwise adalah metode yang menghitung frequncy karakter dalam setiap proses. Tranforming karakter teks ke symbolwise bukanlah proses yang mudah [3]. Simbol ini lebih sering terjadi akan diberikan kode lebih pendek dari simbol-simbol yang jarang muncul. A. Algoritma Greedy Algoritma Greedy memecahkan masalah dengan memilih jarak terbaik pada saat tertentu. masalah Huffman dapat diselesaikan dengan menggunakan algoritma serakah serta [5]. Sebuah algoritma serakah adalah suatu algoritma yang mengikuti metaheuristik pemecahan masalah dari membuat pilihan yang optimal. Dengan menghitung setiap langkah, kami berharap kami dapat menemukan solusi yang optimal. Misalnya, menerapkan strategi serakah dengan TSP untuk mengunjungi tempat yang belum dikunjungi terdekat. algoritma serakah tidak pernah menemukan solusi global. algoritma ini baik dalam menemukan solusi terdekat. Dua contoh dari algoritma serakah yang Algoritma Kruskal dan Prim. B. Algoritma Huffman. David Huffman dikodekan karakter dengan hanya menggunakan pohon biner biasa, tapi setelah itu, David Huffman menemukan bahwa menggunakan algoritma serakah dapat membangun kode prefix optimal. Penggunaan algoritma serakah pada Huffman adalah pada pemilihan dua pohon dengan frekuensi terendah di pohon Huffman. Sebuah algoritma serakah digunakan untuk meminimalkan total biaya. Biaya ini digunakan untuk menggabungkan dua pohon pada akar frekuensi sama dengan jumlah dua pohon buah yang digabungkan. Oleh karena itu total biaya pembentukan pohon Huffman adalah total dari seluruh merger. Oleh karena itu, algoritma Huffman adalah salah satu contoh dari algoritma kompresi yang menggunakan algoritma serakah. Tujuan kami adalah untuk menghitung total biaya yang dikeluarkan untuk membangun teks. III. Evaluasi Dalam implementasinya, kami mencoba untuk mencari tahu teknik Huffman. Ada empat langkah yang harus dilakukan untuk membuat teknik Huffman dioperasikan sepenuhnya. Fase-fase ini di bawah menjelaskan langkah-langkah dari algoritma. A. FasePertama. Asumsikan bahwa kita memiliki kalimat "Lika-LIKU LAKI-LAKI TAK LAKU-LAKU". Teks di atas adalah 33 panjang. Itu harus dikategorikan dasar pada frekuensi karakter. Fungsi character_set adalah untuk menentukan berapa kali masing-masing karakter muncul. function Character_Set(text : string) : string; var temp : string; result : string; begin temp := text; result := ''; for i := 1 to length(temp) do for j := i + 1 to length(temp) do if temp[i] = temp[j] then temp[j] := '#'; j := 1; for i := 1 to length(temp) do if temp[i] <> '#' then begin result := concat(result, temp[i]); inc(j); end;
  • 3. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1253 Character_Set := result; end; Loop pertama yang dilakukan oleh "untuk" adalah untuk menggantikan duplikat karakter dalam '#'. Loop kedua menghapus teks asli yang terdiri dari '#'. Kita bisa lihat ilustrasi di bawah ini. Original Text : LIKA-LIKU LAKI-LAKI TAK LAKU-LAKU Replaced Text : LIKA-###U ##########T############ Character Set : LIKA-U T procedure Character_Freq(text : string); var temp : string; freq : byte; begin temp := Character_Set(text); for i := 1 to length(temp) do begin freq := 0; for j := 1 to length(text) do if temp[i] = text[j] then inc(freq); AddNode(Head, Tail, temp[i], freq); end; end; Prosedur di atas menghitung frekuensi terjadinya karakter. Pertama, kita harus menjalankan fungsi set karakter untuk mendapatkan serangkaian karakter tunggal yang digunakan; maka kita harus membandingkan dari karakter pertama sampai karakter terakhir pada teks asli untuk mendapatkan frekuensi. Karena kita menggunakan pointer untuk mewakili nilai. Hasilnya akan dikirim ke node setelah mendapatkan bertambah. Gambar 1 menggambarkan karakter dan frekuensi mereka memperoleh dari Fase Satu. Gambar 1. Frekuensi kemunculan karakter Tabel harus diurutkan dalam urutan menaik dan kunci utama adalah frekuensi. procedure Tree_Sorting; var tASCII : char; tFreq : byte; begin for i := length(cs) - 1 downto 1 do begin Current := Head; for j := 1 to i do begin if Current^.Freq > Current^.Next^.Freq then
  • 4. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1254 begin tASCII := Current^.ASCII; tFreq := Current^.Freq; Current^.ASCII := Current^.Next^.ASCII; Current^.Freq := Current^.Next^.Freq; Current^.Next^.ASCII := tASCII; Current^.Next^.Freq := tFreq; end; Current := Current^.Next; end; end; end; Prosedur di atas adalah untuk mengurutkan daftar disortir dengan menggunakan algoritma bubble sort. Node pertama akan dibandingkan dengan node berikutnya, dan nilai yang lebih besar akan bertukar dan pindah ke kanan. Kami memiliki nilai terkecil di sebelah kiri. Gambar 2 menunjukkan hasil setelah semacam itu. Gambar 2. Frekuensi karakter setelah terurutkan B. FaseKedua Setelah tabel sepenuhnya diurutkan, sekarang saatnya untuk menghadapi langkah yang paling sulit; yang membuat pohon Huffman. Kita harus mengkategorikan setiap node dan meletakkannya di linked list. Algoritma Greedy mengambil terpisah di bagian ini. Kita harus menggabungkan dua node dan membuat node baru dan menjadikannya sebagai induk dari simpul sebelumnya. Mari kita lihat ilustrasi di bawah ini: !" #" $" "" %" &" '" (" )" *" *" *" +" ," ," -" Dua node pertama akan diambil dan dilepaskan dari tabel. Membuat node baru yang akan menjadi orang tua mereka. " ." " " $" "" ." %" &" '" (" " +" " " *" *" +" +" ," ," -" !" " #" " " " " " " " " )" " *" " " " " " " " " Induk simpul akan dimasukkan ke tabel dalam urutan menaik menggunakan algoritma penyisipan. Simpul pertama kini digantikan oleh node ketiga sebelum. Selain itu, kita harus melakukan hal yang sama lagi sampai tabel terdiri dari satu simpul.
  • 5. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1255 " ." " " ." %" ." &" '" (" " ," " " +" +" ," ," ," -" $" " "" " " " " " " " *" " *" " " " " " " " " ." " " ." &" '" (" ." " /" " " ," ," ," -" /" ." " %" " " " " " " +" " +" " " " " " " " ." " " '" (" ." ." " )0" " " ," -" /" )0" ." " &" " " " " " ," " ," " " " " " " ." " " ." ." ." " )*" " " /" )0" )*" '" " (" " " " " ," " -" " " " " " ." " " ." ." " 01" " " )*" 01" ." " ." " " " /" " )0" " " " " ." " " ." " **" " " **" ." " ." " " )*" " 01" " " !" #" $" "" ." %" &" '" (" " " " " " " )" *" *" *" +" +" ," ," -" " " " " " " !" #" $" "" ." %" ." &" '" (" " " " " " )" *" *" *" +" +" ," ," ," -" " " " " " !" #" $" "" ." %" ." &" '" (" ." " " " " )" *" *" *" +" +" ," ," ," -" /" " " " " !" #" $" "" ." %" ." &" '" (" ." ." " " " )" *" *" *" +" +" ," ," ," -" /" )0" " " " !" #" $" "" ." %" ." &" '" (" ." ." ." " " )" *" *" *" +" +" ," ," ," -" /" )0" )*" " " !" #" $" "" ." %" ." &" '" (" ." ." ." ." " )" *" *" *" +" +" ," ," ," -" /" )0" )*" 01" " !" #" $" "" ." %" ." &" '" (" ." ." ." ." ." )" *" *" *" +" +" ," ," ," -" /" )0" )*" 01" **"
  • 6. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1256 Array terdiri dari 15 nodes. Tahap ini memiliki dua jenis linked list: - Double Linked List. - Binary Tree Linked List. Gambar 3.Double & Binary Tree Linked List Gambar 3 menunjukkan hirarki dari array. * menunjukkan node memiliki orangtua. Gambar 4 adalah diagram lengkap dari pohon Huffman. Gambar4.Pohon Huffman Tujuan menggunakan dua model linked list adalah untuk menghindari prosedur pencarian. Kita dapat menggunakan breadth-first atau kedalaman-pertama pencarian untuk membentuk kode bit, tetapi membutuhkan waktu dan teknik pemrograman tingkat lanjut. Namun, kita dapat menggunakan daftar untuk menggantikan prosedur backtracking. Kami hanya memiliki untuk melacak siapa orang tua adalah. procedure Huffman_Tree; var tFreq : byte; tASCII : char; InsertN : NodeP; NewNode : NodeP; begin tASCII := '*'; Current := Head; while Current^.Next <> NIL do begin InsertN := Head; tFreq := Current^.Freq + Current^.Next^.Freq; Current^.Bit := 0; Current^.Next^.Bit := 1; while InsertN <> NIL do begin if tFreq <= InsertN^.Freq then
  • 7. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1257 begin new(NewNode); NewNode^.Freq := tFreq; NewNode^.ASCII := tASCII; NewNode^.Next := InsertN; NewNode^.Prev := InsertN^.Prev; InsertN^.Prev^.Next := NewNode; InsertN^.Prev := NewNode; NewNode^.Left := Current; NewNode^.Right := Current^.Next; Current^.Parent := NewNode; Current^.Next^.Parent := NewNode; break; end else if tFreq > Tail^.Freq then begin new(NewNode); NewNode^.Freq := tFreq; NewNode^.ASCII := tASCII; Tail^.Next := NewNode; NewNode^.Prev := Tail; Tail:=NewNode; Tail^.Next := NIL; NewNode^.Left := Current; NewNode^.Right := Current^.Next; Current^.Parent := NewNode; Current^.Next^.Parent := NewNode; break; end; InsertN := InsertN^.Next; end; Current := Current^.Next; Current := Current^.Next; end; end; Prosedur Huffman digunakan untuk membentuk pohon Huffman dengan mengolah pohon linear sebelumnya. Kita harus menandai node "yang berada di sebelah kiri" dan "yang ada di sebelah kanan" dengan menambahkan tanda 0 atau 1 untuk bidang simpul. type NodeP = ^Node; Node = record ASCII : char; Bit : byte; Code : string; Dec : byte; freq : byte; Prev, Next : NodeP; Parent, Left, Right : NodeP; end; ASCII : where character is memorized. Bit : node sign. (left or right) Code : Huffman code. Dec : decimal code. Freq : occurence of the character. Next, Prev, Parent, Left, Right : represent the connected nodes.
  • 8. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1258 Dua node pertama harus dikombinasikan. Node pertama akan ditandai sebagai '0' karena itu adalah di sebelah kiri dan simpul kedua akan ditandai sebagai '1' karena itu adalah salah satu kanan. Selain itu, kedua node memiliki induk yang sama, dan orang tua memiliki dua anak, node. Setelah node induk dibuat, harus dimasukkan ke dalam daftar link dengan menggabungkan nilai node dan nilai linked list. node harus ditambahkan di sebelah kiri nilai yang lebih besar atau sama. Namun, jika node induk lebih besar dari setiap node, itu harus dimasukkan setelah node terakhir. C. Fase Ketiga Pada langkah ini, pohon tersebut sudah terstruktur. Ini adalah waktu untuk mengambil tanda simpul dengan membuat lingkaran sampai induk dari node terakhir kosong (null). procedure Write_Huffman; var result : string; bit : string[1]; begin Current := Head; repeat result := ''; Cursor := Current; Current^.Dec := 0; Biner := 1; if Cursor^.ASCII <> '*' then begin repeat if (Cursor^.Bit = 0) or (Cursor^.Bit = 1) then begin Current^.Dec := Current^.Dec + (Cursor^.Bit * Biner); Biner := Biner * 2; str(Cursor^.Bit, Bit); insert(Bit, result, 1); end; Cursor := Cursor^.Parent; until Cursor^.Parent = NIL; end; Current^.Code := result; Current := Current^.Next; until Current^.Next = NIL; end; Selain itu, tanda simpul dari node akan dimasukkan ke dalam sebuah string tunggal. D. Fase Keempat Setiap node telah terdiri dari kode. Fase ini, segala sesuatu yang telah dikodekan dikonversi ke tabel Huffman. Tabel 1 menunjukkan prioritas karakter. Karakter "K" memiliki paling penampilan sementara karakter "T" memiliki kurang satu. Karakter dengan munculnya tertinggi adalah memiliki kode biner terpendek. Table 1. Huffman Table. !"#$% &$'()% !*+'% ,-.%/'0)% !*+'%/'0)%
  • 9. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1259 !" )" )111" +" +" #" *" )11)" +" )0" $" *" ))11" +" )0" "" *" ))1)" +" )0" %" +" )1)" *" )0" &" ," )))" *" )/" '" ," 11" 0" )0" (" -" 1)" 0" )+" " " " " 12% Setiap kode mewakili karakter. Ini terdiri dari beberapa digit dari string biner. Teks sebelumnya akan berubah menjadi set biner baru. The berusia delapan bit diganti dengan yang baru. Mari kita lihat contoh di bawah ini: Original Text : LIKA-LIKU LAKI-LAKI TAK LAKU-LAKU Original Code : 111 101 01 00 1001 111 101 01 1100 1101 111 00 01 101 1001 111 00 01 101 1101 1000 00 01 1101 111 00 01 1100 1001 111 00 01 1100 Bit Code : 11110101 00100111110101110011011110001101 100111100011011101100000 0111011110001110 01001111 00011100 Decimal Code : 254, 39, 215, 55, 141, 158, 55, 96, 119, 142, 79, 28 Gambar 5. Running Program (Bagian. 1). Gambar 6. Running Program (Bagian. 2).
  • 10. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1260 Gambar 7. Running Program (Bagian. 3) Gambar 5 ke Gambar 7 adalah proses Huffman berjalan. Teks aslinya sebelum kompresi mengambil 33 karakter panjang. Cepat setelah dikompresi, string hanya membutuhkan 12 karakter. Jadi kita menghemat 21 karakter. Original Text Length : 33 Coded Text Length : 12 Saving Rate : (33 – 12) / 33 * 100 % 63.63636 % Dengan melakukan algoritma ini, tingkat kompresi mencapai 63% dari pesan asli. Tentu saja, itu akan menghemat kapasitas penyimpanan. IV. Kesimpulan Penelitian ini menjelaskan teknik dasar tentang cara menerapkan algoritma kompresi. algoritma Huffman dapat menggabungkan dengan algoritma serakah yang selalu menemukan cara termudah dari node terdekat. Ada empat fase dalam algoritma Huffman untuk kompres teks; yang pertama adalah fase untuk mengelola dan mendapatkan frekuensi karakter. Yang kedua adalah pembentukan pohon Huffman; yang ketiga adalah untuk membentuk kode dari tanda simpul. Selain itu, tahap terakhir adalah proses encoding. Namun, dalam makalah ini, kami hanya melakukan metode encoding, decoding berada di bawah proyek. Menerapkan Huffman dalam kompresi akan lagi lebih banyak ruang dalam penyimpanan. Huffman encoding sangat ampuh untuk pesan teks yang memiliki terjadinya karakter yang sama.
  • 11. JURNAL INFORMATIKA Vol. 10, No. 2, Jul 2016 1261 DAFTAR PUSTAKA [1] I. Akman, H. Bayindir, S. Ozleme, Z. Akin and a. S. Misra, "Lossless Text Compression Technique Using Syllable Based Morphology," International Arab Journal of Information Technology, vol. 8, no. 1, pp. 66-74, 2011. [2] A. S. Sidhu and M. Garg, "Research Paper on Text Data Compression Algorithm using Hybrid Approach," IJCSMC, vol. 3, no. 12, pp. 1-10, 2014. [3] H. Al-Bahadili and S. M. Hussain, "A Bit-level Text Compression Scheme Based on the ACW Algorithm," International Journal of Automation and Computing, pp. 123-131, 2010. [4] M. Schindler, "Practical Huffman coding," 1998. [Online]. Available: http://www.compressconsult.com/huffman/. [5] A. Malik, N. Goyat and V. Saroha, "Greedy Algorithm: Huffman Algorithm," International Journal of Advanced Research in Computer Science and Software Engineering, vol. 3, no. 7, pp. 296-303, 2013.