19
BAB 2
LANDASAN TEORI
2.1 Pengertian File Teks File teks merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca. Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, EBCDIC, dan Unicode. ASCII (American Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal. ASCII digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi bilangan biner sebanyak 8 bit, dimulai dari 00000000 hingga 11111111. Total kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan desimal. EBCDIC (Extended Binary Codec Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer merk IBM. EBCDIC terdiri dari 256 karakter yang masing-masing berukuran 8 bit. Adanya keterbatasan pada kode ASCII dan EBCDIC, dibuat standar kode internasional baru yang merupakan kode 16 bit yang disebut Unicode. Unicode adalah suatu standar industri yang dirancang untuk dimanipulasi secara konsisten oleh komputer (Sudewa, 2003).
20
Gambar 2.1 Karakter ASCII
2.1.1 Format Teks Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, 2005):
1. Teks sederhana (plain text) Format data teks (*.txt) merupakan contoh format teks jenis ini yang paling populer.
2. Teks terformat (formatted text) Merupakan teks yang terformat dan mengandung styles. Format data dokumen Microsoft Word (*.doc) merupakan contoh format teks jenis ini yang paling populer.
21
Contoh format data teks di atas beserta perangkat lunak yang biasa digunakan di antaranya adalah (Purnomo, 2005): 1. Format data teks (*.txt) Format data teks merupakan format teks yang digunakan untuk menyimpan huruf, angka, karakter kontrol (tabulasi, pindah baris, dan sebagainya) atau simbol-simbol lain yang biasa digunakan dalam tulisan seperti titik, koma, tanda petik, dan sebagainya. Satu huruf, angka, karakter kontrol atau simbol pada arsip teks memakan tempat satu byte. Berbeda dengan jenis teks terformat yang satu huruf saja dapat memakan tempat beberapa byte untuk menyimpan format dari huruf tersebut seperti font, ukuran, tebal atau tidak dan sebagainya. Kelebihan dari format data teks ini adalah ukuran datanya yang kecil karena tidak adanya fitur untuk memformat tampilan teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad.
2. Format data dokumen (*.doc) Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling banyak digunakan dalam menulis laporan, makalah dan sebagainya. Doc merupakan jenis teks terformat yang tidak hanya dapat mengatur tampilan teks seperti styles (font, ukuran huruf, dan sebagainya), namun juga dapat menyisipkan gambar. Kekurangan format teks dokumen ini terletak pada ukuran datanya yang besar.
3. Hyper Text Markup Language (*.htm atau *.html) Merupakan format teks standard untuk tampilan dokumen web.
4. Rich Text Format (*.rtf) Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai macam platform, seperti Windows, Linux, Mac OS dan sebagainya.
22
2.1.2 Tipe Teks Tipe teks merupakan tipe dasar yang sudah sangat dikenal dalam kehidupan seharihari. Tipe teks terdiri dari tipe karakter (char) dan tipe string. Tipe karakter (char) terdiri atas satu huruf, angka, tanda baca, atau karakter khusus seperti ”a”, ”1”, ”*” dan
sebagainya.
Tipe
string
terdiri
atas
nol
atau
lebih
karakter
seperti ”algoritma”, ”teks” dan sebagainya (Purnomo, 2005).
2.2 Pengantar Kompresi Data Kompresi data merupakan cabang ilmu komputer yang bersumber dari bidang ilmu Teori Informasi. Teori informasi merupakan salah satu cabang ilmu matematika yang berkembang sekitar akhir tahun 1940an. Tokoh utama dari Teori Informasi adalah Claude Shannon dan Bell Laboratory. Teori Informasi fokus pada berbagai metode tentang informasi termasuk penyimpanan dan pengiriman pesan. Pada proses penyimpanan dan pengiriman pesan sering terjadi informasi berlebih (redundancy). Semakin tinggi frekuensi terjadinya redundancy semakin besar pula ukuran pesan. Upaya mengurangi redundancy inilah yang kemudian dikembangkan menjadi ilmu Kompresi Data (Nelson, 1996). Dengan menggunankan kompresi data, ukuran dari sebuah file dapat dikurangi. Hal ini sangat berguna ketika memproses, menyimpan, dan mengirim sebuah file dengan ukuran yang besar, yang membutuhkan banyak sumber. Jika algoritma kompresi yang digunakan bekerja dengan baik, seharusnya ada perbedaan yang signifikan antara file asli dan file yang telah dikompresi. Kompresi data telah menjadi hal yang diharuskan (common requirement) untuk kebanyakan aplikasi perangkat lunak (software). Tanpa kompresi data, perkembangan internet, TV digital, komunikasi mobile, atau komunikasi video tidak akan sepesat sekarang (Pu, 2006).
23
2.2.1 Pengertian Kompresi Data Kompresi data merupakan proses untuk menghasilkan representasi digital yang padat atau mampat (compact) namun tetap dapat mewakili kualitas informasi yang terkandung pada data tersebut. Kompresi data dalam konteks komputer sains merupakan sebuah seni dalam mewakili informasi dalam bentuk mampat (padat) (Pu, 2006).
2.2.2 Tujuan Kompresi Data Kompresi data bertujuan untuk mendesain sebuah algoritma kompresi untuk: 1. Mewakili data dalam ukuran yang lebih kecil. 2. Menghilangkan kelebihan (redundancy) data. 3. Mengimplementasi algoritma kompresi, untuk kompresi maupun dekompresi.
2.2.3 Proses Kompresi Data Proses kompresi dapat dibagi menjadi dua tahap. Tahap pertama disebut sebagai tahap modelling. Proses kompresi data melibatkan pengambilan sederetan simbol dan mengubahnya menjadi kode. Jika kompresi yang dilakukan efektif, sederetan simbol yang telah dikompresi ukurannya akan lebih kecil dari simbol aslinya. Kode yang dihasilkan dari sebuah atau sederetan simbol tertentu diperoleh dari sebuah model. Model adalah sekumpulan data dan aturan untuk memproses simbol input dan menentukan kode yang akan dihasilkan. Sebuah program menggunakan model untuk menentukan nilai probabilitas setiap simbol dengan tepat dan kode yang dihasilkan dari nilai probabilitas tersebut. Simbol yang memiliki nilai probabilitas yang tinggi, menghasilkan kode dengan jumlah bit yang sedikit. Simbol yang memiliki nilai probabilitas yang rendah, menghasilkan kode dengan jumlah bit yang besar. Tahap kedua disebut sebagai tahap coding. Coding merupakan sebuah deskripsi dari sebuah model dan bagaimana data yang berbeda dengan model yang dikodekan, biasanya menggunakan alfabet biner. (Pu, 2006)
24
2.2.4 Jenis-jenis Kompresi Data Kompresi data dibagi menjadi dua bagian utama, yaitu: a. Kompresi Loseless Kompresi loseless membangun kembali data asli yang sama persis dengan data kompresi. Tidak ada informasi yang hilang selama kompresi berlangsung. Pada contoh dibawah, BBAAB dibangun kembali setelah algoritma kompresi diikuti oleh algoritma dekompresi. Kompresi loseless disebut juga kompresi reveresibel karena data asli dapat dibangun dengan sempurna oleh proses dekompresi.
Algoritma BBAAB
0010100
Kompresi
Algoritma 0010100
Dekompresi Gambar 2.2 Kompresi Loseless
BBAAB
Gambar 2.2 Kompresi Loseless
b. Kompresi Lossy Kompresi lossy tidak dapat membangun kembali data yang telah dikompresi sama persis dengan data asli. Ada beberapa detail yang tidak begitu penting yang dapat hilang selama proses kompresi. Gambar di bawah ini merupakan contoh dimana sebuah bilangan desimal yang panjang menjadi lebih pendek lewat proses kompresi.
25
Algoritma 2,78128
0000111000010
Kompresi Algoritma 0000111000010
2,78
Dekompresi Gambar 2.3 Kompresi Lossy
Data seperti gambar multimedia, video, dan suara lebih mudah dikompresi dengan menggunakan teknik kompresi lossy. Kompresi lossy tidak memungkinkan untuk membangun kembali data yang telah dikompresi sama persis dengan dengan data sebelum dikompresi. Tetapi, data seperti gambar multimedia, video dan suara walaupun telah dikompresi dengan menggunakan teknik kompresi lossy tidak menghambat pengguna untuk melihat ataupun mendengar data secara keseluruhan.
2.3 Rasio Kompresi Rasio kompresi merupakan hasil perbandingan antara ukuran
file yang telah
dikompresi dengan file yang belum dikompresi.
Rasio Kompresi =
2.4 Redundancy Tugas pertama dari kompresi adalah mengidentifikasi redundancy (kelebihan) pada sumber data. Istilah redundancy (kelebihan) merupakan istilah umum. Redundancy dalam sudut pandang penyimpanan data dapat saja diartikan sebagai informasi yang bertindih, beberapa basis data yang sama, karateristik yang mirip, struktur yang sama, dll.
26
Contoh redundancy: 1. ABBBBBBBC, string yang berisi karakter yang berulang secara berurutan. Pada contoh ini, redundancy merupakan simbol yang berulang 7 kali yang dapat digantikan oleh string yang lebih pendek seperti 7B
2. BABBBA, string yang berisi karakter berulang yang tidak berurutan. Pada contoh ini, redundancy merupakan berulangnya simbol B pada string tersebut. Pada string, jumlah simbol B lebih banyak dibanding dengan simbol lain. Jika kita menggunakan sebuah kode yang lebih pendek untuk mewakili simbolsimbol yang sering muncul dan kode yang lebih panjang untuk mewakili simbol yang jarang muncul.
3. Sebuah teks dengan kata berulang sebagai berikut: When I got to the bottom of the stairs, I saw that the stairs were high and steep. I took a deep breath and began to climb the stairs. When I reached the top of the stairs I looked around me. Pada contoh ini redundancy merupakan katakata berulang berupa stairs.
4. Sebuah matriks dari sebuah data biner 010 000 011 010 010 001 010 010 010 000 010 000 Pada matriks di atas ada beberapa pola biner yang merupakan redundancy. Apabila matriks dibagi menjadi 3 baris dengan bit pertama seperti di bawah 1. Menghilangkan 2 bit terakhir setiap baris
0 0 0 0 0 0 0 0 0 0 0 0
27
2. 2. Biarkan bit yang di tengah untuk setiap baris
1 0 1 1 1 0 1 1 1 0 1 0
3. Menghilangkan 2 bit pertama dari setiap baris
0 0 1 0 0 1 0 0 0 0 0 0
Redundancy pada matriks di atas dapat dilihat pada sub matriks pertama yang hanya terdiri dari 0 saja. Pada sub matriks kedua terdapat lebih banyak 1 dari 0. Sedangkan pada sub matriks 3 terdapat lebih banyak 0 dari 1. Dalam kompresi data, redundancy dapat diketahui dengan mencari selisih antara ukuran file yang belum dikompresi dengan file yang telah dikompresi.
Redundancy=
2.5 Waktu Kompresi Waktu kompresi merupakan waktu yang dibutuhkan oleh sebuah sistem
untuk
menginput file teks yang akan dikompresi sampai dengan
proses
kompresi.
selesainya
Semakin sedikit waktu yang dibutuhkan oleh sebuah sistem untuk
melakukan sebuah kompresi, maka metode kompresi yang digunakan
semakin
efektif. 2.6 Metode Shannon Fano Metode pertama yang dikenal untuk mengkodekan simbol secara efektif adalah Shannon Fano. Claude Shannon di Bell Labs dan R M Fano di MIT mengembangkan
28
metode ini secara bersamaan. Pada metode Shannon Fano kompresi dapat dilakukan dengan 2 cara, yaitu dengan membangun pohon biner dan dengan membangun tabel pembagian berdasarkan probabilitas pada setiap simbol. Pada tugas akhir ini, kompresi dilakukan dengan membangun tabel pembagian berdasarkan probabilitas setiap simbol pada file teks. Metode ini dapat dilakukan dengan mengetahui probabilitas dari setiap simbol kemunculan simbol pada sebuah pesan. Dengan mengetahui probabilitas, sebuah tabel kode dapat dibangun dengan properti sebagai berikut: 1. Setiap simbol yang berbeda memiliki kode yang berbeda. 2. Simbol dengan probabilitas kemunculan yang lebih kecil memiliki kode panjang
bit yang lebih panjang dan simbol dengan
probabilitas yang
lebih besar memiliki panjang bit yang lebih
pendek. 3. Meskipun kode yang dihasilkan memiliki panjang bit yang berbeda dengan kode pada karakter asli, tetapi dapat didekodekan secara unik (Nelson, 1996). Berikut adalah langkah-langkah dalam metode Shannon Fano: 1. Buatlah daftar probabilitas atau kehadiran setiap simbol dari data (pesan yang akan dikodekan). 2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara menurun (dari simbol yang frekuensi kemunculannya paling banyak sampai simbol dengan frekuensi kemunculan paling sedikit). 3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat mungkin dengan jumlah frekuensi dengan bagian yang lain (disebut bagian bawah). 4. Daftar bagian atas dengan digit 0 dan bagian bawah dinyatakan dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian bawah akan dimulai dengan 1.
29
5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan bawah. Bagilah menjadi kelompok-kelompok dan tambahkanlah bit-bit pada kode sampai setiap simbol memperoleh kode.
Berikut merupakan sebuah string yang terdiri dari simbol-simbol sebagai berikut: AAABBBCCDDAAAEEEAAABBDDAAACCEEBBCCDDAAA. Tabel di bawah ini merupakan simbol A, B, C, D, dan E dan kode yang diperoleh untuk setiap simbol dengan menggunakan metode Shannon Fano.
Tabel 2.1 Tabel Shannon Fano Simbol Kode A
00
B
01
C
10
D
110
E
111
1. Langkah pertama yang harus dilakukan untuk memperoleh kode adalah dengan membuat daftar probabilitas atau frekuensi dari setiap simbol.
Tabel 2.2 Tabel Frekuensi Simbol Simbol Frekuensi A
15
B
7
C
6
D
6
E
5
2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara menurun (dari simbol yang frekuensi kemunculannya paling banyak sampai simbol dengan frekuensi kemunculan paling sedikit).
30
Tabel 2.3 Tabel Frekuensi Simbol Frekuensi
3.
A
15
B
7
C
6
D
6
E
5
Total
39
Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat mungkin dengan jumlah frekuensi dengan bagian yang lain (disebut bagian bawah).
Tabel 2.4 Tabel Pembagian Frekuensi Simbol Frekuensi
4.
A
15
B
7
C
6
D
6
E
5
Daftar bagian atas dengan digit 0 dan bagian bawah dinyatakan dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian bawah akan dimulai dengan 1.
Tabel 2.5 Tabel Pembentukan Kode Shannon Fano Simbol Frekuensi Kode A
15
0
B
7
0
C
6
1
D
6
1
E
5
1
31
5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan bawah. Bagilah menjadi kelompok-kelompok dan tambahkanlah bit-bit pada kode sampai setiap simbol memperoleh kode.
Pembagian Pertama Dari tabel di atas dapat diketahui bahwa diperoleh total frekuensi sebesar 39. Tabel di atas kemudian dibagi menjadi 2 berdasarkan total frekuensi bagian atas sedekat mungkin dengan total frekuensi bagian bawah. Pembagian tersebut menghasilkan simbol A dan B menjadi bagian atas dengan total frekuensi 22. Sedangkan total frekuensi C,D, dan E adalah 17. Simbol A dan B akan dimulai dengan 0 sedangkan C,D, dan E dimulai dengan kode 1.
Tabel 2.6 Tabel Pembagian Pertama Simbol Frekuensi Kode A
15
0
B
7
0
C
6
1
D
6
1
E
5
1
Pembagian Kedua Pembagian kedua dilakukan dengan membagi dua frekuensi A dan B. A merupakan bagian atas dengan total 15 dan B bagian bawah dengan total 7. Dari pembagian tersebut diperoleh kode untuk simbol A, yaitu 00 dan kode untuk simbol B, yaitu 01 Tabel 2.7 Tabel Pembagian Kedua Simbol Frekuensi Kode A
15
00
B
7
01
C
6
1
D
6
1
E
5
1
32
Pembagian Ketiga Pembagian ketiga dilakukan dengan membagi dua frekuensi simbol C dengan total 6 dengan simbol D dan E dengan total 11. Diperoleh kode untuk simbol C, yaitu 10. Tabel 2.8 Tabel Pembagian Ketiga Simbol Frekuensi Kode A
15
00
B
7
01
C
6
10
D
6
11
E
5
11
Pembagian Keempat Pembagian keempat dilakukan dengan membagi dua frekuensi D dengan total 6 dan E dengan total 5. Sehingga diperoleh kode untuk D, yaitu 110 dan E, yaitu 111. Tabel 2.9 Tabel Pembagian Keempat Simbol Frekuensi Kode A
15
00
B
7
01
C
6
10
D
6
110
E
5
111
2.7 Metode Unary Coding Metode ini sudah umum digunakan dalam kompresi data dan banyak digunakan dengan gabungan beberapa teknik modifikasi. Unary Coding direpresentasikan dalam sebuah string dari n bit 1 diikuti dengan satu bit 0
yang mengakhiri yang
didefenisikan sebagai n-1 bit 1diikuti satu bit 0. Atau sebaliknya sebagai alternatif dapat juga secara ekuivalen dimulai dari n bit 0 diikuti dengan bit 1 yang mengakhiri yang didefenisikan sebagai n-1 bit 0 diikuti dengan satu bit 1. Pada metode Unary
33
Coding tidak terdapat pembagian frekuensi simbol-simbol yang ada pada sebuah string. (Salomon, 2008). Tabel 2.10 Tabel Unary Coding n Kode
Alternatif Kode
1 0
1
2 10
01
3 110
001
4 1110
0001
5 11110 00001 Untuk perolehan n terakhir akan dimodifikasi menjadi n-1 bit 1 tanpa diikuti oleh satu bit 0. Tabel 2.11 Tabel Alternatif Unary Coding n Kode Alternatif Kode 1
0
1
2
10
01
3
110
001
4 1110
0001
5 1111
00001
Berikut adalah daftar frekuensi kemunculan simbol pada pesan yang telah diurutkan descending order berdasarkan frekuensi kemunculan. n merupakan urutan dari frekuensi tertinggi sampai pada frekuensi terendah. Apabila terdapat simbol-simbol yang memiliki frekuensi yang sama, maka simbol-sombol tersebut akan diurutkan berdasarkan urutan kemunculannya pada sebuah string. Tabel 2.12 Tabel Frekuensi Simbol Frekuensi n A
15
1
B
7
2
C
6
3
D
6
4
E
5
5
34
Kode yang diperoleh adalah sebagai berikut: Tabel 2.13 Tabel Pengkodean Simbol Frekuensi n Kode (n-1) bit 1 diikuti oleh satu bit 0 A
15
1 0
B
7
2 10
C
6
3 110
D
6
4 1110
E
5
5 1111
2.8 Penelitian Terdahulu Pu (2006) menjelaskan bahwa data kompresi merupakan ilmu (dan seni) yang menampilkan informasi dalam bentuk yang pendek. Kata data dalam konteks kompresi data merupakan bentuk digital dari informasi faktual yang dapat diproses oleh program komputer. Sebelum dilakukan proses kompresi, data disebut sumber data (sourced data). Terdapat tiga tipe data sumber, yaitu teks, gambar digital, dan suara. Teks biasanya direperesentasikan dengan kode ASCII 8 bit yang diperluas. Teks biasanya mempunyai ekstensi file berupa .txt. Nelson (1996) menjelaskan bahwa pada umumnya kompresi data dilakukan dengan mengambil sederetan simbol dan mengubahnya menjadi kode. Jika kompresi yang dilakukan efektif, deretan kode yang dihasilkan akan lebih kecil dari simbol yang asli. Kode tertentu yang dihasilkan dari simbol tertentu dibuat berdasarkan sebuah model. Model merupakan sekumpulan data dan rule yang digunakan untuk menginput simbol dan menentukan kode mana yang akan dihasilkan. Program menggunakan model untuk menentukan secara tepat probabilitas setiap simbol dan kode untuk menghasilkan kode yang tepat berdasarkan probabilitasnya. David Salomon (2008) menjelaskan bahwa tujuan utama dari bidang kompresi data adalah untuk mengembangkan metode untuk kompresi yang lebih baik. Namun, satu dari dilema dari kompresi data adalah ketika berhenti mencari metode untuk kompresi yang lebih baik. Memodifikasi sebuah algoritma untuk memperbaiki
35
kompresi sebanyak 1% dapat membuat waktu untuk menjalankan program 10% lebih cepat. Ida Bagus Adi Sudewa (2003) menjelaskan tentang berbagai set karakter yang pernah digunakan pada komputer selain ASCII dan EBCDIC yang lebih dikenal dan umum digunakan hingga sekarang. Herry Purnomo (2005) menjelaskan tentang berbagai tipe bilangan yang digunakan pada memori komputer serta memperkenalkan format file teks yang biasa digunakan dalam menyimpan dokumen. Pada penelitian yang dilakukan oleh Haroon Altaraweh dipaparkan beberapa metode kompresi untuk file teks seperti: LZW, Huffman dan Fixed Length Code. Metode-metode tersebut diuji dan dievaluasi pada file teks dengan melakukan sebuah perbandingan
dengan menggunakan parameter pembanding : ukuran file hasil
kompresi, rasio kompresi, dan waktu kompresi. Setelah dilakukan studi perbandingan tersebut dapat disimpulkan bahwa diantara ketiga metode tersebut metode LZW merupakan metode yang paling efektif untuk digunakan dalam kompresi file teks. Kompresi data merupakan ilmu dan seni menampilkan informasi dalam bentuk yang padat. Selama beberapa dekade, komrpesi data telah menjadi bagian yang penting dalam revolusi multimedia digital. Ada banyak algoritma kompresi data yang dapat digunakan untuk mengkompresi data dalam berbagai format. Pada penelitian yang dilakukan oleh Shanmugasundaram terdapat survei dari beberapa perbedaan mendasar dari algoritma kompresi data loseless. Hasil percobaan dan perbandingan dari algoritma kompresi loseless menggunakan teknik kompresi statistik dan kompresi teknik berdasarkan dictionary akan ditampilkan pada file teks. Algoritma kompresi yang digunakan adalah Shannon Fano, Huffman, Adaptive Huffman Coding, Run Length Coding, dan Aritmetik Coding. Pada penelitian yang dilakukan oleh Srinivasa Rao, penulis membandingkan teknik kompresi data aritmetik dan teknik kompresi data Huffman untuk mengurangi bandwidth dan waktu transmisi (pengiriman data). Pada teknik kompresi dataaritmetik, rasio kompresi yang dihasilkan lebih 50 % dari rasio kompresi yang dihasilkan oleh Huffman. Rasio kompresi ini semakin meningkat sejalan dengan pertambahan panjang string.
36
Pada penelitian yang dilakukan oleh Romi Wiryadinata membahas tentang teknik kompresi data dengan menggunakan metode Shannon Fano dengan membandingkan antara teknik statik dan teknik dinamik dengan menggunakan data yang sama. Data yang dibandingkan adalah berupa data pesan dalam bentuk teks ‟gadjahmada‟ yang diolah sedemikian rupa menjadi kode ASCII dan runtun biner. Untuk pesan teks yang pendek metode statik lebih cocok digunakan agar menghasilkan kode dan runtun data yang lebih sedikit tetapi membutuhkan waktu yang cukup lama untuk scanning huruf, sedangkan untuk pesan teks yang panjang metode dinamik lebih cocok digunakan untuk mempersingkat waktu komputasi tetapi dengan hasil runtun data keluaran yang sedikit lebih besar dari metode statik. Algoritma Shannon Fano merupakan algoritma kompresi data yang mengkodekan tiap karakter dengan menggunakan beberapa rangkaian bit. Pembentukan bit yang mewakili masing-masing karakter yang dibuat berdasarkan frekuensi kemunculan tiap karakter. Sedangkan algoritma LZ78 merupakan algoritma kompresi data yang menggunakan kamus yang dibentuk setiap ada 1 input karakter baru.Pada penelitian yang dilakukan oleh Nita Saputro diketahui bahwa algoritma Shannon Fano menghasilkan rasio kompresi dan waktu kompresi lebih baik daripada algoritma LZ78 pada data teks yang memiliki frekuensi kemunculan karakter yang merata.