Studi Kasus Sh di Kasus Shortest Path Proble Path Problem

Bab 11 Studi Kasus Sh di Kasus Shortest Path Proble Path Problem

Pokok Bahasan

1. Shortest Path Problem m (Permasalahan Jalur Tercepat)

Tujuan

1. Memahami logika shor hortest path problem

2. Memahami algoritma D a Dijkstra untuk menyelesaikan shortest path pr problem

3. Memahami penggunaa aan matrik untuk manipulasi variabel pada shor hortest path problem

4. Memahami penggunaa aan queue dan stack untuk menyelesaikan short ortest path problem

11.1 Studi Kasus: Shorte rtest Path Problem dengan Algoritma D a Dijkstra

11.1.1 Permasalahan

Buatlah flowchart untu ntuk menghitung jarak minimal dan rutenya da dari titik 1 ke titik 5 dari jalur berikut ini:

11.1.2 Cara Penyelesaian Ma Masalah

Untuk menyelesaikan an shortest path problem satu arah sepert erti yang ada pada permasalahan, dapat digunaka kan algoritma Dijkstra. Pertama kali tentukan an titik asal dan titik tujuan pada permasalahan. Pad Pada permasalahan, titik asal adalah titik 1 dan an titik tujuan adalah titik 5. Karena yang dicari ad adalah jarak terpendek dan rute pada jarak t k terpendek tersebut, Untuk menyelesaikan an shortest path problem satu arah sepert erti yang ada pada permasalahan, dapat digunaka kan algoritma Dijkstra. Pertama kali tentukan an titik asal dan titik tujuan pada permasalahan. Pad Pada permasalahan, titik asal adalah titik 1 dan an titik tujuan adalah titik 5. Karena yang dicari ad adalah jarak terpendek dan rute pada jarak t k terpendek tersebut,

Saat awal, pada setiap iap titik selain titik asal, nilai y diinisialisasi si dengan nilai yang besar (diasumsikan sebagai M M) dan nilai z diinisialisasi dengan titik 0, se seperti yang tampak pada gambar berikut:

Setelah itu, proses dim dimulai dari titik asal yaitu titik 1 sebagai t i titik aktif. Titik 1 mempunyai jalur ke 2 titik, ya yaitu titik 2 dan titik 3. Saat mendapatkan ada da jalur dari titik 1 ke titik 2, maka nilai y pada titik itik 1 ditambahkan dengan jarak dari titik 1 ke ke titik 2. Jika nilai penambahan ini lebih kecil dar dari nilai y pada titik 2, maka akan menyebabka kan 3 hal:

1. nilai y pada titik 2 di digantikan dengan nilai penambahan tersebut

2. nilai z pada titik 2 di digantikan dengan titik 1.

3. Informasi titik 2 dim imasukkan ke dalam queue dengan proses enqu queue

Hal yang sama dilakuk kukan terhadap titik 1 ke titik 3. Ini membuat at adanya perubahan nilai pada titik 2 dan titik 3, se seperti yang terlihat sebagai berikut.

Adapun kondisi queue ue, karena titik 2 dan titik 3 dimasukkan ke d e dalam queue, maka queue terlihat dibawah ini.

Selanjutnya, isi queue d e dikeluarkan satu nilai (proses dequeue) sebag bagai titik aktif. Hasil dari dequeue adalah nilai 2, s , sehingga sekarang titik aktif adalah titik 2. T . Titik 2 mempunyai jalur ke titik 3 dan titik 5. Hal al yang dilakukan seperti yang sebelumnya, se , sehingga kondisinya sekarang menjadi seperti berik rikut:

Informasi jalur dari tit titik 2 ke titik 3 dan titik 5 ini kemudian ak akan dimasukkan ke dalam queue. Informasi titik ik 3 kemudian dimasukkan lagi ke dalam que queue. Untuk titik 5, Informasi jalur dari tit titik 2 ke titik 3 dan titik 5 ini kemudian ak akan dimasukkan ke dalam queue. Informasi titik ik 3 kemudian dimasukkan lagi ke dalam que queue. Untuk titik 5,

Selanjutnya, isi queue d e dikeluarkan satu nilai (proses dequeue) sebag bagai titik aktif. Hasil dari dequeue adalah nilai 3, s , sehingga sekarang titik aktif adalah titik 3. T . Titik 3 mempunyai jalur ke titik 1 dan titik 4. Hal al yang dilakukan seperti yang sebelumnya, se , sehingga kondisinya sekarang menjadi seperti berik rikut:

Proses berikutnya adala alah enqueue untuk memasukkan titik 1 dan tit titik 4. Karena titik 1 adalah titik asal, maka tidak d k dimasukkan ke queue. Kemudian titik 4 dim imasukkan ke dalam queue, sehingga kondisi queue ue sekarang tampak seperti dibawah ini:

Selanjutnya, isi queue d e dikeluarkan satu nilai (proses dequeue) sebag bagai titik aktif. Hasil dari dequeue adalah nilai 3, se , sehingga sekarang titik aktif adalah titik 3, sam sama seperti keadaan sebelumnya. Proses dilakukan an sama, akan tetapi karena nilai penambahan an nilai y dan nilai z pada titik 3 ke titik-titik jalurn urnya tidak ada yang lebih kecil dari nilai y dan dan nilai z pada titik- titik jalurnya, maka tidak ada da perubahan nilai pada nilai y dan nilai z pada ada titik jalurnya dan tidak ada proses enqueue titik- -titik jalur dari titik 3.

Selanjutnya, isi queue d e dikeluarkan satu nilai (proses dequeue) sebag bagai titik aktif. Hasil dari dequeue adalah nilai 4, s , sehingga sekarang titik aktif adalah titik 4. T . Titik 4 mempunyai jalur ke titik 5. Hal yang dilak ilakukan seperti yang sebelumnya, sehingga ko kondisinya sekarang menjadi seperti berikut:

Informasi jalur dari titi titik 4 ke titik 5 ini kemudian akan dimasukka kan ke dalam queue. Karena titik 5 adalah tujuan, m , maka tidak perlu dimasukkan ke dalam queue. ue.

Untuk selanjutnya, ke kembali pada proses enqueue pada queue. e. Karena isi queue kosong, maka perubahan nilai lai y dan nilai y pada setiap titik sudah selesai.

Proses selanjutnya ada adalah pembacaan nilai jarak terdekat dan jalu alur terdekat sebagai solusi. Informasi jarak terdek ekat dapat diambil dari nilai y pada titik tuju tujuan. Berarti, jarak terdekat pada permasalan terse rsebut adalah 5 sebagaimana terlihat pada nilai lai y di titik 5. Untuk mendapat informasi jalur terde rdekat, diperlukan operasi stack. Dimulai dari ri titik tujuan, titik 5 dimasukkan ke dalam stack. K . Kemudian, pada titik 5, nilai z=4, sehingga b a bergerak ke titik 4. Titik 4 dimasukkan ke dalam s m stack. Nilai z pada titik 4 adalah 3, sehingga k a kemudian bergerak ke titik 3. Titik 3 dimasukk kkan ke dalam stack. Nilai z pada titik 3 a adalah 2, sehingga kemudian bergerak ke titik 2. T 2. Titik 2 dimasukkan ke dalam stack. Kemudia dian, nilai z pada titik

2 adalah 1, sama dengan titi titik asal. Titik asal dimasukkan ke dalam s stack. Selanjutnya, informasi jalur tercepat dap apat dibaca dari hasil operasi pop terhadap dap stack, sehingga didapatkan jalur tercepatnya ad adalah 1-2-3-4-5.

11.1.3 Struktur Data Yang D g Dibutuhkan

• n sebagai variabel banyakn aknya titik • asal sebagai variabel titik a ik asal • tujuan sebagai variabel titi titik tujuan • relasi sebagai matriks jalur lur dari satu titik ke titik lain • jarak sebagai matriks jarak rak dari satu titik ke titik lain • y sebagai array untuk meny enyimpan nilai y pada setiap titik • z sebagai array untuk meny enyimpan nilai z pada setiap titik

• Q sebagai queue penampun pung titik akan akan diproses sebagai titik aktif tif • S sebagai stack penampung ung titik jalur terpendek • M sebagai variabel nilai ya yang sangat besar

• i dan j sebagai variabel yan yang dipakai untuk proses looping

Ilustrasi pemakaian stru struktur data diatas dapat dilihat pada gambar di r dibawah ini:

11.1.4 Deklarasi dan Inisiali ialisasi

Variabel terdiri dari n, , asal, tujuan, relasi, jarak, y, z, Q, S, i dan j. D . Dari sini, deklarasi dan inisialisasi variabel pada fl a flowchart dapat dibuat sebagai berikut:

11.1.5 Input

Pertama kali, user har arus memasukkan banyaknya titik n, titik asa asal dan titik tujuan. Dari banyaknya titik tersebu but, dibuatlah matriks input relasi dan jara arak, array y dan z. Kemudian, user memasukka kan nilai dari 2 matriks input. Selanjutnya ya dilakukan prose inisilisasi nilai y dan z. Flowch chart untuk input ini dapat dilihat sebagai berik erikut:

11.1.6 Output

Solusi yang ingin did didapatkan pada permasalahan shortest path th problem tersebut adalah jarak terpendek dan ja jalur untuk jarak terpendek. Informasi jarak k terpendek terdapat pada nilai z di titik tujuan. Se Sedangkan untuk mendapatkan informasi jalu alur terpendek, harus dilakukan operasi pop pada a stack, sebagaimana yang telah dijelaskan n pada bagian Cara Penyelesaian. Flowchart untuk tuk output terlihat seperti dibawah ini:

11.2 Latihan

Buatlah flowchart dari p i permasalahan shortest path problem diatas. D . Deskripsikan proses penyelesaian dengan me menggunakan struktur data yang ada, dan kem kemudian buatlahlah flowchart keseluruhan.