BAB 2
LANDASAN TEORI
2.1Graph
Graf adalah struktur data yang terdiri dari atas kumpulan vertex (V) dan edge (E), biasa ditulis sebagai G=(V,E), di mana vertex adalah node pada graf, dan edge adalah rusuk / jaring yang menghubungkan dua node. Jaring terdefenisi melalui pasangan node (v,w), di mana v disebut tail dan w disebut head dari jaring tersebut.
(Dr.Suarga,2012.)
Beberapa istilah yang sering digunakan dalam masalah graf antara lain :
1. Adjacent vertex: adalah dua node berdekatan, terhubung langsung oleh vertex. 2. Path: jalur melalui edge yang menghubungkan suatu vertex ke vertex yang
lain, panjang suatu jalur ditentukan oleh jumlah jaring (edge) yang menghubungkan dua vertex.
3. Complete graph: adalah graf di mana semua vertex terhubung langsung satu dengan yang lain.
4. Weighted graph: graf yang setiap edgenya memiliki bobot/ nilai.
Gambar 2.1 Graph dengan 4 verteks dan 5 edge. Pada gambar 2.1 diatas graph G = (V, E) dimana:
1. V adalah himpunan titik, simpul, verteks atau nodes dari G, yaitu V = {v1, v2, v3, v4}
2. E adalah himpunan rusuk, edges, atau sisi dari G, yaitu E = {e1, e2, e3, e4, e5}
2.1.1 Macam – macam Graph Menurut Arah dan Bobotnya
Menurut arah dan bobotnya, graph dibagi menjadi enam bagian, yaitu :
1. Pada gambar 2.2 menjelaskan Graph berarah (digraph) dan berbobot: setiap edges mempunyai arah (yang ditunjukkan dengan anak panah) dan bobot.
Gambar 2.2 Graph Berarah Dan Berbobot. v3
e4 v2
v
e5 e
3
e1
e2
2. Pada gambar 2.3 menjelaskan Graph tidak berarah dan berbobot: setiap edges tidak mempunyai arah tetapi mempunyai bobot.
Gambar 2.3 Graph Tidak Berarah Dan Berbobot.
3. Pada gambar 2.4 menjelaskan Graph berarah (digraph) dan tidak berbobot: setiap edges mempunyai arah tetapi tidak mempunyai bobot.
4. Pada gambar 2.5 menjelaskan Graph tidak berarah dan tidak berbobot: setiap edges tidak mempunyai arah dan tidak mempunyai bobot
Gambar 2.5 Graph Tidak Berarah Dan Tidak Berbobot
5. Pada gambar 2.6 menjelaskanGraph sederhana : Graph yang tidak memiliki garis paralel ataupun loop. Titik-titik pada Graph sederhana dihubungkan tepat dengan satu garis ke setiap titik yang lain dan tidak ada garis yang titik awal dan akhirnya sama (Adelina, 2014).
Gambar 2.6 Graph Sederhana (Adelina,2014)
6. Pada gambar 2.7 menjelaskanGraph tidak sederhana : Graph yang memiliki loop atau garis paralel. Graph tidak sederhana kemudian terbagi lagi menjadi Graph semu (pseudoGraph) dan multiple Graph (Adelina, 2014).
2.2Lintasan Terpendek (Shortest Path)
Persoalan mencari lintasan terpendek di dalam Graph merupakan salah satu persoalan optimasi.Graph yang digunakan dalam pencarian lintasan terpendek adalah Graph suatu nilai atau bobot. Bobot pada sisi Graph dapat menyatakan jarak antar kota, waktu pengiriman pesan, ongkos pembangunan, dan sebagainya. Asumsi yang
digunakan disini adalah bahwa semua bobot bernilai positif. Kata “terpendek” jangan
selalu diartikan secara fisik sebagai panjang minimum, sebab kata “terpendek” berbeda-beda maknanya tergantung pada tipikal persoalan yang akan diseleseikan.
Namun secara umum “terpendek” berarti meminimisasi bobot pada suatu lintasan di
dalam Graph. (Anik Andriani, 2014)
Ada beberapa macam persoalan lintasan terpendek, antara lain : a. Lintasan terpendek antara dua buah simpul tertentu. b. Lintasan terpendek antara semua pasangan simpul.
c. Lintasan terpendek dari simpul tertentu ke semua simpul yang lain.
d. Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu.
2.3Algoritma
2.3.1 Pengertian Algoritma
Ahli sejarah matematika menemukan kata algoritma berasal dari nama penulis buku Arab terkenal, yaitu Abu Abdullah Muhammad Ibnu Musa Al-Khuwarizmi seorang ahli matematika, astrologi, astronomi, geoGraphi.
Terdapat beberapa defenisi dari algoritma:
1. Algoritma adalah teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun seccara logis dan sitematis.
2. Algoritma adalah suatu proses yang jelas untuk menyelesaikan suatu persoalan degan menggunakan langkah-langkah tertentu dan terbatas jumlahnya.
3. Algoritma adalah susunan langkah yang pasti, yang bila diikuti maka akan mentrasformasikan data input menjadi output yang berupa informasi (Indrawoko Kurniadi,2011).
Suatu Algoritma yang terbaik “Suatu algoritma harus menghasilkan output
yang tepat guna (efektif) dalam waktu yang relative singkat dan penggunaan memori yang relative sedikit (efesien) dengan langkah yang berhingga dan prosedurnya
berakhir baik dalam keadaan diperoleh suatu solusi ataupun tidak ada solusinya”.
Algoritma yang baik harus mampu memberikan hasil yang optimal. Dalam pemilihan algoritma ada beberapa hal yang perlu dipertimbangkan yaitu :
1. Algoritma haruslah benar. Algoritma harus bisa memberikan hasil sesuai dengan yang dikehendaki dari sejumlah masukan yang diberikan
2. Seberapa baik hasil yang dicapai. Artinya algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai sebenarnya.
3. Efisiensi algoritma. Efisiensi algoritma ditinjau dari dua hal yaitu :
a. Efisiensi waktu. Mampu memberikan keluaran atau hasil yang cepat. b. Efisiensi memori. Semakin banyak memori yang dibutuhkan sebuah
Harga perangkat keras saat ini cenderung menurun.Maka efisiensi waktu lebih diutamakan daripada efisiensi memori. Hal-hal yang berhubungan dengan kompleksitas waktu yang digunakan oleh sebuah algoritma adalah :
1. Perancangan. Yang termasuk dalam bagian perancangan adalah :
a. Deskripsi algoritma pada suatu tingkatan yang memiliki arti bahasa semu (pseudo)
b. Pembuktian kebenaran bahwa sebuah algoritma bisa menyelesaikan masalah yang diberikan.
2. Analisis. Memberikan evaluasi kinerja algoritma terhadap permasalahan yang diberikan (Purwanto, 2008)
2.3.2 Algoritma Floyd Warshall
Algoritma Floyd Warshall adalah salah satu varian dari pemrograman dinamis, yaitu suatu metode yang melakukan pemecahan masalah dengan memandang solusi yang akan diperoleh sebagai suatu keputusan yang saling terkait. (Thomas H.
Algoritma ini bekerja dengan menghitung shortest path (i,j,k) untuk semua pasangan (i,j), kemudian hasil tersebut akan digunakan untuk menghitung shortest path (i,j,k) untuk semua pasangan (i,j), dst. Proses ini akan terus berlangsung hingga
k=n dan kita telah menemukan jalur terpedek untuk semua pasangan (i,j) menggunakan simpul-simpul perantara. (Thomas H. Cormen,2003).
satu sumber simpul sampai simpul tujuan melalui beberapa jalur (Baras & Theodorakopoulos, 2010).Algoritma Floyd Warshall dapat digunakan untuk mencari panjang lintasan terpendek antara semua pasangan simpul dalam Graph sederhana yang terhubung tetapi algoritma Floyd Warshall tidak dapat digunakan untuk membuat lintasan terpendek (Rosen, 2011).
Cara kerja dari algoritma Floyd Warshall adalah dengan membandingkan semua lintasan yang mungkin terjadi dalam Graph untuk setiap pasang simpul dan melakukan pengujian dari setiap kombinasi simpul yang diperoleh.Misalkan adalah matriks ketetanggaan awal Graph berarah berbobot. adalah matriks ketetanggaan berbobot terpendek dengan sama dengan path terpendek dari titik ke (Siang, 2009).
Beberapa karakteristik yang dimiliki oleh algoritma Floyd Warshall antara lain:
1. Persoalan dibagi atas beberapa tahap, yang setiap tahapnya hanya akan diambil satu keputusan.
2. Masing-masing tahap terdiri atas sejumlah status yang saling berhubungan dengan status tersebut. Status yang dimaksud disini adalah berbagai kemungkinan masukan yang ada pada tahap tersebut.
3. Ketika masuk ke suatu tahap, hasil keputusan akan ditransformasi.
4. Bobot pada suatu tahap akan meningkat secara teratur seiring bertambahnya jumlah tahapan.
5. Bobot yang ada pada suatu tahap tergantung dari bobot tahapan yang telah berjalan dan bobot pada tahap itu sendiri.
6. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan pada tahap sebelumnya.
7. Terdapat hubungan rekursif yang menyatakan bahwa keputusan terbaik dalam setiap status pada tahap k akan memberikan keputusan terbaik untuk setiap status pada tahap k+1.
Kelebihan dari algoritma Floyd Warshall antara lain (Adams, 2012):
1. Algoritma Floyd Warshall dapat digunakan untuk mencari jarak terpendek (shortest path) dari setiap pasangan node
2. Algoritma Floyd Warshall menggunakan matriks bobot n x n sebagai masukan, dimana n merupakan jumlah node
3. Algoritma Floyd Warshall dapat mentolerir negative edge.
Dari beberapa penelitian tentang perbandingan algoritma Floyd Warshall dengan algoritma Djikstra adalah pada algoritma Dijkstra hanya memikirkan solusi terbaik yang akan diambil pada setiap langkah tanpa memikirkan konsekuensi ke depan. Dan hasil yang diberikan tidak selalu memberikan hasil yang optimal.sedangkan algoritma Floyd warshall memandang solusi yang akan diperoleh sebagai suatu keputusan yang
saling terkait sehingga lebih menjamin keberhasilan penemuan solusi optimum untuk kasus penentuan lintasan terpendek (Sondang, 2011).
2.3.3 Analisis Algoritma Floyd Warshall
Dalam iterasinya untuk mencari lintasan terpendek, algoritma Floyd-Warshall membentuk n matriks sesuai dengan iterasi-k. Algoritma Floyd-Warshall sering dipergunakan untuk menghitung lintasan terpendek karena kesederhanaan algoritmanya. Algoritma ini menghitung bobot terkecil dari semua jalur yang menghubungkan sebuah pasangan titik, dan melakukannya sekaligus untuk semua pasangan titik. Dengan kata lain pada saat perhitungan rute optimum yang akan dilalui terlebih dahulu. Algoritma Floyd-Warshall bekerja berdasarkan formulasi dinamic programming. Setiap langkahnya akan memeriksa lintasan antara vi dan vjapakah bisa
Proses Penentuan Nilai Minimum Algoritma Floyd-Warshalldapat dituliskan sebagai berikut:
1. Pada iterasi ke-1, setiap sel matriks dilakukan pengecekan apakah jarak antar dua titik mula mula lebih besar dari penjumlahan antar jarak titik asal ke titik tujuan (titik tujuan=iterasi ke-1) dengan jarak titik asal (titik asal=iterasi ke-1) ke titik tujuan. Dengan kata lain apakah W[i,j] > W[i,k] + W[k,j].
2. Jika iya maka jarak antar dua titik mula mula diganti dengan penjumlahan antar jarak titik asal ke titik tujuan (titik tujuan=iterasi ke-1) dengan jarak titik asal (titik asal=iterasi ke-1) ke titik tujuan (W[i,k] + W[k,j]).
3. Jika tidak, maka jarak yang digunakan yaitu jarak antar dua titik mula mula (W[i,j]).