PRESENTASI TUGAS AKHIR KI099 IMPLEMENTASI ALGORITMA PENCARIAN K JALUR SEDERHANA TERPENDEK DALAM GRAF (Kata kunci: Algoritma deviasi, algoritma Dijkstra, jalur sederhana, jalur terpendek) Penyusun Tugas Akhir : Anggakara Hendra Nandana (NRP: 508.00.075) Dosen Pembimbing : Yudhi Purwananto, S.Kom., M.Kom. Rully Soelaiman, S.Kom., M.Kom. 0 Juli 0 Tugas Akhir - KI099
KERANGKA PRESENTASI Pendahuluan Ilustrasi Permasalahan Rangkaian Proses Latar Belakang Batasan Masalah Uji Coba Tujuan Kesimpulan 0 Juli 0 Tugas Akhir - KI099
ILUSTRASI PERMASALAHAN Problem dari situs Sphere Online Judge (SPOJ) berjudul Kth Shortest Path (http://www.spoj.com/problems/mkthpath/) 0 Juli 0 Tugas Akhir - KI099
DESKRIPSI SOAL SPOJ Kth Shortest Path. Seseorang bernama Isaac merasa bosan karena setiap hari melalui jalur yang sama untuk melakukan perjalanan dari rumah menuju kantor.. Jalur yang diambil Isaac selalu merupakan jalur terpendek, yaitu jalur dengan biaya terkecil, dan selalu merupakan jalur sederhana.. Biaya pada sebuah jalur merupakan total waktu yang dibutuhkan untuk melewati jalan-jalan yang menghubungkan dua buah tempat yang menyusun jalur tersebut.. Waktu yang dibutuhkan untuk melewati sebuah jalan bisa bernilai sama atau berbeda dengan jalan-jalan yang lain. 5. Pada hari-hari berikutnya, Isaac ingin melewati jalur terpendek yang belum pernah dilewatinya. 6. Dengan kata lain, pada hari ke-k, Isaac ingin melewati jalur terpendek ke-k. 7. Permasalahan Isaac dapat dimodelkan menjadi graf dengan masing-masing verteks merepresentasikan tempat dan masing-masing edge merepresentasikan jalan. 0 Juli 0 Tugas Akhir - KI099
BATASAN SOAL SPOJ Kth Shortest Path. Jumlah verteks maksimum 50 buah, jumlah edge maksimum 50 buah, dan banyak jalur yang dicari (k) maksimum 00 buah.. Jalur yang dicari harus merupakan jalur sederhana, yaitu jalur yang tidak memiliki pengulangan verteks penyusun.. Jika terdapat dua kandidat jalur terpendek dengan bobot yang sama, maka jalur yang dipilih adalah jalur yang lebih dahulu memiliki verteks penyusun dengan nomor yang lebih kecil. (Contoh: Jika memiliki bobot yang sama, maka jalur --- muncul lebih dahulu daripada jalur --.) 0 Juli 0 Tugas Akhir - KI099 5
FORMAT DATA MASUKAN Data masukan merupakan sebuah berkas teks yang hanya berisi bilangan bulat Masing-masing bilangan bulat merepresentasikan detail graf dengan format seperti pada Gambar n m k a b x y z jumlah edge jalur verteks yang dicari detail edge-edge x y z x m y m z m verteks sumber tujuan jalur Gambar 0 Juli 0 Tugas Akhir - KI099 6
FORMAT DATA MASUKAN Data masukan merupakan sebuah berkas teks yang hanya berisi bilangan bulat Masing-masing bilangan bulat merepresentasikan detail graf dengan format seperti pada Gambar n m k a b x y z verteks bobot edge sumber tujuan x y z x m y m z m Gambar 0 Juli 0 Tugas Akhir - KI099 7
CONTOH DATA MASUKAN Data Masukan 6 Gambar Graf 0 Juli 0 Tugas Akhir - KI099 8
FORMAT DATA KELUARAN Data keluaran merupakan sebuah berkas teks yang hanya berisi bilangan bulat. Masing-masing bilangan bulat merepresentasikan verteks-verteks penyusun jalur yang ditemukan Urutan penulisan verteks-verteks penyusun jalur dimulai dari verteks sumber hingga verteks tujuan. Pada tiap dua buah verteks dipisahkan sebuah tanda hubung (-). a-v - -v l- -b verteks sumber jalur verteks tujuan jalur 0 Juli 0 Tugas Akhir - KI099 9
CONTOH DATA KELUARAN Data Masukan 6 Gambar Graf Data Keluaran -- 0 Juli 0 Tugas Akhir - KI099 0
ALGORITMA NAIF () Daftar kemungkinan jalur dari vertex ke vertex : : ---, bobot = : --, bobot = : --, bobot = : -, bobot = Pada k jalur terpendek pertama, masing-masing verteks dapat menjadi verteks penyusun jalur sebanyak maksimal k kali. Vertex sumber dan verteks tujuan jalur selalu muncul pada setiap k jalur terpendek. Pencarian jalur dapat dilakukan dengan mencari seluruh kemungkinan jalur yang menuju verteks tujuan, hingga ditemukan jalur yang berasal dari verteks sumber sebanyak k kali. 0 Juli 0 Tugas Akhir - KI099
ALGORITMA NAIF () Daftar urutan jalur yang menuju ke verteks : : (bobot = 0) : - (bobot = ) : -- (bobot = ) : - (bobot = ) 5: --- (bobot = ) 6: -- (bobot = ) 7: -- (bobot = ) 0 Juli 0 Tugas Akhir - KI099
HASIL ALGORITMA NAIF Hasil pengujian implementasi algoritma naif pada soal Kth Shortest Path Kesimpulan: Algoritma naif kurang efisien untuk menyelesaikan permasalahan pencarian k jalur sederhana terpendek. 0 Juli 0 Tugas Akhir - KI099
LATAR BELAKANG. Problem berjudul Kth Shortest Path pada situs SPOJ merupakan contoh permasalahan yang dapat ditemukan dalam kehidupan sehari-hari, sehingga dibutuhkan sebuah algoritma untuk menyelesaikan permasalahan tersebut.. Algoritma naif kurang efisien dalam hal kecepatan dan memori yang dibutuhkan, sehingga dibutuhkan algoritma lain yang lebih cepat dan lebih hemat memori 0 Juli 0 Tugas Akhir - KI099
BATASAN MASALAH. Pustaka yang digunakan untuk membantu pengimplementasian algoritma merupakan C++ Standard Template Library (STL). Pustaka-pustaka tersebut antara lain: cstdio, iostream, algorithm, cstring, vector, queue, dan ctime.. Kebutuhan memori hasil implementasi mengacu pada hasil keluaran dari server situs SPOJ untuk problem Kth Shortest Path. 0 Juli 0 Tugas Akhir - KI099 5
TUJUAN MASALAH. Untuk melakukan studi dan mengimplementasi algoritma pencarian k jalur sederhana terpendek dalam graf yang lebih optimal dibandingkan dengan algoritma naif dengan bantuan pustaka dari C++ Standard Template Library.. Untuk menguji kebenaran hasil implementasi algoritma pencarian k jalur sederhana terpendek dalam graf.. Untuk menguji dan membandingkan kecepatan algoritma naif dengan algoritma baru yang dijelaskan pada tugas akhir ini. 0 Juli 0 Tugas Akhir - KI099 6
KERANGKA PRESENTASI Pendahuluan Rangkaian Proses Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Uji Coba Pembentukan pohon jalur terpendek T t 5 Pencarian kandidat-kandidat jalur terpendek berikutnya Kesimpulan Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099 7 6
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Jalur terpendek pertama digunakan sebagai acuan untuk menentukan kandidat-kandidat jalur terpendek berikutnya. Jalur terpendek pertama dicari menggunakan algoritma Dijkstra Penghapusan subjalur dan edge-edge dari graf Pembentukan pohon jalur terpendek T t Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099 8 Gambar
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Jalur terpendek dari verteks menuju verteks pada Gambar adalah jalur --- Jalur terpendek yang didapat kemudian ditambahkan ke himpunan kandidat jalur X Inisialisasi verteks sumber sebagai verteks deviasi jalur Pembentukan pohon jalur terpendek T t Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur Gambar 0 Juli 0 Tugas Akhir - KI099 9
ALGORITMA DEVIASI Jalur-jalur terpendek yang didapat dari sebuah graf dapat membentuk pohon jalur terpendek seperti pada Gambar Sebuah jalur p k selalu memiliki rangkaian vertex yang sama dengan jalur p,, p k- dari verteks sumber sampai verteks tertentu. Verteks tersebut merupakan letak jalur p k menyimpang dari himpunan jalur {p,, p k- } dan disebut verteks deviasi. Verteks deviasi pada jalur p dinotasikan sebagai d(p) 5 p d(p ) = d(p ) = d(p ) = 5 5 p Gambar 0 Juli 0 Tugas Akhir - KI099 0 p
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Pembentukan pohon jalur terpendek T t Himpunan kandidat jalur X berisi kandidat-kandidat jalur terpendek Jalur yang diambil adalah jalur dengan bobot minimum dari semua anggota X, dan dinotasikan sebagai jalur p. Panjang jalur p dinotasikan sebagai l, dan urutan verteks penyusunnya dinotasikan sebagai v, v,, v l. Banyaknya jalur yang telah diambil dari X menunjukkan banyaknya jalur yang telah ditemukan Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur v v v v l /v 0 Juli 0 Tugas Akhir - KI099 Contoh jalur terpendek dari X (bobot = )
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Agar proses pemilihan jalur terpendek dapat lebih efisien, maka diperlukan struktur data yang tepat. Pada program, implementasi himpunan kandidat jalur menggunakan struktur data priority_queue yang mengaplikasikan struktur heap biner. Penghapusan subjalur dan edge-edge dari graf Pembentukan pohon jalur terpendek T t Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur v v v v l /v 0 Juli 0 Tugas Akhir - KI099 Contoh jalur terpendek dari X (bobot = )
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Bertujuan agar jalur yang sudah ditemukan tidak dapat menjadi kandidat jalur terpendek berikutnya. Subjalur yang dihapus dimulai dari verteks sumber hingga verteks ke-(l -) pada jalur p dan dinotasikan dengan sub p (s, v l - ) Hapus semua edge yang berasal dari verteks deviasi jalur-jalur yang ditemukan sebelum jalur p. Pembentukan pohon jalur terpendek T t jalur p Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Pembentukan pohon jalur terpendek T t Pohon jalur terpendek T t adalah struktur pohon dari graf yang berakar pada verteks t, yaitu verteks tujuan jalur. Jarak antara sebuah verteks dengan verteks akar pada pohon merupakan jarak minimum kedua verteks pada graf. Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099
RANGKAIAN PROSES: LANGKAH Pencarian kandidat jalur terpendek pertama Pada proses algoritma, pohon jalur terpendek dibentuk dari graf setelah dilakukan penghapusan verteks dan edge pada graf Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Pembentukan pohon jalur terpendek T t Pencarian kandidat-kandidat jalur terpendek berikutnya Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099 5
RANGKAIAN PROSES: LANGKAH 5 Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf 5. 5. Pengembalian verteks v i ke dalam graf Penghitungan jarak antara v i dengan t Pembentukan pohon jalur terpendek T t 5. Penambahan kandidat jalur ke dalam X diulang untuk setiap v i {v l -,, d(p) } 5 Pencarian kandidat-kandidat jalur terpendek berikutnya 5. Pengembalian edge (v i, v i+ ) pada graf Pengecekan jumlah jalur dan isi himpunan kandidat jalur 5.5 Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099 6
RANGKAIAN PROSES: LANGKAH 5. 5 Pencarian kandidat-kandidat jalur terpendek berikutnya v i 5. Pengembalian verteks v i ke dalam graf Penghitungan jarak antara v i dengan t Penambahan kandidat jalur ke dalam X Pengembalian edge (v i, v i+ ) pada graf Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099 7
RANGKAIAN PROSES: LANGKAH 5. 5 Pencarian kandidat-kandidat jalur terpendek berikutnya Pengembalian verteks v i ke dalam graf v i Dilakukan penghitungan kembali jarak antara v i dengan t, yaitu dengan memperbaiki struktur pohon T t 5. Penghitungan jarak antara v i dengan t Penambahan kandidat jalur ke dalam X Pengembalian edge (v i, v i+ ) pada graf Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099 8
RANGKAIAN PROSES: LANGKAH 5. 5 Pencarian kandidat-kandidat jalur terpendek berikutnya v i 5. Pengembalian verteks v i ke dalam graf Penghitungan jarak antara v i dengan t Penambahan kandidat jalur ke dalam X Pengembalian edge (v i, v i+ ) pada graf sub p (s, v i ) Jika jalur dari verteks v i ke verteks t dapat ditetapkan, maka dilakukan penambahan kandidat jalur baru. Kandidat jalur merupakan gabungan dari sub p (s, v i ) dengan jalur dari v i menuju t pada struktur pohon T t. Kandidat jalur terpendek yang dapat terbentuk adalah jalur -- Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099 9
RANGKAIAN PROSES: LANGKAH 5. 5 Pencarian kandidat-kandidat jalur terpendek berikutnya Pengembalian verteks v i ke dalam graf v i v i+ Penghitungan jarak antara v i dengan t Penambahan kandidat jalur ke dalam X 5. Pengembalian edge (v i, v i+ ) pada graf Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099 0
RANGKAIAN PROSES: LANGKAH 5.5 5 Pencarian kandidat-kandidat jalur terpendek berikutnya Pengembalian verteks v i ke dalam graf v i Penghitungan jarak antara v i dengan t Penambahan kandidat jalur ke dalam X Pengembalian edge (v i, v i+ ) pada graf T t sebelum diperbaiki T t setelah diperbaiki 5.5 Perbaikan struktur pohon T t 0 Juli 0 Tugas Akhir - KI099
RANGKAIAN PROSES: LANGKAH 6 Pencarian kandidat jalur terpendek pertama Pengambilan jalur terpendek dari himpunan kandidat jalur X Penghapusan subjalur dan edge-edge dari graf Rangkaian proses algoritma berhenti jika salah satu dari dua kondisi berikut tercapai:. jumlah jalur yang diambil dari X sudah sama dengan k. Himpunan jalur X merupakan himpunan kosong Pembentukan pohon jalur terpendek T t Pencarian kandidat-kandidat jalur terpendek berikutnya 6 Pengecekan jumlah jalur dan isi himpunan kandidat jalur 0 Juli 0 Tugas Akhir - KI099
KERANGKA PRESENTASI Pendahuluan Rangkaian Proses Uji Kebenaran Uji Coba Uji Kecepatan Kesimpulan Uji Perbandingan Algoritma 0 Juli 0 Tugas Akhir - KI099
UJI KEBENARAN Data Masukan 5 8 5 5 5 5 Data Keluaran Program ---5 5 5 5 k = p p 5 5 p p 0 Juli 0 Tugas Akhir - KI099
UJI KECEPATAN () Waktu minimal =,7 detik Waktu maksimal =,8 detik Rata-rata waktu yang dibutuhkan adalah,76 detik dengan standar deviasi sebesar 0, 0 Juli 0 Tugas Akhir - KI099 5
UJI KECEPATAN () Judul Graf Jumlah Verteks Jumlah Edge Graf A 5.8 Graf B 50.50 Graf C 70 5.76 Graf D 6.55 7. k 00 500 000 5000 Judul Graf Waktu (detik) A 0.0 B 0.05 C 0.588 D 9.856 A 0.5 B 0.6 C.00 D 8. A 0.7 B 0.8 C 6.65 D 888.67 A. B.56 C. D 86.0 Kompleksitas algoritma: Ο (kn (m + n log (n)) 0 Juli 0 Tugas Akhir - KI099 6
UJI PERBANDINGAN ALGORITMA k 00 500 000 5000 Judul Graf Algoritma TA Algoritma Naif A 0.06 0.96 B 0.05 0.56 A 0.09.9 B 0.6.0 A 0.87.6 B 0.8 6. A 0.97.6 B.56 0.576 Judul Graf Jumlah Verteks Jumlah Edge Graf A 5.8 Graf B 50.50 Graf C 70 5.76 Graf D 6.55 7. 0 Juli 0 Tugas Akhir - KI099 7
KERANGKA PRESENTASI Pendahuluan Rangkaian Proses Uji Coba Kesimpulan Penutup Saran 0 Juli 0 Tugas Akhir - KI099 8
Kesimpulan. Hasil implementasi algoritma pencarian jalur sederhana terpendek yang dijelaskan pada tugas akhir ini dapat menghasilkan keluaran yang benar.. Kompleksitas waktu eksekusi program adalah Ο (kn (m + n log (n)) pada n buah edge, m buah verteks, dan k jalur yang dicari pada graf.. Algoritma pada tugas akhir ini lebih efisien daripada algoritma naif yang telah ditemukan sebelumnya. 0 Juli 0 Tugas Akhir - KI099 9
Saran Pengembangan dengan melakukan studi mengenai struktur heap Fibonacci beserta implementasinya pada program untuk mempercepat pemrosesan kandidat jalur. 0 Juli 0 Tugas Akhir - KI099 0
0 Juli 0 Tugas Akhir - KI099
KERANGKA PRESENTASI Pendahuluan Struktur Pohon Jalur Terpendek Metode Struktur Percabangan Jalur Uji Coba Struktur Pohon T t Rangkaian Proses Kesimpulan 0 Juli 0 Tugas Akhir - KI099
POHON JALUR TERPENDEK Struktur Pohon Jalur Terpendek 0 0 0 5 Struktur Percabangan Jalur 0 Struktur Pohon T t Rangkaian Proses Daftar tiga jalur terpendek dari verteks ke verteks 5: P : --5 P : ---5 P : ---5 0 Juli 0 Tugas Akhir - KI099
POHON JALUR TERPENDEK Struktur Pohon Jalur Terpendek 0 0 0 5 Struktur Percabangan Jalur 0 Struktur Pohon T t Rangkaian Proses P : --5 P : ---5 P : ---5 5 P 5 5 P P 0 Juli 0 Tugas Akhir - KI099
PERCABANGAN JALUR Jalur ke-p : Struktur Pohon Jalur Terpendek s a t Struktur Percabangan Jalur Kandidat jalur-jalur ke-q (q > p): s t a Struktur Pohon T t Rangkaian Proses s a t 0 Juli 0 Tugas Akhir - KI099 5
STRUKTUR POHON T t Struktur Pohon Jalur Terpendek Struktur Percabangan Jalur 0 0 0 5 Struktur Pohon T t 0 Rangkaian Proses Struktur Pohon T t 0 Juli 0 Tugas Akhir - KI099 6
STRUKTUR POHON T t Struktur Pohon Jalur Terpendek Struktur Percabangan Jalur 0 5 Struktur Pohon T t 0 Rangkaian Proses Struktur Pohon T t setelah dilakukan penghapusan edge-edge pada jalur --5 0 Juli 0 Tugas Akhir - KI099 7
PSEUDOCODE () 0 Juli 0 Tugas Akhir - KI099 8
PSEUDOCODE () 0 Juli 0 Tugas Akhir - KI099 9
KODE SUMBER () 0 Juli 0 Tugas Akhir - KI099 50
KODE SUMBER () 0 Juli 0 Tugas Akhir - KI099 5