Anda di halaman 1dari 9

Nama : Zikri Nanda

Nim : 2137087
Mk : Strategi Algoritma
Prodi : Teknik Informatika

Ringkasan mengenai ;
1. algoritma pohon merintang,
2. Lintasan Terpendek
3. Algoritma Dijkstra
4. Kode Huffman

1. Algoritma pohon merintang,

Aplikasi Algoritma Semut Dalam Menentukan Pohon Merentang Minimum (Minimum


Spanning Tree) Terhadap Lintasan yang Mengarah ke Pusat Perbelanjaan di Kota Palopo

Pohon rentang minimum atau pohon rentang berbobot minimum (Bahasa inggris: minimum
spanning tree, MST) adalah himpunan bagian dari himpunan garis-garis (edge)
suatu graf berbobot tak berarah yang menghubungkan semua titik tanpa membentuk siklus dan
dengan total bobot minimum. Dengan kata lain, ini adalah pohon rentang yang total bobotnya
minimum.
Ada beberapa kasus yang menggunakan pohon rentang minimum. Misalnya, perusahaan telepon
mencoba untuk menghubungkan telepon-telepon rumah dengan kabel sehingga kabel yang dipakai
sependek mungkin. Di beberapa tempat, mungkin dibutuhkan penggalian sehingga biayanya
bertambah. Dengan kata lain, "bobot" garisnya bertambah. Satuan yang biasa dipakai dalam
permasalahan ini adalah biaya (cost). Dalam konteks ini, pohon rentang minimum adalah jalur
yang menggunakan kabel sependek mungkin atau dengan biaya serendah mungkin,

Bagan 1,Bagan 1,Suatu graf datar (planar) dan pohon rentang


minimumnya. Tiap garis dilabeli dengan bobotnya yang kira-kira
sebanding dengan jaraknya dalam gambar tersebut.
Objek yang diteliti adalah lintasan yang mengarah ke 8 pusat perbelanjaan di Kota Palopo, yaitu
City Market Palopo, Toko Baru, Pasar Andi Tadda Palopo, Opsal Plaza, Matahari Swalayan, Pasar
Niaga Palopo, Mega Plaza dan Toko Gudang Rabat Mangga Dua. Tujuan dari analisis ini adalah
untuk menentukan pohon merentang minimum menggunakan metode Algoritma Semut. Adapun
langkah-langkah yang dilakukan Algoritma Semut untuk menyelesaikan masalah pohon
merentang minimum adalah sebagai berikut: 1. Menginisialisasi parameter-parameter yang
digunakan pada algoritma semut diantaranya sebagai berikut (Afrianto dan Jamilah, 2012): a.
Intensitas jejak semut yang menandakan intensitas feromon ( . Banyak tempat (n) termasuk x dan
y (koordinat) atau dij (jarak antar tempat) c. Tetapan siklus semut. penerapan Algoritma Semut
untuk masalah Minimum Spanning Tree (MST) yang terkait tentang optimasi dalam permasalahan
transportasi khususnya lintasan yang mengarah ke Pusat Perbelanjaan di Kota palopo. Dalam kasus
ini terdapat delapan titik awal dan tujuh titik tujuan, sehingga jumlah lintasan yang dilalui
sebanyak 56 lintasan yang juga merupakan pusat perbelanjaan. Berikut merupakan tabel yang
menampilkan data jarak pada pusat perbelanjaan di Kota Palopo yang di peroleh dari Google Maps
diketahui jarak antara City Market Palopo dengan toko baru adalah 0,5km, jarak antara City
Market Palopo dengan Pasar Andi Tadda adalah 1,6km, jarak antara City Market Palopo dengan
Opsal Plaza adalah 1,3km, jarak antara City Market Palopo dengan Toko Matahari 1,7 km dan
seterusnya. Bobot jarak dari satu titik awal menuju satu titik tujuan terkadang akan berbeda apabila
dibalik titik awal jadi titik tujuan dan titik tujuan jadi titik awal. Seperti jarak pada City Market
Palopo ke Toko Matahari dengan bobot 1,7km, sedangkan jarak pada Toko Matahari ke City
Market Palopo memiliki bobot sebesar 2,4km. Hal ini dapat terjadi karena faktor peraturan lalu
lintas yang memungkinkan jalur yang dipilih berbeda. Permasalahan ini akan direpresentasikan ke
dalam suatu graf berbobot, kemudian dicari pohon merentang minimum (Minimum Spanning
Tree) menggunakan Algoritma Semut. Adapun langkah-langkah yang dilakukan Algoritma Semut
untuk menyelesaikan masalah pohon merentang minimum yaitu langkah pertama menginisialisasi
parameter. Beberapa parameter yang digunakan pada algoritma semut diantaranya sebagai berikut:
𝜏𝑖𝑗 = 0,01; 𝑛 = 8; 𝑄 = 0,7; 𝛼 = 0,5; 𝛽 = 0,5; 𝜌 = 0,5; 𝑁𝐶𝑚𝑎𝑥 = 1000 Selain beberapa parameter
tersebut, juga terdapat parameter visibilitas awal (lihat tabel 2). Menghitung parameter visibilitas
awal yang merupakan media informasi kualitas suatu edges menggunakan jarak antar tempat yang
telah diketahui sebelumnya

2. Lintasan Terpendek
Lintasan Terpendek (Shortest Path)
Graf berbobot (weighted graph)
Lintasan terpendek: lintasan yang memiliki total bobot minimum.
Contoh aplikasi:
Menentukan jarak terpendek/waktu tempuh tersingkat/ongkos termurah antara dua buah
kota
Menentukan waktu tersingkat pengiriman pesan (message) antara dua buah terminal pada
jaringan komputer.
Menggunakan Algoritma Dijkstra untuk mencari Lintasan terpendek dan optimalisasi
Kendaraan pengangkut sampah di kota Pontianak

PENCARIAN LINTASAN TERPENDEK Algoritma Dijkstra merupakan metode yang digunakan


untuk mencari lintasan terpendek berdasarkan bobot terendah. Bobot pada graf adalah nilai pada
lintasan yang merupakan jarak antar simpul. Satuan jarak antar simpul atau panjang sisi yaitu
dalam kilometer (km). Simpul awal untuk pencarian lintasan terpendek yaitu simpul , lalu mencari
lintasan ke simpul lainnya dengan bobot terkecil tahap demi tahap sehingga semua simpul dilalui.
Adapun perhitungan bobot selalu dimulai dari simpul awal. Pencarian lintasan terpendek ke setiap
simpul dengan menggunakan Algoritma Dijkstra dimulai dari simpul . Selanjutnya iterasi
Algoritma Dijkstra digunakan untuk mencari satu simpul yang bobotnya terkecil dari simpul .
Simpul-simpul yang sudah dipilih dipisahkan pada tabel 1.sebagai berikut ;

MENENTUKAN JUMLAH KENDARAAN Pada penelitian ini pengangkutan sampah


ditargetkan untuk selesai dalam waktu 5 jam, yaitu dimulai pada pukul 02.00 dan ditargetkan untuk
selesai pada pukul 07.00. Waktu untuk mengangkut sampah di tiap masing-masing TPS berbeda-
beda tergantung dari jarak masing-masing TPS dengan TPA. Volume satu TPS sama dengan
volume satu kendaraan, jadi satu kendaraan akan bolak-balik sebanyak TPS yang yang harus
diangkut. Waktu pemindahan sampah dari TPS ke kendaraan pengangkut sampah diasumsikan
selama satu jam, sedangkan jarak pengangkuta TPS ditentukan berdasarkan lintasan terpendek.
Rincian waktu pengangkutan TPS disetiap simpul dapat dilihat pada Tabel 2 dan rincian
selengkapnya dapat dilihat pada Lampiran 1.
3. Algoritma Dijkstra

Penerapan Algoritma Dijkstra untuk Menentukan Rute Terpendek Pembacaan Water


Meter Induk PDAM Tirta Kerta Raharja Kabupaten Tangerang
Masalah pencarian rute terpendek diatas, bisa diselesaikan salah satunya dengan penerapan
algoritma Dijkstra. Algoritma Dijkstra menggunakan prinsip Greedy, yaitu mencari jalur
terpendek dari satu node(titik/vertek) ke node lainnya yang searah (directed graph) mulai dari node
asal sampai node tujuan. Node-node yang dihitung didapat dari beberapa lokasi strategis yang
dapat dikenal secara umum seperti kantor, persimpangan jalan atau lokasi umum yang mudah
diingat oleh petugas. Data-data pendukung perhitungan algoritma Dijkstra ini menggunakan data
yang berasal dari informasi bagian Pelanggan mengenai nama dan lokasi pelanggan sedangkan
untuk data koordinat lokasi didapat dari GoogleMaps. Pada penelitian ini dihasilkan aplikasi
website untuk mencari rute terpendek ke beberapa lokasi pelanggan, sehingga diharapkan para
petugas pembaca meter dapat dengan mudah dan cepat untuk mencapai lokasi tujuan dengan
mengaksesnya melalui komputer desktop, handphone, smartphone atau iPad
Algoritma Dijkstra ditemukan oleh Edger Wybe Dijkstra yang merupakan salah satu jenis
bentuk algoritma populer dalam pemecahan persoalan yang terkait dengan masalah optimasi dan
bersifat sederhana [1]. Algoritma ini menyelesaikan masalah mencari sebuah lintasan terpendek
dari vertex a ke vertex z dalam graph berbobot, bobot tersebut adalah bilangan positif jadi tidak
dapat dilalui oleh node negatif, namun jika terjadi demikian, maka penyelesaian yang diberikan
adalah infiniti atau jumlah tak terbatas. Algoritma Dijkstra melibatkan pemasangan label pada
vertex. Misalkan L(v) menyatakan label dari vertex v. Pada setiap pembahasan, beberapa vertex
mempunyai label sementara dan yang lain mempunyai label tetap. Misalkan T menyatakan
himpunan vertex yang mempunyai label sementara [2]. Dalam menggambarkan algoritma tersebut
kumpulan vertex yang mempunyai label tetap akan dilingkari. Selanjutnya jika L(v) adalah label
tetap dari vertex v, maka L(v) merupakan label sementara ke tetap. Pada bagian ini L(z) merupakan
panjang kan merupakan lintasan terpendek dari a ke z. P pada algoritma Dijkstra node digunakan,
karena algoritma Dijkstra menggunakan diagram pohon untuk penentuan jalur lintasan n terpendek
dan menggunakan graph yang berarah
Node merupakan lokasi dimana water meter terpasang berupa kantor,bangunan atau lokasi yang
secara umum diketahui oleh pembaca meter seperti pertigaan,perempatan atau fasilitas umum
lainnya,contohnya pada node-node pada gambar 2 dibawah ini :

1.
4. Kode Huffman
kode Huffman sangat berarti dalam pengelolaan data, baik dalam pengiriman maupun
penyimpanannya, sehingga waktu pengiriman dapat dipersingkat dan ruang penyimpanan
dapat diperkecil. Kode Huffman memanfaatkan kekerapan kemunculan simbol yang akan
dimampatkan sehingga simbolsimbol yang seirng muncul dapat direpresentasikan dalam
kode-kode yang lebih pendek. Untuk menghindari keambiguan dalam proses decoding,
digunakan kode awalan, di mana kode yang satu bukan merupakan awalan dari kode yang
lain. Istilah kode Huffman sendiri diambil dari nama penemunya: David A. Huffman. Pada
tahun 1951, Huffman dan teman-temannya di kelas Teori Informasi MIT diberi pilihan untuk
membuat term paper mengenai kode biner yang paling efisien atau mengikuti ujian akhir.
Hampir menyerah, Huffman akhirnya mendapatkan ide mnggunakan pohon biner yang
diurutkan berdasarkan kekerapan. Ia pun berhasil merealisasikan idenya dan bahkan
melampaui ide profesornya yang mirip, di mana tidak seperti kode profesornya yang kurang
optimal Huffman membangun pohon binernya dari bawah ke atas.

Ada beragam jenis kode yang telah digunakan dalam menyatakan huruf atau pesan, yang
paling sering digunakan adalah kode Morse, ASCII, dan UNICODE. Pada tahun 1844,
Samuel B. Morse mengirimkan pesan berikut melalui telegraf ciptaannya di antara
Washington, DC dan Baltimore, Maryland: “WHAT HATH GOD WROUGHT”. Pesan ini
terdiri dari 21 karakter termasuk spasi. Menggunakan karakter ASCII dalam bentuk integer
biner untuk menulis pesan ini membutuhkan 8 bit untuk masing-masing karakternya, sehingga
total memerlukan 168 bit. Perbandingan kode Morse dan ASCII dalam merepresentasikan
karakter-karakter yang terdapat dalam pesan di atas bisa dilihat pada Tabel 1 di bawah ini:
ASCII adalah contoh dari fixed-length encoding scheme di mana panjang setiap karakternya
adalah sama, yaitu 8 bit. Sedangkan kode Morse adalah contoh dari variable-length encoding
scheme dengan panjang representasi karakter yang berbeda-beda. Morse menyadari bahwa
kekerapan kemunculan huruf “E” dan “T” dalam teks bahasa Inggris lebih besar daripada huruf
“Q” dan “Z” sehingga ia memberikan kode huruf “E” sebuah titik (“.”) dan huruf “T” sebuah garis
(“-“), sedangkan huruf “Q” dan “Z” diberikan kode yang lebih panjang, yaitu “--.-“ dan “--..”,
begitu pula dengan huruf hidup “A” dan “I”, misalnya, yang diwakili oleh kode yang relatif
pendek, yaitu “.-“ dan “..”. Kode Morse ini kemudian dimodifikasi dengan penambahan angka dan
tanda baca, seperti juga ASCII yang dikembangkan menjadi UNICODE. Kita bisa menganggap
setiap titik dan garis dalam kode Morse ekuivalen dengan sebuah bit. Karena dalam kode Morse
tidak ada representasi karakter “spasi” maka kita asumsikan kode Morse memerlukan sebuah kode
dengan panjang 5 bit, sehingga pesan di atas dalam kode Morse hanya memerlukan 62 bit. Perlu
diingat bahwa untuk ke-26 huruf alfabet, panjang kode Morse yang digunakan adalah maksimal 4
bit. Padahal logikanya dalam sebuah representasi dengan panjang yang tetap diperlukan paling
tidak 5 bit untuk setiap hurufnya karena panjang 4 bit hanya dapat menghasilkan palaing banyak
16 karakter berbeda. Tidak bisa dipungkiri bahwa dengan menggunakan kode Morse daripada
kode ASCII kita dapat menghemat 106 bit atau sekitar 63%. Namun demikian, nyatanya
penggunaan kode Morse menimbulkan masalah dalam proses decoding-nya, apa yang disebut the
prefix problem. Kelemahan kode variable-length adalah sulit untuk dimanipulasi dalam memori
komputer, yang dibuat untuk bekerja dengan objek-objek berukuran pasti. Dengan panjang yang
tidak pasti, kode Morse juga juga tidak memiliki properti prefiks, dalam arti kode yang satu bukan
merupakan awalan pada kode yang lain. Masalah ini dapat ditunjukkan dalam contoh berikut.
Untuk mulai membuat kode Huffman untuk pesan “WHAT HATH GOD WROUGHT”, terlebih
dahulu kita urutkan semua karakter yang ada, termasuk spasi, berdasarkan kekerapan
kemunculannya seperti terlihat pada Tabel 2 di bawah ini.
Langkah-langkah selanjutnya dapat dideskripsikan sebagai berikut:
1. Jika daftar hanya terdiri dari satu karakter maka selesai
2. Jika tidak maka buatlah sebuah subpohon baru dengan menghilangkan dari daftar dan
menggabungkan dua subpohon dengan kekerapan terkecil, dan kekerapan subpohon yang baru
adalah jumlah dari kekerapan kedua subpohon yang membentuknya.
3. Tambahkan subpohon yang baru ke dalam daftar dengan tetap memperhatikan urutan
kekerapannya.
4. Kembali ke langkah no. 1
Ada beberapa hal yang perlu diperhatikan dalam membuat program untuk menulis dan membaca
kode dengan skema Huffman. Pertama, struktur data yang digunakan adalah sebagai berikut:
ATreeNode Character (1 byte) Frequency (long integer) Parent (tree node pointer) LeftChild (tree
node pointer) RightChild (tree node pointer) Penunjuk Parent dapat digunakan untuk bergerak ke
atas dari simpul daun sampai ke akar. Kedua, jumlah bit yang dipakai tidak selalu keliapatan 8,
sehingga byte yang terakhir bisa saja berisi beberapa bit kosong yang dapat membingungkan
pembaca kode. Masalah ini dapat diatasi dengan memberikan sebuah long integer pada awal file
yang memberikan informasi berapa banyak karakter yang terdapat di dalam file aslinya. Ketiga,
untuk semakin membantu proses pembacaan kode, kita dapat memasukkan pohon Huffman
sebagai informasi tambahan pada awal file sehingga dalam pembacaan kita hanya perlu membaca
pohon Huffman tersebut sampai ke daun dan memperoleh karakter yang diinginkan, terus
demikian sampai kita tahu semua karakter telah dibaca berdasarkan long integer yang diperoleh
pada awal pembacaan. Sebagai gambaran, berikut ini adalah potongan program dalam bahasa
Pascal yang berisi prosedur penulisan kode Huffman dengan simpul akar sebagai parameter input
dan fungsi pembacaan kode yang akan mengembalikan pointer ke simpul akar:

Anda mungkin juga menyukai