Saat ini satu halaman SMS hanya mampu mengirimkan data maksimal sebesar 140 byte atau 160 karakter dengan format 7-bit. Karena keterbatasan tersebut, tak jarang user melakukan penyingkatan agar pesan yang akan dikirimkan dapat termuat dalam satu halaman SMS. Pemanfaatan algoritma kompresi pada teknologi SMS dapat membantu menambah kapasitas teks SMS yang akan dikirimkan. Pada penelitian ini akan dibuat suatu aplikasi untuk melakukan kompresi terhadap teks SMS yang berjalan pada ponsel berbasis JAVA MIDP 2.0.
Aplikasi kompresi SMS merupakan aplikasi yang dibuat agar dapat melakukan proses kompresi dan dekompresi terhadap teks SMS untuk kemudian mengirimkan atau menerima pesan tersebut. Algoritma kompresi yang digunakan pada aplikasi ini adalah algoritma Huffman kanonik dan LZW dimana teks SMS yang akan dikompresi harus merupakan teks SMS default mengacu pada spesifikasi GSM 03.38. Pada saat mengirim pesan, aplikasi akan bertindak sebagai kompresor sedangkan pada saat menerima pesan aplikasi akan bertindak sebagai dekompresor. Aplikasi ini dibuat dengan menggunakan bahasa JAVA, yaitu J2ME.
Aplikasi kompresi SMS secara keseluruhan mampu untuk melakukan proses kompresi dan dekompresi terhadap teks SMS. Aplikasi kompresi SMS dengan menggunakan algoritma Huffman kanonik secara rata-rata mampu melakukan kompresi teks SMS dengan rasio kompresi sebesar 36.02% dengan tingkat keberhasilan mereduksi jumlah halaman SMS sebesar 75%. Apabila menggunakan algoritma LZW aplikasi mampu mengkompresi teks SMS dengan rasio kompresi sebesar 21.90% dengan tingkat keberhasilan mereduksi jumlah halaman SMS sebesar 18.37%.
Kata Kunci: kompresi SMS, kompresi teks, kompresi Huffman, kompresi LZW, algoritma kompresi
maksud sy itu sy kesulitan mencari referensi contoh source code huffman yg pake tabel fixed nya mas. Sy bingung dlm code nya tabel fixed nya dalam bentuk gimana? di stackoverflow nggak ada yg mbahas huffman dg tabel statis. kalo boleh bs minta contoh source codenya nggak mas? yg untuk fungsi huffman kanonik dg fixed table nya saja, untuk referensi sy. kalo boleh, email sy : [email protected] , makasih mas sebelumnya.
klo di stackoverflow gak ada ya wajar saja karena aku juga nyusun sendiri tabelnya berdasarkan karakter yang dipakai untuk sms (suka2 kita aja). Untuk referensi mungkin bisa dicek diperpustakaan MIPA UGM saja.
mas, boleh lihat sourcecode huffman kanoniknya? sy skrg lg bikin perbandingan huffman, lzw, dan BWT untuk kompresi sms di android. tp implementasi saya beda mas, data yg dikompresi itu nantinya akan sy sembunyikan (steganografi) dalam sms. jd data yg sy kompresi sangat kecil, paling 1-4 kata shg kalo pake huffman biasa pasti malah jd lebih besar. sy br dpt pencerahan stlah baca artikel ini, tp sy kesulitan nyari referensi huffman kanonik. mohon pencerahannya mas.
untuk huffman kanonik saya kira pada tulisan yang saya jadikan sebagai referensi (daftar pustaka) sudah cukup jelas.
Oke Mas…
Maaf mas bertanya lagi, yang saya masih binggung pada poin ke 2 kan ada a dikodekan 0011, nah kenapa a itu 0011 bukan 0001 atau yang lain, apa ada syarat2nya kanapa a jadi 0011.
Mohon sarannya ya mas…
trimaksh sbelumnya
itu berdasarkan pengurutan saja, jadi setelah diurutkan berdasarkan karakter yg sering muncul lalu saya buat kodenya dipadukan dengan prinsip pencarian di huffman kanonik maka hasilnya seperti itu. Intinya dalam membuat kode tersebut saya melakukan asumsi dimana untuk karakter yg sering muncul inginnya dikodekan dengan panjang berapa karakter dan seterusnya. Setelah itu bisa kita lihat hasil pengkodeannya, apakah kamus yg kita peroleh itu efisien atau tidak. Setelah kamus ditentukan kita tinggal bikin saja pengkodean huffman kanonik dimana ini digunakan utk memudahkan proses pencarian saja.
kalo gak salah a itu berada di urutan ke-3, dan angka 3 jika di buat biner’nya adalah 11. karena dia dikodekan dgn lebar 4 digit menjadi 0011.
salam Kenal Mas…
Yang mau saya tanya mas :
1. Apakah ada syarat2 khusus tentang pembuatan tabel statisnya
2. Bagaimana bentuk pohon huffman kanoniknya mas, yang saya tahu, metode huffman kan menggunakan frekuensi kemunculan setiap karakter, apakah ada hubunganya dengan pembuatan tabel statisnya.
Toloong ya Mas, saya butuh analisa tentang pohonya aja, tolong kirim ke email saya ya mas, atau ada linknya..
Sebelumnya saya ucapkan terima kasih Mas..
Salam kenal juga.
1. Untuk syarat khusus, ketika saya membuat tabel statis ini tidak ada karena saya hanya membuat berdasarkan frekuensi kemunculannya karakter saja.
2. bentuk pohon yg saya buat mungkin lebih tepat disebut kamus dimana bila karakternya adalah a misalnya akan di kodekan sebagai 0011 dst. Untuk huffman kanoniknya saya hanya menggunakan untuk proses retrieve data’nya saja.
Note: Jika tabelnya dibuat secara dinamis maka tiap karakter akan dibuat pohonnya dan dimungkinkan hasil pohon’nya akan berbeda2 berdasarkan komposisi datanya sehingga hsl ini otomatis kita harus mengirimkan juga informasi tentang pohon yang telah kita buat. Jika informasi tentang pohon ini juga dikirimkan maka maksud untuk melakukan pemampatan data bisa jadi malah tidak terpenuhi karena bisa jadi informasi tentang pohon ini justru lebih besar daripada datanya sendiri.
mas aku butuh bantuan nih…mas di jogja ya..ada alamat yg bsa dihubungi gak..email atau no HP..
Biasanya sih yg lain lewat imel ugm saya. Tapi maaf ya kalau minta source atau testing codingan saya gak bisa sanggupi. Thx.
@seseorang: sebelumnya saya mohon maaf karena pertanyaannya terhapus (saking banyaknya spam yg masuk) sehingga tidak bisa ditampilkan disini. Untuk tabel sms’nya sebetulnya saya susun sendiri. Tabel huffman kanonik saya gunakana untuk proses pencariannya saja. Untuk link bisa dilihat di daftar pustaka yg saya sertakan. Bila kurang jelas silahkan di post lagi pertanyaannya. Thanks.
OK mas,,, gak papa.. Makasih mas herpur sebelumnya..
Ok mas.. gak papa udah mau cobain bantu aja udah senang sekali saya mas herpur….
Saya udah kirim mas program saya ke email UGM mas..
judulnya Program Kompresi SMS..
Makasih ya mas sebelummnya… 😀
Ok udh saya terima source-nya tapi gak bisa dlm waktu dekat soalnya di kantor lagi banyak kerjaan.
bukan gitu mas maksud saya..
jadi gini mas, dalam artikel yg mas buat pada halaman 6…
Tentanga Mengirim dan menerima SMS Pada j2me.. point nomer 1..
1. Pesan biner (binary message) yaitu pesan berbentuk biner yang dikirimkan melalui SMS. Pesan jenis ini menggunakan encode data 8-bit dengan jumlah data maksimum tiap halaman SMS sebesar 140 byte atau 133 byte jika momor port disertakan..
..
Nah yang punya saya itu encode datanya pas di tes dalam binary message jadinya encode data 7 bit untuk 133 byte..
gitu mas.. emang susah sih jelasinnya.. Mas kalo mas gak keberatan boleh gak saya kirim source code program saya ini yang langsung bisa di run di netbeans.. untuk dianalisa sama mas herpur…
Kalo mas tidak keberatan saya kirim mas source codenya.,
gmn mas??
Oiya kalo mas mau sertakan juga ya email mas herpur untuk saya kirim…
boleh, kirim saja ke email ugm saya. Tapi saya gak janji bisa ngasih solusi soalnya saya juga udh lama gak main di mobile
mas sorry nanya lagi nih.. mas gmn ya caranya supaya sms hasil kompresi kita dihitung dengan mode 8 bit.. dengan kata lain Binary message tersebut dalam 133 karakter (beserta port) dihitung sebagai satu halaman..
Soalnya mas gw nih udah berhasil bisa kompresi SMS yang mana pas dihitung 1 halamannya mank bener 133 karakter …
Tapi herannya pas saya analisa corat coret di kertas malah sistem ngitungnya 133 karakter —- 1 halaman, dengan mode 7 bit… Otomatis saya rugi dalam hasil kompresinya mas…
Yang harusnya 8 bit -133 karakter (1 halaman sms)
Malah jadi 7 bit -133 karakter (1 halaman sms))
mas ada validasi tertentu gak mas supaya bisa jadi 8 bit-133 karakter , 1 halaman tsb..
Saya rasa validasinya ada di method Kompresinya Y??
gmn mas??
program punyaku sih validasi untuk menghitung jumlah halaman sms udh dilakukan sistem sehingga apabila ternyata hasil kompresi ternyata gak memuaskan user bisa membatalkan untuk mengirimkan sms
eh mas gak jadi pertanyaan sebelumnya…
Alhamduillah udah jalan sekarang..
udah bisa AMSnya jalan…
Huuuuaaaaa seneng banget saya…
Makasih banyak ya mas…
sip. sama2. puas khan klo udh ketemu caranya. tetap semangat ya….
Hmm.. udah saya coba mas pake link yang mas kasih untuk ngetes AMS tersebut.
step by step udah saya coba untuk settingnya..
Tapi terjadi error mas pas saya rubah pake execute “OTA ”
..
Apa netbeans ato emulator saya gak support OTA??
gmn tuh mas??
mas pernah ngalamin yg kayak gini ga’???
ada solusi>>?
mas mau nanya nih di aplikasi yang mas buat ada yang namanya AMS.. yang kerjanya agar aplikasi bisa aktif ketika ada pesan masuk??
gimana ya mas cara setting di Netbeansnya??
mohon tutorialnya mas..
Makasih..
iya saya pake AMS cuman udh lupa cara settingnya. coba aja buka link ini, saya waktu itu baca dari situ juga.
mas kalo di kompresi pake metode huffman bukannya jadi karakter yg lain !
trus saya kirim ,,,
nah sebelum 160 sudah 2 lembar itungannya .
saya sudah download aplikasi mas dari link
https://herpur.web.id/herpur.web.id/aplikasi-kompresi-sms/
aplikasi mas juga begitu kerjanya ,
mengapa aplikasi kSMS punya mas tidak di itung 2 lembar .
aplikasi kSMS juga merubah karakter kan …..
ya memang seperti itu makanya antara penerima dan pengirim harus ada aplikasinya. Itu yg 2 halaman sebelum ato sesudah proses kompresi. Dalam aplikasi yg saya buat ada proses pengubahan utk huruf2 yg sering digunakan disandikan dengan jumlah bit yg pendek tapi klo jarang ya sandi-nya lebih panjang. Makanya kemungkinan huruf yg diketikkan itu krn jarang digunakan jadinya blm 160 karakter dia udh dihitung 2 halaman.
mas saya mau tanya !
ko apabila saya masukan karakter seperti
âE$ãÓé€Ö dll , karakter yang tidak biasa
mengapa sebelum 160 karakter
sudah dihitung sebagai 2 lembar SMS
tolong dibantu mas ,,,
tampaknya itu memang ada karakter-karekater yang dikodekan dengan 2 byte di spesifikasi sms-nya. Untuk lebih jelas bisa dilihat disini
hmm…. kayak gitu ternyata.. oke2….. mantep juga idenya mas… kalo aq cari2,,, memang tuh kompresi pake huffman yg fix lebih banyak keuntungannya dari dibandingkan pake pohon…
Mas2 mau tanya lagi nih… hehe… Surry y ngerepotin….
mas kalo dari artikel mas diketahui kalo kita menggunakan port yg diinisialisasikan sendiri sms menjadi 153 karakter dan itu memang terbukti dan telah saya buktikan sendiri///….
saya juga udah bikin fix tabel berdasarkan saran mas… kalo yg alpabetnya sering diakses kodenya lebih pendek dibanding yg jarang diakses dan asumsi lain sebagainya…
pertanyaannya…. kenapa ketika saya lagi melakukan percobaan, sms kompresinya menjadi 133 karakter untuk satu halaman,,,,,
misalnya gini formatnya :
184(2)->133(1)
ini artinya 184 karakter dalam 2 lembar sms biasa dikompresi menjadi 133 karakter (1 halaman sms)
186(2) -> 134(2)
nah kalo yg ini format percobaan yg kedua, 186 karater dalam 1 lembar sms dikompresi menjadi 134 karakter (2 halaman sms)….
gitu mas….
Saya bingung dari mana perhitungan bahwa dalam hasil kompresi 133 karakter itu satu halaman,,,
Tolong dijelaskan mas logikanya???
Makasih sebelumnya.. udah mau jawab..:)
Salam…
klo utk menghitung jumlah halaman memang ada perhitungannya apalagi kalo pake format binary aq lupa datanya klo gak salah per-halaman dikurangi 7 ato 8 byte. Cari aja di google kyaknya ada deh ato gak dari artikelku itu daftar pustakanya di cek aja barangkali link’nya masih ada.
Thx mas…ak coba dulu..ak instansiasinya pake new…mungkin gara2itu ya..
oohhh…. bikin sendiri ya mas…
ok2 … makasih infonya mas admin…
sorry mas mau tanya lagi.. sorry2 banyak tanya nih.. heheh 🙂
apa bedanya sih mas antara huffman biasa dengan huffman canonic????
apakah perbedaannya kalo huffman biasa itu pake pohon,,, sedangkan huffman canonic itu gak pake pohon>??
Trus… apakah mas memiliki referensi jurnal dari IEEE mengenai huffman canonic tersebut atau dari website biasa mas???
dan yang terakhir nih mas admin….
Apa sih prinsip dasar,,, agar saya juga bisa bikin sendiri static huffman canonic seperti yang mas lakukan…
apakah mas hanya bikinnya sesuai keinginan sendiri atau ada syarat2 tertentu biar bisa bikin tuh koding… soalnya kalo setau saya mas… kode huffman itu gak boleh berasal dari prefiks kode huffman lainnya….
makasih ya mas udah mau jawab…
Maaf juga udah banyak tanya dan merepotkan…
Salam kenal mas Herpur…
seingatku mirip2 cuman beda dalam hal pencarian aja. Bisa pake pohon bisa juga fix , klo aplikasi yg kubuat bentuknya fix jadi tabel datanya di kode’kan dimana yg sering muncul dikodekan dgn jumlah bit yg lebih kecil. Saya dulu saat menyusun tabel huffman’nya bbrp kali bongkar pasang…
assalamualaikum mas admin….
saya udah baca artikel mas tentang kompresi sms dengan huffman kanonik…..
keren banget hasilnya….
yang ingin saya tanyakan mas…
mas admin dimana ya bisa ketemu tuh tabel jadinya…
Soalnya aku cari2 di internet sampe pusing gak ketemu2 table yg udah fixed kayak gitu…
yang ada malah kanoniknya pake tree semua…
sedangkan yg artikel punya mas admin… gak ada pembuatan pohonnya…
mohon bantuannya mas referesi.. atau link.. juga boleh mas admin tentang fixed table huffman canonical tersebut…
Makasih sebelumnya atas artikel yg bermanfaat bgt buat aq…
aku itu susun sendiri tabelnya berdasarkan percobaan juga dan memang tabelnya gak aku publish di internet. Kalau mau pake tabel yang udh aku buat coba aja cari di perpustakaan MIPA ugm disitu aku tulis lengkap tabel juga hasil percobaannya.
mas…aku mau nanya ak lagi bikin aplikasi kompresi sms.. sama kaya mas bikin tapi cuma menggunakan metode LZW…tapi setelah coding…pas aku jalankan kok ada kesalahan pas pengompresian..pesan errornya “Uncaught exception java/lang/NullPointerException”…saya sendiri curiga klo kesalahannya pas pengiriman text yg mw dikompresi ke method yg fungsinya buat encoding text ini…karena disitu ada konversi dari string ke byte ..kayaknya method buat enkode ini ga mau nerima string (klo menurutku)..nah klo mas sndiri apa ngalamin hal yg sama..trs biar ga error gimana mas..apa ada settingan khusus..ato tambahan kode yg laen..THX mas..
aku gak ngalamin seperti itu sih tapi ngalaminnya dulu karakter yang mucul saat di decode aneh2 krn ternyata dia gak pernah masuk ke method untuk decompresi gara2 ada kondisi yg salah. Klo melihat error itu mungkin array of byte-nya blm di instantiate pake perintah
newsalam kenal mas mas aku pake algo Lzw untuk buat kompresi sms tapi setelah baca artikel mengenai huffman kanonik aku jadi bimbang kerena hasilnya sudah ketahuan bahwa lzw masih kalah unggul dibandingkan huffman k.kira2 selain untuk data yang berulang kelebihan lzw yang tidak kalah dari huffman apaya mas beritahu aku dong kirim ke mailkux…thank u
salam kenal juga. waduh aku udh lupa itu soalnya udh lama tapi berdasarkan pengalamanku sih LZW emg bagus utk data berulang. klo emg mau pake LZW coba aj buat ngompres gambar atau file multimedia lainnya.
ada,,link nya ada di nama saya ini,, ^^..blognya masih sederhana,,hhee,,
Okz,,insyaAllah saya akan brusaha,,
Makasih mas bantuannya,,hhe kalau bisa sih g pake ngulang kuliahnya,, 🙂
sama”, mudah2an bisa membantu. Ntar klo udh selesai kasih kabar ya. Btw, punya blog gak biar kita bisa saling tukeran link.
Maaf mas, mampir lagi :),,saya udah bikin tabel kode huffmannya,,kalau pake cara mas ada 4 tabel, karakter, kode huffman, panjang bit, dan banyak bit(angka).
Pertanyaannya, gimana masukkin keempat tabel itu dalam array?sya masih bingung u/program kompresi di javanya, saya udah cari2 tp belum ktemu jga,, wkt TA sya tinggal 1 bulan lebh dikit..
Mohon bantuannya, trims baxk,
Step pertama buat dulu kelas yang akan dibuat array’nya. Klo di C semacam struct tetapi karena di java gak ada struct jadi dibuat kelas, misal:
public class StructData{public String nama;
public int panjang;
}
Step kedua buat array dari kelas tsb dgn syntax:
StructData dataku[] = new StructData[100];untuk mengaksesnya bisa dilakukan dengan cara berikut
dataku[0].nama.Tetap semangat, jangan menyerah klo emg gak bisa tahun ini nambah 1 semester lagi juga gpp yg penting usaha n dinikmati aja. Saya dulu juga buatnya satu tahun karena ada perubahan metode. Yang penting nikmati aja toh sebanding usaha yang kita lakukan sama kepuasan yang di dapat.
Bisakah dalam sebuah aplikasi saat pengiriman pesan menggunakan binary message dan teks message
setau saya klo pas ngirim cuma bisa satu klo gak binary ya teks tapi mungkin klo mau bisa di ksih fasilitas untuk memilih apakah mau pake binary ato teks sebelum ngirim pesan. tapi itu perkiraan saya krn saya udh agak lupa udh lama gak main di mobile 😀
iya,makasih mas, mau saya coba dulu untuk kompresi dan dekompresnya di java, tapi kalau ada yang bingung saya tanya-tanya lagi gpp y?maaf sudah ganggu.
ok, senang bisa membantu.
Saya ni awam bgt ttg JAVA, ni sya sdg dlm proses ngerjain TA, judulx kompresi SMS berbasisi JAVA v pake algoritma huffman, kalo algonya udh pernah belajar, v yang bingung implementasi dlm bahasa JAVA j2ME nya gmn?yg saya dpt cuma aplikasi kirim dn terima SMS aja..gmn caranya supaya teks yang kita ketik mengacu ke tabel huffman itu(codingnya), trus di decoding lagi,,saya bingung mas,,mohon bantuannya,, kalau boleh saya mw liag
Kalau tabel huffman’nya sudah disusun lalu tampung data tsb ke dalam sebuah array nah array ini di inisialisasi saat aplikasi pertama kali dijalankan.
Klo saya dulu sblm ke J2ME saya bikin program utk kompresi dan dekompres’nya di java biasa dahulu (sekalian biar lebih ngerti tentang java’nya). Ntar klo proses kompresi dan dekompres’nya di java sudah yakin benar baru dipindahkan ke J2ME’nya…….
Mas, tolong kasih referensi tabel static Huffman yg udah jadi dunkz….????
Soalnya lagi butuh bgt nie tabel static-nya…
Klo bisa referensi yg slain kejut.com yaw….
Thanks….
kalau mau lihat contoh tabel huffman punyaku coba aja cek di perpustakaan mipa ugm di kampus mipa selatan. aku udh lupa soalnya udh lama gak buka-buka
Tabel huffmannya sih ku bwt statis. Alasannya kyaknya ad di paper yg kusertain(gak deng, blm jadi paper orang g ad lg konfirmasi dr dosen pembimbingku :D). Referensi sprt apa? apakah algonya ato tabel jadinya?
mas kompressi huffmanya pake adaptive atau static…??ada buat referensi tabel huffman gak..thx
Bantuannya seperti apa? Saya sendiri blm ngerti ttg algoritma enkripsi. Tapi kyaknya prinsip dasarnya hampir sama antara kompresi SMS dgn enkripsi SMS. Btw, udh paham ttg algo enkripsinya blm?
mas bisa bantu enkripsi tentang sms ga??
sebenernya gampang aja sich, krn algo’nya byk tersedia di inet. Klo baca pdf yg udh kubikin mestinya bisa, coba aja dulu ntar klo ada kesulitan tanyain aja. Sementara sourcenya blm bisa ku kasih ntar aja kukasih aplikasinya buat nyoba tapi ini lagi males nyusun kata2nya. Tunggu aja ya……
wah asik tuh bole minta source code nya gak??
mau belajar cara mengkompres niee…
di kuliah kan cuma dikasi teorinya doank