BAB II LANDASAN TEORI Adapun landasan teori yang dibutuhkan dalam pembahasan tugas akhir ini di antaranya adalah definisi graf, lintasan terpendek, lintasan terpendek fuzzy, metode rangking fuzzy, algoritma Dijkstra dan algoritma Floyd. 2.1 Graf Definisi 2.1 (Munir, 2001) Graf ( , ), di tulis dengan notasi didefinisikan sebagai pasangan himpunan = ( , ), dimana dari titik-titik (vertex) dan adalah himpunan tidak kosong adalah himpunan sisi (edge) yang menghubungkan dua buah titik. Gambar 2.1 merupakan contoh graf sederhan. Gambar 2.1 Graf Sederhana Dengan : V = { , 2.2. , , }, E = {( , ), ( , ), ( , ), ( , )} Macam-Macam Graf Berdasarkan orientasi arah pada sisi, maka secara umum graf dibedakan atas dua jenis: 2.2.1 Graf Tidak Berarah (undirected graph) Graf yang sisinya tidak mempunyai orientasi arah di sebut graf tak berarah. Gambar 2.2 merupakan contoh graf tidak berarah. II-1 B C A D Gambar 2.2 Graf Tak Berarah 2.2.2 Graf Berarah Graf yang setiap sisinya diberikan orientasi arah disebut graf berarah. Gambar 3 merupakan contoh graf berarah. Gambar 2. 3 Graf Berarah 2.3 Graf Berbobot Definisi 2.2 (Munir, 2005) Graf berbobot adalah graf yang setiap sisinya diberi sebuah harga (bobot). Bobot pada tiap sisi dapat berbeda-beda tergantung pada masalah yang dimodelkan dengan graf. Bobot dapat menyatakan jarak antara dua buah kota, biaya perjalanan antara dua buah kota, waktu tempuh pesan (message) dari sebuah titik komunikasi ke titik komunikasi lain (dalam jaringan komputer), ongkos produksi, dan sebagainya. Gambar 2.4 merupakan contoh graf berbobot. II-2 Gambar 2.4 Graf Berbobot 2.4 Lintasan Terpendek Persoalan mencari lintasan terpendek di dalam graf merupakan salah satu persoalan optimasi. Graf yang digunakan dalam mencari lintasan terpendek adalah graf berbobot yaitu graf yang setiap sisinya diberikan nilai atau bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu, dan sebagainya. Lintasan terpendek dengan titik awal s dan titik tujuan t didefinisikan sebagai lintasan terpendek dari s ke t dengan bobot minimum. Sebagai contoh penerapan lintasan terpendek adalah persoalan tukang pos Cina. Persoalan tentang tukang pos Cina pertama kali dikemukakan oleh Mei Ko Kwan, seorang Matematikawan Cina, pada tahun 1962. Persoalan ini adalah persoalan yang banyak dihadapi para tukang pos, yaitu tentang bagaimana seorang tukang pos akan mengantarkan surat-surat yang dibawanya ke alamat-alamat yang ia tuju. Ia harus merencanakan rute perjalanannya agar ia mendapatkan lintasan terpendek dari alamat awal ke alamat akhir dengan semua alamat di kunjungi. Untuk menyelesaikan tukang pos Cina, alamat-alamat yag dituju dapat dinyatakan sebagai titik pada graf, sedangkan jalan yang menghubungkan antar dua buah alamat dinyatakan dengan sisi. Bobot pada sisi menyatakan jarak antar dua buah alamat. II-3 B 8 D 2 1 A 3 4 F 4 6 8 C 5 2 E Gambar 2.5 Contoh Graf untuk Persoalan Tukang Pos Cina 2.5 Lintasan Terpendek Fuzzy Masalah pencarian lintasan terpendek sangat umum dan secara luas dipelajari pada teori graf. Lintasan terpendek bertujuan untuk menemukan lintasan dengan bobot minimum. Pada proses pencarian lintasan, sering kali hanya jarak dari tiap ruas jalan yang digunakan sebagai parameter. Tetapi dalam kenyataannya, biaya, volum jalan, kemacetan, kepadatan jalan dan lain-lain merupakan faktor yang semestinya digunakan sebagai pertimbangan atau parameter dalam menentukan lintasan yang dipilih. Karena, parameter-parameter tersebut mempunyai nilai yang tidak tepat. Oleh karena itu, untuk menangani parameter di atas teori bilangan fuzzy sangat dibutuhkan karena dalam hal ini teori bilangan fuzzy biasanya dinyatakan dalam bentuk besaran, misalnya kurang lebih 10, kira-kira 5 jam, dan sebagainya. Sehingga logika fuzzy digunakan untuk memodelkan multi parameter yang ada pada persoalan lintasan. Sebagai contoh, persoalan tukang pos Cina, alamat-alamat yang di tuju dinyatakan sebagai titik pada graf, sedangkan jalan yang menghubungkan antar dua buah alamat dinyatakan dengan sisi. Bobot pada sisi menyatakan jarak antar dua buah alamat, tetapi dalam lintasan terpendek fuzzy bobot pada sisi menyatakan himpunan bilangan fuzzy segitiga yang menyatakan parameter dari sisi tersebut. Dimana parameternya merupakan parameter yang nilainya bersifat tidak tepat atau fuzzy seperti waktu, kemacetan, kepadatan, biaya, dan lain-lain. II-4 B (8, 9, 10) D (1,3,5) (3, 5, 7) (4, 6, 8) A (4,7,10) (4,6,8) (7,9,11) (5,8,9) C F (2,4,6) (5,7,9) E Gambar 2.6 Contoh Graf untuk Persoalan Tukang Pos Cina dengan Bobot Bilangan Fuzzy 2.6 Bilangan Fuzzy Segitiga Definisi 2.3 (Susilo, 2006). Bilangan fuzzy segitiga A dinyatakan dengan = ( , adalah : , ) adalah himpunan fuzzy A di ( − ) , ( − ) ( − ) , ( − ) 0, < = 2.7 ( ) yang fungsi keanggotaannya ≤ < ≤ ≤ > Operasi Aritmatika Dasar pada Bilangan Fuzzy Adapun operasi penjumlahan, pengurangan, perkalian, dan pembagian dalam bilangan fuzzy adalah : Jika maka : = ( ⨁ 1. ( , , , , ) ⨁ ) dan , , = , = ( , + merupakan dua bilangan fuzzy segitiga , + , (2, 5, 9) ⨁ 4, 6, 8 = (2 + 4, 5 + 6, 9 + 8) + ) − ) = (6, 11, 17) 2. ( , ⊝ , )⊝ , , = ( − , − , (5, 7, 9) ⊝ 4, 5,6 = (5 − 4, 7 − 5, 9 − 6) = (1, 2, 3) II-5 3. , ⨂ , ⨂ ( , (min , , , , , = , , , , , , , , , , , , ,maks )) (5, 7, 9)⨂(4, 5, 6) = (min (20, 25, 30, 28, 35, 42, 36, 45, 54), maks (20, 25, 30, 28, 35, 42, 36, 45, 54)) = (20, 54) 4. ( / , , )/( , , ) = (min ( , , , , , , , , , , , , , , , )) , ,maks (5, 7, 9)∕ (4, 5, 6) = (min( , , , , , , , , ),maks ( , , , , , , , , )) = ( , ) 2.8 Rangking Bilangan Fuzzy Merupakan sebuah metode untuk menbandingkan jumlah bilangan fuzzy atau peringkat dari bilangan fuzzy. dan adalah dua bilangan fuzzy segitiga. Misalkan i. ℜ ii. ℜ 2.9 ℜ ℜ ℜ iii. > ℜ < = ℜ . . . Metode Rangking Fuzzy Metode Rangking fuzzy dikemukakan oleh C. H. Cheng (1998), yang merupakan jarak antara titik centroid ( , ℜ = dengan ( = ) + ( ) dan titik asalnya, yaitu : ) ( ( ) ) (2.1) (2.2) II-6 dan = 2.10 ( (2.3) ) Algoritma Dijkstra Algoritma Dijkstra ditemukan oleh Edsger W. Dijkstra yang merupakan salah satu varian bentuk algoritma popular dalam pemecahan persoalan yang terkait dengan masalah optimasi dan bersifat sederhana. Algoritma ini menyelesaikan masalah mencari sebuah lintasan terpendek (sebuah lintasan yang mempunyai panjang minimum) dari titik s ke titik t dalam graf berbobot pada graf berarah, namun algoritma ini juga benar untuk graf tak berarah. Misalkan G adalah graf berarah berbobot dengan himpunan titik { , ,…, } dan lintasan terpendek yang dicari adalah dari Dijkstra dimulai dari titik ke = . Algoritma . Sesuai dalam iterasinya, algoritma akan mencari satu titik yang jumlah bobotnya dari titik 1 terkecil. Titik-titik terpilih dipisahkan dan titik-titik tersebut tidak diperhatikan lagi dalam iterasi berikutnya. Misalkan: ={ , ,…, }. = Himpunan titik-titik lintasan terpendek. ∈ ( ) yang sudah terpilih dalam jalur = Jumlah bobot lintasan terkecil dari ℜ = Rangking fuzzy. 1, ∗ 1. = Bobot dari sisi ( , ). = Jumlah bobot lintasan terkecil dari ke . ke . Secara formal, algoritma dijkstra untuk mencari lintasan terpendek adalah sebagai berikut: 1. = {}; = { , ,…, } 2. Untuk i = 2,……,n, lakukan 3. Selama ∉ lakukan: = 1, II-7 a. Pilih titik b. Untuk setiap ganti ∈ − ∈ dengan terkecil. Set dengan − > lakukan : jika + 4. Untuk = 1,2, … , jika ∈ ( , ). maka ∗ 1, Menurut algoritma di atas, lintasan dari titik = ke = . ∪{ + } ( , ) maka melalui titik-titik . dalam L, dan jumlah bobot lintasan terkecilnya adalah Sebagai contoh untuk lintasan terpendek menggunakan algoritma dijkstra adalah : 3 4 2 3 5 Gambar 2.7 Contoh Graf Berarah dari Berdasarkan dari Gambar 2.7 di atas maka akan dicari lintasan terpendek ke . Penyelesain : Matriks W untuk menyatakan graf pada Gambar 6 adalah sebagai berikut: 1. 2. − 4 3 ∞ ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − L = {} dan = , , Untuk = 2 : Untuk = 3 : 3. Untuk = 4 : = ∉ . 2 = 1,2 = 4. 4 = 1,4 = ∞. 3 = 1,3 = 3. sehingga langkah 3(a) dan 3(b) di lakukan. 3(a) : D(k) terkecil adalah D(3) sehingga L = L∪ = {} ∪ 3 = { 3 }. = . II-8 ∈ V–L= 3(b) : , , − = { , { , } akan diperiksa apakah > Untuk j = 2 : }. Sehingga untuk = + , . D(j) = D(2) = 4 ; D(k) + w(k, j) = D(3) + w(3, 2) = 3 +2 = 5. Oleh karna D(2) < D(3) + W(3, 2), maka D(2) = 4 (nilainya tetap). Untuk j = 4 D(j) = D(4) = ∞ ; D(k) + w(k, j) = D(3) + w(3, 4) = 3 + 5 =8. Oleh karna D(4) >D(3) + W(3, 4), maka D(4) = 8 (nilainya berubah). Langkah selanjutnya adalah kembali ke langkah 3. Karena 3(a) dan 3(b) dilakukan. 3(a) : − = { 2, 3, 4} − 3 = { , }. = . ∉ maka langkah Di antara D(k) ( dengan k = 2, 4) hasil iterasi langkah 3(b), D(k) yang terkecil adalah D(2) sehingga Sekarang, L = L∪ ∈ V–L= 3(b) : − = = { 3} ∪ , = { }akan diperiksa apakah Untuk j = 4 : , 2 − = { 3, > , 2 }. = { + }. Sehingga untuk , . = D(4) = 8; D(k) + w(k, j) = D(2) + w(2, 4) = 4 + 3 =7. Oleh karna D(4) < D(2) + w(2, 4), maka D(4) = 7 (nilainya berubah). Langkah selanjutnya adalah kembali ke langkah 3. Karena iterasi berhenti. 4. ∈ = ∗ 1.2 = ∗ 1.3 = ∗ 1.4 = , , , 2 = 4. ∗ 1. = = ∈ maka . 3 = 3. 4 = 7. II-9 Tabel 3.1. Hasil Iterasi Lintasan Terpendek pada Algoritma Dijkstra Indeks k sehingga L D(2) D(3) D(4) w(1, 2) = 4 w(1,3) = 3 w(1,4) = ∞ V-L D(k) minimum { , ∅ - { } 3 , { , }. Min (D(2), }. D(3)+w(3,2) Min (D(4), 3 (tetap) D(3)+w(3,4) = Min (4, = Min (∞, 3+2) = 4 3+5) = 8 Min (D(4), { , 2 } { } 4 (tetap) 3 (tetap) D(2)+w(2,4) = Min (8, 4+3) = 7 { , 4 , }. Panjang lintasan terpendek dari baca mundur sebagai berikut : adalah 7 dengan jalur yang di Pada titik terakhir ( ) diperoleh penurunan jarak pada kolom D(4) dari 8 ke 7, itu berarti titik yang terpilih pada baris tersebut ( → ) adalah jalur lintasan ( jalur ). Pada kolom D(2) tidak terjadi penurunan jarak (dari 4 tetap 4), itu berarti bahwa titik pada indeks k = 3 ( )bukan jalur lintasan. Jadi, lintasan terpendeknya adalah 2.11 → → dengan total panjang = 7. Algoritma Floyd II-10 Algoritma Floyd adalah algoritma untuk menghitung lintasan terpendek pada graf berarah. Algoritma Floyd menggunakan dua matrik yaitu matrik dan matrik . Matrik merupakan matrik untuk melihat bobot akhir pada lintasan, sedangkan matrik merupakan matrik untuk melihat lintasan yang terpilih. Matriks ini merepresentasikan bobot dari keseluruhan sisi yang ada pada graf ( , ) dengan , dimana i adalah titik awal dan j adalah titik tujuan. Diberikan beberapa notasi yang akan digunakan dalam algoritma Floyd yaitu: = jarak dari titik i ke titik j. = suatu titik yang dilewati oleh suatu lintasan dari i ke j yang mempunyai jarak . = matriks jarak. = matriks urutan. ℜ = rangking fuzzy. 1. Didefinisikan matriks Langkah-langkah algoritma Floyd adalah sebagai berikut: dan . = ∞. Jika i dan j tidak terhubung langsung, definisikan 2. Tetapkan k = 1. a. Didefinisikan baris k dan kolom k sebagai baris dan kolom pivot. b. Untuk setiap ,maka c. + pada matriks > Jika matriks maka matriks d. dalam , maka ,jika + di ganti dengan pada matriks < + tetap. ≠ berubah dengan k. Jika k = n, iterasi berhenti.jika k < n, definisikan langkah 1. , ≠ . Tetapi jika tetap maka matriks tetap, tetapi jika matriks diubah dengan mengganti , ≠ = + 1, kembali ke Sebagai contoh untuk lintasan terpendek pada algoritma floyd adalah sebagai berikut : Dengan graf yang sama, maka akan diselesaikan masalah lintasan terpendek dengan algoritma Floyd. II-11 Penyelesain : Iterasi 1 : 1. Didefinisikan matriks Ddan matriks . − 4 3 ∞ ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − 2. − = 1 1 1 dan = 1. a. Definisikan baris 1 dan kolom 1 dari matrik 2 − 2 2 3 3 − 3 4 4 4 − sebagai baris dan kolom pivot. − 4 3 ∞ ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − b. Untuk setiap dan pada matriks , elemen − = 1 1 1 < 2 − 2 2 + 3 3 − 3 4 4 4 − maka tidak ada elemen yang diubah untuk matrik . Maka matriks D tetap pada iterasi berikutnya. c. Tidak ada elemen matriks yang di ubah dari matrik mengikuti perubahan pada matriks Karena perubahan , maka matrik tetap pada iterasi berikutnya. d. Karena k < 4 maka untuk iterasi berikutnya didefinisikan k = 2 dan kembali ke langkah 1. Iterasi 2 : 1. Didefinisikan matriks 2. dan matriks − 4 3 ∞ ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − = 2 . dan a. Definisikan baris 2 dan kolom 2 dari matrik − = 1 1 1 2 − 2 2 3 3 − 3 4 4 4 − sebagai baris dan kolom pivot. II-12 − 4 3 ∞ ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − b. Untuk setiap − 1 dan = 1 1 pada matriks , elemen maka elemen pada matrik diperoleh matriks pada iterasi berikutnya. c. Untuk elemen matriks matriks > + 2 − 2 2 3 3 − 3 4 4 4 − ,∞> 4+ 3 di ubah menjadi 7. Sehingga di ubah menjadi 2 sehingga di peroleh pada iterasi berikutnya. d. Karena k < 4 maka untuk iterasi berikutnya didefinisikan k = 3 dan kembali ke langkah 1. Iterasi 3 : 1. 2. Didefinisikan matriks dan matriks . − 4 3 7 ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − − 1 dan = 1 1 = 3 a. Definisikan baris 3 dan kolom 3 dari matrik 2 − 2 2 3 3 − 3 2 4 4 − sebagai baris dan kolom pivot. − 4 3 7 ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − a. Untuk setiap − 1 dan = 1 1 pada matriks , elemen ada elemen yang diubah untuk matrik . b. Tidak ada elemen < + 2 − 2 2 3 3 − 3 2 4 4 − maka tidak yang di ubah dari matrik . c. Karena k < 4 maka untuk iterasi berikutnya didefinisikan k = 4 dan kembali ke langkah 1. Iterasi 4 : 1. Didefinisikan matriks dan matriks . II-13 2. − 4 3 7 ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − − 1 dan = 1 1 = 4 a. Definisikan baris 4 dan kolom 4 dari matriks 2 − 2 2 3 3 − 3 2 4 4 − sebagai baris dan kolom pivot. − 4 3 7 ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − b. Untuk setiap − 1 dan = 1 1 pada matriks , elemen ada elemen yang diubah. c. Tidak ada elemen < 2 − 2 2 + 3 3 − 3 2 4 4 − maka tidak yang di ubah dari matrik . d. Karena k = n maka iterasi berhenti. − 4 3 7 ∞ − ∞ 3 = ∞ 2 − 5 ∞ ∞ ∞ − − 1 dan = 1 1 2 − 2 2 3 3 − 3 2 4 4 − Dari iterasi 4 di dapat hasil akhir untuk lintasan terpendek dari titik 1 ke titik 4 adalah : = 2 Jadi, lintasan terpendeknya adalah = 2 → = 3 → dengan bobot adalah 7. II-14