Pencarian jalur terpendek dalam graf multi-constrained dengan Self Adapting Multiple Constraints Routing Algorithm (SAMCRA) - USD Repository
PENCARIAN JALUR TERPENDEK DALAM GRAF MULTI-
CONSTRAINED DENGAN SELF ADAPTING MULTIPLE
CONSTRAINTS ROUTING ALGORITHM (SAMCRA)
Disusun oleh :
CICILIA SARASWATI
NIM : 055314119
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
PENCARIAN JALUR TERPENDEK DALAM GRAF MULTI-
CONSTRAINED DENGAN SELF ADAPTING MULTIPLE
CONSTRAINTS ROUTING ALGORITHM (SAMCRA)
Tugas Akhir
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Disusun Oleh :
CICILIA SARASWATI
NIM : 055314119
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
SHORTEST PATH FINDING IN MULTI-CONSTRAINED
GRAPH USING SELF ADAPTING MULTIPLE
CONSTRAINTS ROUTING ALGORITHM (SAMCRA)
Final Project
Submitted as Partial Fulfillment Of the Requirement
For the Undergreduate Degree of Sarjana Teknik
In Informatics Engineering Department
Arranged by :
CICILIA SARASWATI
Student number : 055314119
INFORMATICS ENGINEERING STUDY PROGRAM
INFORMATICS ENGINEERING DEPARTMENT
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
HALAMAN PERSEMBAHAN
Karya ini kupersembahkan kepada
Allah Bapa di Surga
(Kaulah penuntun hidupku, Kaulah kasih yang tak pernah berkesudahan)
Mama, Bapak, mbak Desi dan adikku Frans
(Kalian adalah sumber motivasiku, anugerah terindah yang Bapa berikan untukku)
Teman-temanku
(Kalian memberikan warna indah dalam hidupku)
HALAMAN MOTTO
Perjalanan satu mill harus dimulai dengan satu langkah
(Lao-Tzu)
Tidak ada yang tidak mungkin di dunia ini bagi hati yang bersedia
(Abraham Lincoln)
Dalam iman tidak ada tempat berputus asa,
karena Tuhan selalu ikut serta
INTISARI
Algoritma SAMCRA merupakan algoritma yang digunakan untuk memecahkan permasalahan optimasi jalur terpendek pada graf multi-constrained.
Masalah optimasi multi-constraints adalah untuk menemukan jalur terpendek dari
vertex sumber A ke vertex tujuan B, yang meminimalkan nilai bobot vektor,
dalam penelitian ini komponen bobot vektornya adalah jarak dan kemacetan.Untuk mendapatkan nilai minimal bobot jarak dan kemacetan, maka diperlukan panjang maksimal jalur untuk dapat membandingkan jalur ketika sebuah graf memiliki bobot lebih dari satu pada setiap linknya. Panjang maksimal merupakan nilai minimal dari perbandingan nilai maksimal penjumlahan setiap bobot dari satu simpul ke simpul lain dibagi dengan batas atas nilai setiap bobot.
Sistem ini dibangun untuk satu sisi saja, yaitu sisi pengguna. Pengguna dapat membuat graf yang sesuai dengan kebutuhan, yaitu dengan cara menambahkan, mengubah, dan menghapus data vertex, kemudian pengguna dapat membuat relasi antar vertex dengan cara menambah, mengubah, dan menghapus data edge. Setelah graf terbentuk maka pengguna dapat melakukan pencarian jalur terpendek pada graf, pencarian dilakukan dengan cara memasukkan vertex sumber dan vertex tujuan, hasil pencarian jalur terpendek berupa jalur yang dilalui, jarak jalur, dan kemacetan pada jalur.
Sistem ini telah berhasil dibangun dengan menggunakan bahasa pemrograman Java. Perangkat lunak ini diharapkan dapat mempermudah
ABSTRACT
SAMCRA algorithm is an algorithm used to solve optimization problems in graph the shortest path multi-constrained. Multi-constraints optimization problem is to find the shortest path from source vertex A to vertex B destination, which minimizes the value of the weight vector, in this research component of weight vector is the distance and congestion. To get the minimum value weighted distance and congestion, the maximum length needed to compare track to track when a graph has a weight of more than one on each link. The maximum length is the minimum value of the ratio of the maximum value the sum of each weight from one node to another node divided by the upper limit value of each weight.
The system is built to one side only, namely the user. Users can make graph in accordance with needs, that is by adding, modifying, and deleting data vertex, then the user can make the relation between the vertices by adding, modifying, and deleting the data edges. After a graph is formed then the user can search the shortest path in a graph, the search is done by inserting a source vertex and destination vertex, the shortest path search results of the path, the distance lanes, and congestion on the path.
This system has been successfully built using the Java programming language. The software is expected to facilitate the search for the shortest path in a graph multi-constraints.
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Cicilia Saraswati NIM : 055314119 Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
PENCARIAN JALUR TERPENDEK DALAM GRAF MULTI-
CONSTRAINED DENGAN SELF ADAPTING MULTIPLE
CONSTRAINTS ROUTING ALGORITHM (SAMCRA)
Beserta Perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di Internet untuk kepentingan akademis tanpa perlu meminta ijin dari saya selama mencatumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya. Dibuat di Yogyakarta Pada tanggal : Oktober 2010 Yang menyatakan,
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, Oktober 2010 Penulis
Cicilia Saraswati
KATA PENGANTAR
Puji dan syukur kepada Tuhan yang Maha Esa atas rahmat dan penyertaan Nya sehingga penulis dapat menyelesaikan Tugas Akhi r dengan judul “Pencarian Jalur Terpendek dalam Graf Multi-constrainted dengan Self Adapting Multiple
Constraints Routing Algorithm (SAMCRA)
”. Tugas Akhir ini disusun guna memenuhi salah satu syarat untuk memperoleh gelar sarjana Teknik di Jurusan Teknik Informatika, Universitas Sanata Dharma.
Penyusunan Tugas Akhir ini tidak terlepas dari doa, bantuan, bimbingan, serta dukungan dari berbagai pihak yang sangat bermanfaat bagi penulis. Dalam kesempatan ini, penulis mengucapkan terima kasih yang tak terhingga kepada :
1. Bapak Bambang Soelistijanto, S.T., M.Sc. selaku dosen pembimbing atas segala kesabaran, bimbingan, dan bantuannya dalam membimbing penulis dalam menyelesaikan Tugas Akhir ini.
2. Bapak Eko Hari Parmadi, S.Si., M.Kom. dan Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku dosen penguji atas saran dan masukan demi kesempurnaan Tugas Akhir ini.
3. Para dosen Universitas Sanata Dharma yang telah membantu dan memberi bekal pengetahuan kepada penulis.
4. Para karyawan dan staff Fakultas Sains dan Teknologi, khususnya Jurusan Teknik Informatika, atas segala bantuan yang diberikan kepada penulis.
5. Mama, Bapak, Kakak, dan adikku tercinta atas bantuan, doa, dan dukungan
6. Gabrelia Bonino, Ni Putu Feronika, Putri Ratnawati, Yuvenalis Andarwati, Agnes Putri, Floriska Nuhan, dan Maria Yesse atas dukungan, doa, bantuan yang sangat bermanfaat, atas kesediaan untuk mendengarkan keluh kesah, serta menjadi tempat penghiburan bagi penulis.
7. Lusia Yuliani, Margaretha Rosita, Marsela Lotjita, dan Yuliana Rosi atas kesediaan mendengarkan keluh kesah, memberikan dukungan, terima kasih untuk menjadi tempat menghilangkan penat.
8. Semua pihak yang telah membantu penulis dalam menyelesaikan studi dan Tugas Akhir, yang tidak dapat disebutkan satu persatu.
Semoga segala kebaikan yang telah penulis terima menjadi berkat dan bekal yang sangat berguna di kehidupan penulis nantinya. Penulis menyadari bahwa penulisan Tugas Akhir ini masih jauh dari kesempurnaan, oleh sebab itu penulis mengharapkan kritik dan saran dari pembaca yang bersifat membangun.
Atas kritik dan saran yang diberikan, penulis mengucapkan terima kasih.
Yogyakarta, Oktober 2010 Penulis,
Cicilia Saraswati
Daftar Isi
HALAMAN PERSETUJUAN ............................................................................... iii HALAMAN PENGESAHAN ................................................................................ iv
Daftar Gambar
Gambar 2.1 Graf .................................................................................................... 6Gambar 2.2 Graf multi-constraints ........................................................................ 8Gambar 2.3 Representasi graf tidak berarah ke dalam matriks ........................... 10Gambar 2.4 Dominated paths : skenario (a) dan (b) ........................................... 13Gambar 2.5 Meta-Code Fase Inisialisasi ............................................................. 15Gambar 2.6 Meta-Code Feasibility ..................................................................... 16Gambar 2.7 Meta-Code Update Antrian.............................................................. 17Gambar 2.8 Meta-Code SAMCRA ..................................................................... 18Gambar 2.9 Graf yang setiap linknya memiliki dua komponen bobot vektor. ... 20Gambar 2.10 Jaringan pada fase inisialiasi ......................................................... 21Gambar 2.11 Langkah 1 dan 2 dalam operasi SAMCRA ................................... 22Gambar 2.12 Langkah 3 dan 4 dalam operasi SAMCRA ................................... 23Gambar 2.13 Langkah 5 dan 6 dalam operasi SAMCRA ................................... 24Gambar 2.14 Langkah 7 dan 8 dalam operasi SAMCRA ................................... 25Gambar 3.1 Graf multi-constraints ...................................................................... 27Gambar 3.2 Use Case Diagram ........................................................................... 29Gambar 3.3 Diagram konteks .............................................................................. 30Gambar 3.4 Diagram berjenjang sistem pencarian jalur terpendek..................... 31Gambar 3.5 Diagram Alir Data level 0................................................................ 32Gambar 3.6 Diagram Alir Data level 1................................................................ 33Gambar 3.7 Algoritma Dijkstra ........................................................................... 34Gambar 3.8 Algoritma SAMCRA ....................................................................... 36Gambar 3.11 Rancangan Antarmuka Utama Sistem ........................................... 40Gambar 3.12 Rancangan Antarmuka Form Setup Vertex ................................... 41Gambar 3.14 Rancangan Antarmuka Form Edit Vertex ..................................... 42Gambar 3.15 Rancangan Antarmuka Form Delete Vertex .................................. 43Gambar 3.16 Rancangan Antarmuka Form Setup Edge ...................................... 43Gambar 3.17 Rancangan Antarmuka Form Add Edge ........................................ 44Gambar 3.18 Rancangan Antarmuka Form Edit Edge ........................................ 45Gambar 3.19 Rancangan Antarmuka Form Delete Edge .................................... 45Gambar 3.20 Rancangan Antarmuka Form Operasi ........................................... 46Gambar 3.21 Rancangan Antarmuka Keluaran Form Setup Vertex ................... 46Gambar 3.22 Rancangan Antarmuka Hasil Keluaran dari Setup Edge ............... 47Gambar 3.23 Rancangan Antarmuka Keluaran Hasil Pencarian ......................... 47Gambar 3.24 Rancangan Antarmuka Form about software ................................ 48Gambar 4.1 Implementasi Pembuatan Database ................................................ 50Gambar 4.2 Implementasi Tabel vertex .............................................................. 50Gambar 4.3 Implementasi Tabel edge ................................................................. 51Gambar 4.4 Implementasi Halaman Utama Sistem ............................................ 57Gambar 4.8 Konfirmasi Pengubahan Data Vertex .............................................. 62Gambar 4.9 Pesan jika data vertex berhasil diubah ............................................. 62Gambar 4.10 Implementasi Delete vertex ........................................................... 65Gambar 4.11 konfirmasi penghapusan data vertex ............................................. 65Gambar 4.12 Pesan jika data berhasil dihapus .................................................... 66Gambar 4.12 Implementasi Antarmuka Add edge .............................................. 68Gambar 4.13 Pesan jika data edge berhasil ditambahkan ................................... 69Gambar 4.14 Implementasi Antarmuka Edit edge .............................................. 71Gambar 4.15 Konfirmasi Pengubahan Data edge ............................................... 72Gambar 4.16 Pesan jika data edge berhasil diubah ............................................. 72Gambar 4.17 Implementasi Antarmuka Delete edge ........................................... 75Gambar 4.18 Konfirmasi Penghapusan Data edge .............................................. 76Gambar 4.19 Pesan jika data edge berhasil dihapus ............................................ 76Gambar 4.17 Implementasi Antarmuka operation SAMCRA............................. 79Gambar 4.18 Implementasi Antarmuka about software ...................................... 85Gambar 5.1 Graf 1 ............................................................................................... 86Gambar 5.2 Graf 2 ............................................................................................... 87Gambar 5.3 Uji algoritma menggunakan aplikasi ke-1 ....................................... 89Gambar 5.4 Uji algoritma menggunakan aplikasi ke-2 ....................................... 90
Daftar Tabel
Tabel 2.1 Tabel Aktivitas Operasi SAMCRA ...................................................... 26Tabel 3.1 Struktur tabel vertex ............................................................................. 38Tabel 3.2 Struktur tabel edge ............................................................................... 38Tabel 3.2 Struktur tabel undirect .......................................................................... 39Tabel 5.1 Tabel Aktivitas Operasi SAMCRA gambar 5.1 ................................... 86Tabel 5.2 Tabel Aktivitas Operasi SAMCRA gambar 5.2 ................................... 88Bab I. Pendahuluan I.1. Latar Belakang Pencarian jalur terpendek dalam graf multi-constraints merupakan
permasalahan yang sering ditemui dalam kehidupan sehari-hari dalam berbagai aspek kehidupan. Tidak seperti pencarian jalur terpendek pada umumnya, yang biasanya dalam penentuan jalur terpendek hanya memperhitungkan satu kendala saja yang biasanya berupa jarak, ada beberapa kasus yang kurang tepat jika pencarian jalur terpendeknya menggunakan satu kendala saja, karena ada kendala lain yang berpengaruh dalam penentuan jalur terpendek dalam kasus tersebut.
Salah satu gambaran permasalahan pencarian jalur terpendek dengan kendala lebih dari satu adalah pengendara bermotor yang menempuh perjalanan dari suatu tempat ke tempat tujuan, tentu pencarian jalur terpendeknya tidak hanya memperhitungkan kendala jarak, tetapi harus memperhitungkan pula kepadatan lalu lintas jalan yang akan dilalui, karena kepadatan lalu lintas setiap jalan berbeda-beda, bisa saja sebuah jalan memiliki jarak yang lebih dekat tetapi lalu lintas pada jalan tersebut lebih padat dibanding jalan lain yang jaraknya lebih jauh.
Pada umumnya pencarian jalur terpendek bertujuan untuk mengurangi biaya dan waktu tempuh dari suatu tempat ke tempat tujuan, semakin cepat waktu yang ditempuh maka semakin sedikit pula biaya yang dikeluarkan.
Berdasarkan permasalahan di atas penulis tertarik untuk membuat perangkat lunak yang dapat memecahkan permasalahan pencarian jalur terpendek dalam graf multi-constraints dengan menggunakan algoritma SAMCRA.
I.2. Rumusan Masalah
Rumusan masalah dari penelitian ini adalah bagaimana mencari jalur terpendek dalam graf multi-constraints dengan menggunakan algoritma SAMCRA?
I.3. Tujuan dan Manfaat Penelitian
Tujuan penelitian adalah membuat perangkat lunak untuk memudahkan pencarian jalur terpendek dalam graf multi-constraints dengan algoritma SAMCRA.
Manfaat dari penelitian ini adalah Memudahkan pencarian jalur terpendek dari satu tempat ke tempat lain yang mempunyai kendala lebih dari satu.
Memahami algoritma SAMCRA dan pengimplementasiannya ke dalam pemrograman komputer.
I.4. Batasan Masalah
Routing Algorithm (SAMCRA).
2. Bahasa pemrograman yang digunakan adalah Java.
3. Basis data yang digunakan adalah MySQL.
4. Graf yang digunakan merupakan graf tidak berarah.
5. Banyaknya kendala yang diperhitungkan adalah 2, yaitu jarak antar vertex atau distance dan tingkat kemacetan atau congestion.
I.5. Metodologi Penelitian
1. Melakukan studi kepustakaan untuk mempelajari algoritma SAMCRA, serta mencari dan mempelajari bahan kajian yang sesuai dengan sistem yang dibuat dari berbagai sumber, dapat berasal dari buku, artikel, dan internet.
2. Mengembangkan sistem menggunakan metode Rekayasa Perangkat Lunak (RPL) secara terstruktur (Whitten, 2004) yaitu :
1. Analisis Sistem Pada tahap ini hal yang dilakukan adalah menganalisis permasalahan yang dihadapi dan kebutuhan dari sistem.
Mencari dan mengumpulkan data-data secara lengkap untuk pembuatan program.
2. Desain Sistem Pada tahap ini hal yang dilakukan adalah merancang sistem
interface .
3. Implementasi Pada tahap ini membuat program sesuai dengan rancangan.
4. Pengujian Pada tahap ini dilakukan pengujian program yang telah dibuat.
I.6. Sistematika Penulisan
Laporan ini secara garis besar dibagi menjadi beberapa bab dengan perincian sebagai berikut :
BAB I PENDAHULUAN Bab ini meliputi latar belakang, batasan masalah, tujuan dan manfaat penelitian, rumusan masalah, metodologi penelitian, serta sistematika penulisan.
BAB II LANDASAN TEORI Bab ini berisi teori-teori yang berhubungan erat dan yang digunakan dalam penelitian. BAB III ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi analisis sistem serta perancangan sistem secara mendetail, yang meliputi perancangan input dan output, perancangan proses, dan juga perancangan interface.
BAB IV IMPLEMENTASI SISTEM
BAB V UJI COBA DAN ANALISIS HASIL Bab ini berisi analisis dari hasil uji coba algoritma SAMCRA dengan menggunakan perhitungan manual dan uji coba algoritma dengan menggunakan sistem.
BAB VI PENUTUP Bab ini berisi mengenai kesimpulan dan saran berdasarkan bab-bab terdahulu.
Bab II. Landasan Teori II.1. Pengenalan Graf Secara informal, graf adalah himpunan dari benda-benda yang disebut simpul (vertex atau node) yang terhubung oleh sisi (edge-edge) atau busur (arc). Biasanya suatu graf digambarkan sebagai kumpulan titik-titik yang
melambangkan vertex dan dihubungkan oleh garis-garis yang melambangkan
edge . Secara formalnya, Suatu graph G dapat dinyatakan sebagai G = < V,E >.
Graph G terdiri atas himpunan V yang berisikan simpul pada graf tersebut dan himpunan dari E yang berisi sisi pada graf tersebut. Himpunan E dinyatakan sebagai pasangan dari simpul yang ada dalam V. Berikut merupakan contoh graf pada gambar 2.1 :
v e
1
4
v4 e
3 e
1 v 2 e
2
v3 Gambar 2.1 Graf
Graf pada gambar 2.1 terdiri dari empat titik yaitu v , v , v , v dan empat garis
1
2
3
4
e
1 =(v 1 ,v 2 ), e 2 =(v 2 ,v 3 ), e 3 =(v 3 ,v 4 ), dan e
4 =(v
1 ,v 4 ).Beberapa istilah berkaitan dengan graf yang akan digunakan dalam laporan Tugas Akhir ini antara lain :
2. Edge atau arc, merupakan garis yang menghubungkan dua vertex.
3. Walk (perjalanan), walk atau perjalanan pada suatu graf G adalah barisan simpul dan ruas secara berganti-ganti. Contoh v
1 , e 1 , v
2 , e
2 , v 3 , e n-1 , v nPerjalanan dengan notasi di atas dapat ditulis dengan menuliskan himpunan ruas saja e
1 , e 2 , e n-1 atau dengan menuliskan himpunan simpul-simpulnya
yaitu v
1 , v 2 , v 3 , v n-1 , v n .
4. Path (jalur). Path atau jalur adalah suatu walk atau perjalanan dimana semua simpul dalam himpunannya adalah berbeda.
II.2. Graf tidak berarah
Graf tidak berarah G didefinisikan secara abstrak sebagai suatu pasangan terurut (V, E), V merupakan vertex dan E merupakan edge, dengan V suatu himpunan dan E himpunan yang unsur-unsurnya berupa multi himpunan dengan dua unsur dari V. Graf tidak berarah dapat direpresentasikan secara geometrik sebagai suatu himpunan titik-titik V dengan suatu himpunan garis-garis E antara titik-titik tersebut, graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex. Graf tidak berarah terdiri dari :
1. Graf Sederhana, graf sederhana merupakan graf yang tidak boleh mempunyai loop dan garis paralel.
2. Graf Lengkap dengan n titik (K n ), graf dengan n titik dan setiap dua titik
II.3. Graf Multi-Constraints
Gambar 2.2 Graf multi-constraintsGambar 2.2 merupakan gambar graf multi-constraints, graf multi- constraints merupakan graf yang mempunyai bobot edge lebih dari satu.Diasumsikan sebuah graf G yang setiap edge u →v dari vertex u ke vertex v ditandai dengan m dimensional edge vektor, m dimensional edge vektor merupakan jumlah bobot pada edge w (u
1 2 (u
→v) = [w (u→v), w →v),....,
w m (u i >0 merupakan ukuran mutu layanan (Quality of
→v)], dimana komponen w
Service (QoS)), pada penelitian ini komponen bobot setiap edge yaitu w >0
1
merupakan jarak dan w
2 >0 merupakan tingkat kemacetan. Algoritma routing QoS
menghitung jalur P yang mempunyai banyak kendala w i (P) i untuk semua ≤ L
i merupakan mutu layanan yang diminta user dan L disebut sebagai
1≤i≤m. L vektor kendala.
Ukuran mutu layanan yang mungkin untuk dua kelas yang berbeda adalah
additive atau tambahan dan ukuran min-max mutu layanan. Untuk additive bobot mutu layanan pada link yang mendefinisikan jalur. Contoh dari ukuran tambahan mutu layanan adalah tingkat kemacetan, biaya, dan lainnya. Untuk ukuran min-max mutu layanan bobot jalur, ukuran mutu layanan adalah minimum (maksimum) dari bobot mutu layanan pada link yang terdapat pada jalur. Mutu Layanan jalur P adalah jalur antara vertex A dan vertex B yang w (P
) ≤ L untuk 1
i A → B i A→B
≤ i ≤ m.
II.4. Jalur Terpendek
Jalur terpendek merupakan bagian dari Pada graf multi-
constraints masalah jalur terpendek adalah bagaimana kita mencari sebuah jalur
pada graf yang meminimalkan panjang maksimal jalur tersebut.II.5. Matriks untuk Graf Berlabel
Di dalam matriks suatu graf tidak berarah, jumlah successor sama dengan jumlah predeccessor. Successor vertex N disimpan dalam baris N dan
predeccessor untuk vertex/node disimpan pada kolom N. Sebagai contoh lihat
gambar 2.3 :Gambar 2.3 Representasi graf tidak berarah ke dalam matriksII.6. Algoritma Dijkstra Algoritma Dijkstra merupakan algoritma yang ditemukan oleh E. W.
Dijkstra dan merupakan algoritma yang akan digunakan untuk mencari jalur terpendek dari titik awal ke titik tujuan. Langkah-langkah algoritma Dijkstra adalah sebagai berikut : Langkah 1 : Tandai titik awal yang telah dipilih dan beri beban 0 dan beban yang sangat besar untuk titik lainnya.
Langkah 2 : Tandai sementara titik yang bisa dicapai secara langsung dari titik awal.
Pilih jalur terpendek diantara titik yang ditandai sementara. Jika ada panjang jalur yang sama pilih salah satunya. Tandai titik yang terpilih. Langkah 3 : Ulangi tahap 2 hingga titik tujuan terpilih.
II.7. SAMCRA ( Self Adapting Multiple Constraints Routing Algorithm)
SAMCRA merupakan algoritma routing yang biasa digunakan untuk memecahkan masalah optimasi multi constraints, SAMCRA didasarkan pada empat konsep, yaitu: (1) definisi non-linear panjang jalur l(P), (2) k-shortest paths , (3) non-dominated paths, (4) look-ahead.
1. Definisi non-Linear Panjang Jalur l(P)
Bobot vektor jalur didefinisikan dalam penjumlahan vektor. Seperti pada aljabar linear, panjang vektor dibutuhkan, dimana bobot vektor didefinisikan dalam penjumlahan vektor. Definisi panjang jalur l(P) dibutuhkan untuk dapat membandingkan jalur ketika komponen bobot pada link memiliki ukuran mutu layanan yang berbeda pada spesifik unit. Berikut merupakan rumus panjang jalur : m
d w P
l(P) = (P) = . ( ) (2.1) i
1
d i w i Keterangan (2.1):w i = bobot ke i
= panjang
l P = jalur
1 d = i
L i
Dalam konsep ini, masalah m-parameter ditransformasikan ke dalam
Dijkstra. Algoritma Dijkstra digunakan untuk mengurangi graf yang akan dikembalikan sebagai jalur terpendek P yang meminimalkan panjang jalur l(P) yang didefinisikan oleh (2.1).
2. k-Shortest Paths Algoritma k-shortest path mirip dengan algoritma Dijkstra.
Penyimpanan pada setiap vertex lanjutan hanya merupakan loncatan dari vertex sebelumnya dan panjang dari jalur terpendek dari sumber ke vertex lanjutan, kita dapat menyimpan jalur terpendek pertama, kedua, ketiga, hingga k jalur terpendek bersama dengan panjang yang sesuai. Ini memungkinkan untuk tidak menyimpan sama sekali k jalur pada sebuah vertex. Pada kasus dimana nilai k tidak terbatas, algoritma
k jalur terpendek mengembalikan semua kemungkinan jalur yang
diminta pada panjang antara sumber dan tujuan. Pada kasus tersebut selalu ada kemungkinan bahwa end-to-end jalur terpendek tidak dapat ditemukan.
SAMCRA memilih „self-adaptively’ yang dibutuhkan nilai dari k n pada setiap vertex n dari graf G, yang kontras dengan algoritma
k jalur terpendek dimana pada setiap vertex n nilai sama dari k
dialokasikan dan oleh karena itu tempat penyimpanan yang sama dalam antrian dari jalur per vertex. Didefinisikan sebagai k =
SAMCRA max ) atau disebut juga sebagai ukuran kompleksitas n n
G (k SAMCRA.
3. Dominated paths
Dominated path pada dasarnya adalah teknik pengurangan tempat secara drastis yang dapat meningkatkan efisiensi proses perhitungan.
”Kekuasaan jalur” dapat dianggap sebagai relaksasi multidimensional. Relaksasi merupakan properti kunci dari satu parameter algoritma jalur terpendek seperti Dijkstra dan Bellman-Ford.
Definisi non-dominated Dibatasi m = 2 dimensi, diasumsikan dua jalur P
1 dan P 2 dari vertex
sumber ke vertex lanjutan, setiap dengan bobot vektor jalur (w (P ),w (P )) = (x y ) dan (w (P ), w (P )) = (x y )), pada
1
1
2 1 1,
1
1
2
2 2 2,
2 gambar 2.4 ditunjukan dua skenario yang mungkin dari dua jalur.
Gambar 2.4 Dominated paths : skenario (a) dan (b)Pada gambar 2.4, dalam skenario (a), P mendominasi P , tapi
1
2
dalam skenario (b) P
1 dan P 2 tidak saling mendominasi satu sama
lain. Pada skenario (a), P
1 lebih pendek daripada P 2 dan w 1 (P 1 ) < w 1 (P 2 ) untuk semua komponen
1≤ i ≤ m. Pada skenario (b) kedua
w 1 (P 1 ) < w 2 (P 2 ) untuk beberapa indikasi i, tapi w j (P 1 ) > w j (P 2 ) untuk setidak-tidaknya satu indeks j.
‟
Sebuah jalur P disebut non-dominated jika tidak ada jalur P untuk
w i (P i (P) untuk semua bobot komponen link i kecuali untuk
‟) ≤ w setidak-tidaknya satu j untuk w (P (P).
j j
‟) < w
4. Look- Ahead
Di samping jalur dominasi, konsep look-ahead dapat dilihat sebagai penambahan mekanisme untuk mengurangi tempat pencarian jalur yang mungkin. Konsep look-ahead membatasi kelompok jalur yang mungkin dengan menggunakan informasi jalur yang tersisa untuk mencapai vertex tujuan. Konsep look ahead mengajukan untuk menghitung jalur terpendek akar pohon pada tujuan untuk setiap vertex
n dalam graf G untuk setiap m link yang terpisah. Prinsip dasar yang
paling penting dari look-ahead adalah untuk menyediakan setiap vertex dengan pasti, batas bawah dari w
1 (P n ) untuk setiap individu i →B;i komponen bobot link.
Meta-Code SAMCRA
INITIALIZE(G, m, A, B) 1 for each v {N}
2 Counter[v]← 0
3 maxlength ← 1.0 4 for i
= 1,….,m
5 DIJKSTRA(G,A,B,i ) → b
i (n), P B i A ; *
6 if l(P B i A ; * ) < maxlength
7 maxlength ← l(P B i A ; * )
8 queue Q ← Ø 9 counter[A] ← counter[A] + 1
10 INSERT(Q, A, counter[A], NIL, l(
) (A b
))
Gambar 2.5 Meta-Code Fase InisialisasiPada fase inisialisasi (gambar 2.5) dibutuhkan algoritma dan perhitungan informasi look-ahead. Pada baris 1 dan 2, angka pada jalur penyimpanan (counter) setiap vertex diset menjadi 0. Maxlength menunjuk panjang maksimum yang mungkin dimiliki sub jalur. Jalur dengan length > maxlength dapat dihapus, maxlength diset menjadi 1,0 pada baris 3. Pada baris 5, batas bawah look-ahead dihitung dengan fungsi DIJKSTRA. Untuk setiap jalur terpendek m, baris 6 menghitung panjang dan mengecek mana yang nilai lengthnya lebih dibanding maxlength. Jika ada nilai panjang yang lebih rendah, pada baris 7, maxlength diupdate dengan nilai baru yang lebih rendah tersebut. SAMCRA dimulai dengan
FEASIBILITY(G, u, i, v, counter, d, w, maxlength) 1 dominated ← 0 2 for j = 1,…..,counter[v]
d [ u [ i ]] w ( u v ) d [ v [ j ]]
3 if(( ) - ≥
OR l( d [ v [ j ]] ) > maxlength) 4 v[j ] ← BLACK
d [ v [ j ]] d [ u [ i ]] w ( u v )
- 5 else if (
≥
6 dominated ← 1 7 return dominated
Gambar 2.6 Meta-Code FeasibilityPada tahap FEASIBILITY (gambar 2.6), dilakukan pengecekan jalur terdominasi satu sama lain atau memaksa nilai maxlength. Sub jalur u[i] menunjuk i jalur yang disimpan pada vertex u. FEASIBILITY selanjutnya jalur i pada vertex u terhadap vertex tetangga v, dimana counter[v] vertex sudah disimpan. Untuk setiap counter[v] sub jalur v[j] disimpan pada vertex v (pada baris 2-3). Jika semua komponen dari vektor yang berbeda tidak negatif, kemudian sub jalur v[j] memaksa nilai maxlength maka tandai dengan warna hitam pada baris 4.
Jalur yang telah ditandai dengan warna hitam menjadi nilai lama dan mungkin dapat ditempatkan kembali dengan jalur yang baru. Baris 5 mengecek jika jalur selanjutnya merupakan dirinya sendiri terdominasi oleh sub jalur v[j]. Jika demikian, maka jalur tersebut diberi label “dominated”.
- ) (v b
8 INSERT(Q, v, counter[v], predicted_length)
Gambar 2.7 Meta-Code Update Antrian Tahap terakhir disebut dengan UPDATEQUEUE atau update antrian.]]] ← u[i]
) 10 [v[counter[v
) ( ]] [ [ v u w i u d
[v[counter[v ]]] ← (
d
9
] ← counter[v] + 1
UPDATEQUEUE(Q, u, i, j, d, w, , counter[v], predicted_length) 1 for j = 1,…….,counter[v] 2 if (v[j] = BLACK AND
]] ← u[i] 6 stop 7 counter[v
5 [ v[j
← ) ( ]] [ [ v u w i u d
]] [ [ j v d
4
3 DECREASE-KEY(Q, v, j, predicted_length)
) > predicted_length
l ( ]] [ [ j v d
UPDATEQUEUE mempunyai tugas untuk mengupdate antrian Q dengan jalur baru, menamai jalur selanjutnya dari u[i] ke vertex v. Baris 1-2 mengecek jika ada jalur hitam dengan predicted_length dibanding jalur baru selanjutnya. Jika ada, jalur baru ini akan ditempatkan pada jalur hitam tersebut pada baris 3-5. Baris 3 mengurangi predicted_length dari sub jalur v[j] dengan predicted yang lebih kecil dari jalur selanjutnya dan mengupdate bobot vektor jalur (pada baris 4) dan predessor list (pada baris 5). Jika antrian telah diupdate melalui DECREASE- KEY pada baris 3-5, UPDATEQUEUE berhenti pada baris 6 dan kembali pada
(baris 7-10). Bukan panjang asli yang disimpan, tapi ini merupakan predicted_length.
Algoritma utama pada gambar 2.8 dimulai dengan mengeksekusi fase inisialisasi (baris 1). Antrian Q tidak kosong, fungsi extract-min pada baris 3 memilih length minimum jalur pada antrian Q dan mengembalikan u[i], jalur i P A disimpan dalam antrian pada vertex u.
→u
SAMCRA(G, m, A, B, L)
1 INITIALIZE(G, m, A, B b ) →
2 while(Q ≠ Ø)
3 EXTRACT- MIN(Q) → u[i] 4 u[i
] ← GREY 5 if( u = B)
6 STOP → return path 7 else 8 for each v Adj [u] \ { [u[i]], A}
9 FEASIBILITY(G, u, i, v, counter, d, w, maxlength) → dominated
[ [ ]] ( )
d u i w u v (v
10 ) predicted_length ← l(
- b )
11 if (predicted_length < maxlength AND dominated ≠ 1 )
12 UPDATEQUEUE(Q, u, i, j, d, w, , counter[v], predicted_length) 13 if(v = B AND predicted_length < maxlength)
14 maxlength ← predicted_length
Gambar 2.8 Meta-Code SAMCRA Dengan angka tersebut dan predesessor list , jalur selanjutnya ditandai dengan warna abu-abu pada baris 4. jika vertex u, berkoresponden ke jalur selanjutnya u[i], jumlah tujuan B, jalur terpendek dikembalikan. Jika u≠ B, pembacaan prosedur dikenali pada baris 8. Baris 8 menjelaskan bagaimana i jalur sampai vertex u diperpanjang terhadap vertex tetangga v, kecuali untuk asal vertex sebelumnya. Vertex sebelumnya pada jalur u[i] disimpan pada predecessor list .
Pengembalian vertex sebelumnya yang dapat menyebabkan loop, harus dapat dihindari. Sejak bobot link non-negatif, jalur yang mempunyai loop selalu didominasi oleh jalur tanpa dominasi. Baris 9 meminta tahap FEASIBILITY untuk mengecek dimana seluruh jalur disimpan pada vertex v yang tidak terdominasi oleh jalur yang disimpan sebelumnya pada vertex v. Pada baris 10, length dari prediksi end-to-end bobot vektor jalur dihitung. Baris 11 mengetes jika jalur baru selanjutnya tidak non-dominated dan predicted_length ≤ maxlength. Jika kasus ini dapat disimpan dan antriannya harus bisa diupdate (baris 12). Hapus jalur yang predicted_lengthnya > maxlength adalah pengurangan tempat pencarian dari konsep look-ahead. Terakhir, maxlength dapat diupdate pada baris 13-14.
II.8. Contoh operasi algoritma SAMCRA
Dicari jalur terpendek dari vertex 1 ke vertex 7 dengan L =(20,20) pada gambar 2.9 !
Gambar 2.9 Graf yang setiap linknya memiliki dua komponen bobot vektor.Sebelum memulai langkah-langkah pencarian jalur terpendek pada graf dalam gambar 2.9, diperlukan fase inisialisasi untuk mendapatkan informasi mengenai batas bawah bobot setiap vektor dan panjang maksimal (maxlength) baru yang sebelumnya adalah 1, keduanya digunakan sebagai acuan pencarian jalur terpendek.
Fase inisialisasi o Menentukan batas bawah bobot vektor setiap vertex. Pada gambar 2.9 dapat kita lihat adanya kotak-kotak di samping vertex, isi kotak tersebut merupakan batas bawah bobot. Batas bawah bobot ini didapatkan dengan cara mencari jalur terpendek dengan bobot minimum dari setiap vertex ke vertex tujuan dengan menggunakan algoritma Dijkstra.
Gambar 2.10 Jaringan pada fase inisialiasio Menentukan panjang maksimal baru untuk menentukan jalur terpendek, jalur terpendek yang uji sesuai dengan m-dimensional edge.
Untuk graf pada gambar 2.10 terdapat 2 komponen bobot, maka jalur
terpendek yang diuji adalah 2 jalur Dijkstra yaitu P dan P
1 7 ;
1
1 7 ;
2
dari vertex 1 ke vertex 7, dimana bobot komponen pertama mempunyai jalur terpendek P = 1→ 2 → 4 → 6 → 7 dengan bobot vektor
- 1
7 ;
1
w (P ) = (6,14) dan panjang l(P ) = max(6/20,14/20) = 0,7,
1 7 ;
1
1 7 ;
1
- untuk bobot komponen kedua, jalur terpendeknya adalah P =
1 7 ;
2
- w (P ) = (16,9) dan
1→ 3 → 5 → 6→ 7 dengan bobot vektor
1 7 ;
2
panjang l(P ) = max(16/20,9/20) = 0,8. Karena nilai l(P )
1 7 ;
1 1 7 ;
1
- lebih rendah dibanding l(P ), maka panjang maksimal adalah dari
1 7 ;
1 semula bernilai 1 menjadi 0,7.
Gambar 2.11 Langkah 1 dan 2 dalam operasi SAMCRAPada langkah 1 seperti pada gambar 2.11, sumber vertex 1 membaca tetangganya yaitu vertex 2 dan 3. Diperkirakan panjang l( w (P
1 )+ b (n)) →n
1
5
5
7
untuk vertex 2 adalah nilai max( , ) = max(0,3, 0,6) = 0,6 dan
20
20
8
5
5
4
diperkirakan panjang untuk vertex 3 adalah max( , ) = max(0,65, 0,45)
20
20
= 0,65. Karena jalur tersebut non-dominan dan kedua panjang yang diperkirakan tidak melebihi panjang maksimal maka keduanya disimpan dalam antrian. Pada langkah 2, perkiraan panjang yang disimpan dalam antrian yaitu pada
vertex 2 dengan panjang 0,6. Prosedur pembacaan vertex-vertex tetangga