Anda di halaman 1dari 24

Kelompok 11 :

1. Andara Puteri Syalsabella (20051204105)


2. Cliff Gallant Satryo (20051204047)
3. Rayyan Nur Fauzan (20051204075)
4. Tykea Farraz Zafira (20051204033)

Kelas/Angkatan : 2020A/2020

Program Studi : S1 Teknik Informatika

Pertemuan : 8 (UTS)

Hari, Tanggal : Selasa, 23 Maret 2021

Dosen Pengampu : Naim Rochmawati, S.Kom., M.T.

Mata Kuliah : Matematika Diskrit

Bab : Algoritma Dijkstra

1
2
Kata Pengantar
Puji syukur kami panjatkan kepada Tuhan Yang Maha Kuasa, karena atas
berkah, rahmat dan karunia-Nya, penyusunan laporan dengan judul Algoritma Dijkstra
untuk Program Studi Matematika Diskrit dapat diselesaikan.
Laporan ini disusun sebagai tugas dalam pelaksanaan kegiatan Ulangan
Tengah Semester mata kuliah Matematika Diskrit secara daring.
Dalam laporan ini kami menyajikan Materi Pembelajaran, Contoh Soal, Latihan
sebagai bahan evaluasi mahasiswa dalam memahami materi pembelajaran.
Sesuai dengan tujuan dalam pembelajaran Matematika Diskrit, kami
diharapkan dapat memahami konsep Algoritma Dijkstra, menjelaskan keterkaitan
antar konsep, dan mengaplikasikannya untuk memecahkan masalah.
Kami menyampaikan ucapan terimakasih kepada Dosen kami dan Mahasiswa
yang memilih dan menggunakan laporan ini. Semoga laporan ini dapat memberi
manfaat yang baik pada hasil dari pendidikan berupa generasi muda yang kompeten
dan cerdas dalam membangun bangsa.

Surabaya, Maret 2021


Penyusun

Tim Penyusun

i
Daftar Isi
Kata Pengantar......................................................................................................................................... i
Daftar Isi .................................................................................................................................................. ii
Pendahuluan........................................................................................................................................... 1
1.1 Latar Belakang............................................................................................................................... 1
1.2 Rumusan Masalah ......................................................................................................................... 1
1.3 Tujuan ........................................................................................................................................... 1
Pembahasan ........................................................................................................................................... 2
2.1 Landasan Teori .............................................................................................................................. 2
2.2 Algoritma Dijkstra ......................................................................................................................... 2
2.3 Penerapan Dalam Bahasa Pemrogaman C++ ................................................................................ 7
2.4 Penerapan ................................................................................................................................... 11
Latihan Soal .......................................................................................................................................... 12
Daftar Pustaka ...................................................................................................................................... 15
Kunci Jawaban ...................................................................................................................................... 16

ii
Pendahuluan
1.1 Latar Belakang
Banyaknya jalan dari suatu tempat ke tempat lain. Banyaknya kombinasi dari
penataan suatu benda yang boleh berdekatan dan tidak. Banyaknya jembatan untuk
menyebrangi jurang satu dan lainnya. Untuk mengefisiensikan waktu dan tenaga, kita
tentu memilih jalur terpendek, kombinasi termudah, dan lainnya agar tidak saling
tabrakan dan lancar.
Menentukan jalur terpendek dan terefisien secara cepat memiliki rumus yang
mudah, salah satunya adalah Algoritma Dijkstra. Dengan rumus ini, kita bisa dengan
cepat mengatur jadwal banyak orang agar tidak bisa dengan cepat mengatur jadwal
banyak orang agar tidak tabrakan, mengatur lalu lintas, atau memilih rute terpendek.

1.2 Rumusan Masalah


1. Apa itu Algoritma Dijkstra?
2. Bagaimana konsep dasar Algoritma Dijkstra?
3. Bagaimana cara menerapkan Algoritma Dijkstra dalam bahasa pemrogaman
C++?
4. Apa contoh implementasi Algoritma Dijkstra dalam kehidupan sehari-hari?

1.3 Tujuan
Tujuan dari pembuatan laporan sekaligus pembelajaran tentang Algoritma
Dijkstra, sebagai berikut:
1. Mengetahui definisi Algoritma Dijkstra.
2. Memahami konsep dari Algoritma Dijkstra.
3. Memahami cara mengimplementasikan Algoritma Dijkstra ke dalam bahasa
pemrograman C++.
4. Mengetahui penerapan Algoritma Dijkstra dalam kehidupan sehari-hari.

1
Pembahasan
2.1 Landasan Teori
Pengertian
Algoritma Dijkstra merupakan algoritma yang paling sering digunakan dalam
pencarian rute terpendek, sederhana penggunaannya dengan menggunakan simpul-
simpul sederhana pada jaringan jalan yang tidak rumit (Chamero, 2006). Adapun
nama Algoritma Dijkstra sendiri berasal dari penemunya yaitu Edsger Dijkstra.
Kata algoritma (algorithm) berasal dari kata algorism yang diambil dari nama
penulis buku Arab yang terkenal, yaitu Abu Ja'far Muhammad ibnu Musa Al-
Khuwarizmi (al-Khuwarizmi dibaca orang Barat menjadi algorism) (Munir, 2015).
Adapun pengertian algoritma adalah kumpulan instruksi atau perintah yang dibuat
secara jelas dan sistematis berdasarkan urutan yang logis untuk penyelesaian suatu
masalah.
Sejarah
Algoritma Dijkstra dibuat dan diterbitkan oleh Dr. Edsger W. Dijkstra, seorang
ilmuwan komputer dan insinyur perangkat lunak Belanda yang brilian.
Pada tahun 1959, dia menerbitkan artikel 3 halaman berjudul "a Note on Two
Problems in Connexion with Graphs" dimana dia menjelaskan algoritma barunya yaitu
Algoritma Dijkstra.
Selama wawancara pada tahun 2001, Dr. Dijkstra mengungkapkan bagaimana
dan mengapa dia merancang algoritma:
Apa cara terpendek untuk melakukan perjalanan dari Rotterdam ke
Groningen? Ini adalah algoritma untuk menemukan jalur terpendek, yang saya
rancang dalam waktu sekitar 20 menit. Suatu pagi saya berbelanja di Amsterdam
dengan tunangan muda saya, dan kami merasa lelah, kami duduk di teras kafe untuk
minum secangkir kopi dan saya hanya memikirkan apakah saya bisa melakukan ini,
dan saya kemudian merancang algoritma untuk jalur terpendek. Seperti yang saya
katakan, penemuan ini saya temukan dalam waktu 20 menit. Faktanya, itu diterbitkan
pada tahun 1959, tiga tahun kemudian. Pemublikasiannya cukup bagus. Salah satu
alasan mengapa itu sangat bagus adalah karena saya mendesainnya tanpa pensil
dan kertas. Tanpa pensil dan kertas anda hampir dipaksa untuk menghindari semua
kerumitan yang bisa dihindari. Akhirnya algoritma tersebut jadi, saya sangat heran,
karena ini adalah salah satu landasan ketenaran saya. Seperti dikutip dalam artikel
Edsger W. Dijkstra dari Wawancara dengan Edsger W. Dijkstra.

2.2 Algoritma Dijkstra


Algoritma ini bertujuan untuk menemukan jalur terpendek berdasarkan bobot
terkecil dari satu titik ke titik lainnya. Misalkan titik menggambarkan gedung dan garis

2
menggambarkan jalan, maka algoritma Dijkstra melakukan kalkulasi terhadap semua
kemungkinan bobot terkecil
0 dari setiap titik.
A
2
3 C ∞ 8 F ∞

∞ B 4
2 3

1 E

D 2

Pertama-tama tentukan titik mana yang akan menjadi node awal, lalu beri bobot jarak
pada node pertama ke node terdekat satu per satu, Dijkstra akan melakukan
pengembangan pencarian dari satu titik ke titik lain dan ke titik selanjutnya tahap demi
tahap. Inilah urutan logika dari algoritma Dijkstra:
1. Beri nilai bobot (jarak) untuk setiap titik ke titik lainnya, lalu set nilai 0 pada node
awal dan nilai tak hingga terhadap node lain (belum terisi).
2. Set semua node “Belum terjamah” dan set node awal sebagai “Node
keberangkatan”.
3. Dari node keberangkatan, pertimbangkan node tetangga yang belum terjamah
dan hitung jaraknya dari titik keberangkatan. Sebagai contoh, jika titik
keberangkatan A ke B memiliki bobot jarak 3 dan dari B ke D berjarak 1, maka
jarak C melewati B menjadi 3+1=4. Jika jarak ini lebih kecil dari jarak
sebelumnya (yang telah terekam sebelumnya) hapus data lama, simpan ulang
data jarak dengan jarak yang baru.
4. Saat kita selesai mempertimbangkan setiap jarak terhadap node tetangga,
tandai node yang telah terjamah sebagai “Node terjamah”. Node terjamah tidak
akan pernah di cek kembali, jarak yang disimpan adalah jarak terakhir dan yang
paling minimal bobotnya.
5. Set “Node belum terjamah” dengan jarak terkecil (dari node keberangkatan)
sebagai “Node keberangkatan” selanjutnya dan lanjutannya dengan kembali ke
step 3.
Penjelasan langkah-langkah dalam mencari jalur terpendek secara rinci dimulai dari
node awal sampai node tujuan dengan nilai jarak terkecil.
1. Node awal A, dan node tujuan F. Setiap edge yang terhubung antar node telah
diberi.

3
0
A
2

Node 3 C ∞ 8 F ∞
awal
∞ B 4
2 3
Node
E tujuan
1

D 2


A B C D E F
A 0a

Membuat tabel yang berisi node node agar pengerjaan lebih mudah.
2. Dijkstra melakukan kalkulasi terhadap node tetangga yang terhubung langsung
dengan node awal (node A), dan hasil yang didapat adalah node C karena
bobot nilai node C paling kecil dibandingkan nilai pada node lain, nilai = 2 (0 +
2).
0a

A
2
3 C 2𝑎

B
3𝑎

A B C D E F
A 0a 3a 2a ∞ ∞ ∞
C 2a

4
3. Node C di set menjadi node keberangkatan. Dijkstra melakukan kalkulasi
kembali terhadap node-node tetangga yang terhubung langsung dengan node
C. node B tetap dihitung walaupun tidak berhubungan dengan node C karena
node tersebut sebelumnya mempunyai nilai. Pada tahap ini menunjukan node
B menjadi node keberangkatan selanjutnya karena bobot nilainya paling kecil
yaitu 3.
0a

A
2
3 C 2𝑎 8 F 10𝑐

3𝑎 B 4

E
6𝑐

A B C D E F
A 0a 3a 2a ∞ ∞ ∞
C 3a 2a ∞ 6c 10c
B 3a

4. Perhitungan berlanjut dengan node B sebagai node keberangkatan. Dijkstra


melakukan kalkulasi terhadap node tetangga. Dalam mencari bobot nilai yang
paling kecil, node yang belum menjadi node keberangkatan dan tidak
berhubungan dengan node B akan tetap dijadikan pembanding nilai yang
paling kecil. Didapatkan node D sebagai node keberangkatan dengan bobot
nilai 4 (3 + 1).
0a

A
2
3 2𝑎 10𝑐
C 8 F

3𝑎 B 4
2
E
1
6𝑐
4𝑏 D

5
A B C D E F
A 0a 3a 2a ∞ ∞ ∞
C 3a 2a ∞ 6c 10c
B 3a 4b 6c 10c
D 4b

5. Node D menjadi node keberangkatan. Dijkstra melakukan kalkulasi terhadap


node tetangga. Apabila sebuah node sebelumnya sudah mempunyai bobot
nilai, akan tetapi ada nilai baru yang menumpuknya, jika nilai baru nya lebih
kecil, maka nilai node tersebut diganti dengan nilai baru, dan jika nilai baru lebih
besar, maka nilai dari node tersebut tidak berubah, yaitu menggunakan nilai
node sebelumnya. Dihasilkan node E sebagai node keberangkatan selanjutnya
karena node E mempunyai bobot nilai paling kecil yaitu 5 (3 + 2).

0a

A
2
3 C 2𝑎 8 F 10𝑐

3𝑎 B 4
2
E
1
5𝑏
D 2
4𝑏

A B C D E F
A 0a 3a 2a ∞ ∞ ∞
C 3a 2a ∞ 6c 10c
B 3a 4b 6c 10c
D 4b 5b 10c
E 5b

6. Selanjutnya, node E menjadi node keberangkatan dan melakukan kalkulasi


terhadap node tetangga yaitu dengan node F. Ternyata, node F mempunyai
bobot nilai baru yaitu 8 (3 + 2 + 3). Karena nilai baru lebih kecil dari nilai
sebelumnya, maka nilai pada node F menggunakan nilai yang baru, yaitu 8.
Karena sudah sampai pada node tujuan, maka bobot nilai node tujuan tersebut
merupakan jarak terpendek dari jarak-jarak lainnya. Jadi jarak terpendek dari
node diatas yaitu 8.

6
0a

A
2
3 C 2𝑎 8 F 8𝑒

3𝑎 B 4
2 3
E
1
4𝑏 5𝑏
D 2

A B C D E F
A 0a 3a 2a ∞ ∞ ∞
C 3a 2a ∞ 6c 10c
B 3a 4b 6c 10c
D 4b 5b 10c
E 5b 8e
F 8e
Rute terpendek yaitu A – B – E – F, dengan jarak 8.

2.3 Penerapan Dalam Bahasa Pemrogaman C++


#include <iostream>
# define inf 9999
using namespace std;

int n;
int table[100][100];
int dijkstra(int mulai, int akhir);

int main(){
int mulai, akhir;
cout << "Masukkan banyak node : "; cin >> n;
cout << "Masukkan jarak node secara matriks\n";

for (int i = 1; i <= n; i++){


for (int j = 1; j <= n; j++){
cin >> table[i][j];
}
}

int jawab = 0; char x;


while (jawab == 0){
cout << "masukkan node start (awal) : "; cin >> mulai;
cout << "Masukkan node finish (akhir) : "; cin >> akhir;
cout << "Jarak minimal dari node "<< mulai << " ke " << akhir << " : "
<< dijkstra(mulai, akhir);;

7
ulang:
cout << "\nApakah ingin melanjutkan program(y/n) "; cin >> x;
if(x == 'Y' || x == 'y') jawab = 0;
else if (x == 'N' || x == 'n') jawab = 1;
else goto ulang;
}
}
int dijkstra(int mulai, int akhir){
int dist[n];
bool visited[n];

for(int i = 1; i <= n; i++) {


dist[i] = inf;
visited[i] = false;
}
dist[mulai] = 0;
while(true){
int u = -1;
int minDist = inf;

for (int i = 1; i <= n; i++){


if((visited[i] == false) && (dist[i] < minDist)){
u = i;
minDist = dist[i];
}
}
if ((u == -1) || (dist[u] == inf)){
break;
}
visited[u] = true;

for (int v = 1; v <= n; v++){


if(table[u][v] != 0){
if(dist[v] > (dist[u] + table[u][v])){
dist[v] = dist[u]+table[u][v];
}
}
}
}
return dist[akhir];
}

Program diatas menggunakan bahasa pemrogaman c++. User diharuskan


input berapa banyak node, jarak antar node dalam bentuk matriks, node start(mulai)
dan node tujuan(akhir).
Didalam main program terdapat int mulai yang digunakan sebagai node start
dan int akhir sebagai node finish. Terdapat looping while, dimana itu berfungsi untuk

8
mengulangi perhitungan dijkstra jika dibutuhkan kembali. Didalam looping while
terdapat pemanggilan fungsi dijkstra(mulai, akhir) dengan parameter node mulai dan
node akhir tadi.
Didalam fungsi dijkstra, perhitungan jarak terpendek dihitung menggunakan
algoritma dijkstra. Terdapat array dist yang berfungsi menyimpan jarak dan visited
yang berfungsi memberikan nilai true atau false terhadap node yang dikunjungi.
Terdapat looping while yang berfungsi mengulang tiap dijkstra melakukan kalkulasi ke
node tetangganya. Didalam looping ini juga dicari jarak terpendek yang dilalui node
dan disimpan ke jarak node tersebut. Fungsi ini memberikan keluaran berupa tipe data
int yang terletak pada array dist dengan index node tujuan, didalam program diatas
tertulis return dist[akhir].
Diberikan contoh soal sebagai berikut

0
A
2
3 C ∞ 8 F ∞

∞ B 4
2 3

1 E

D 2

1. Compile code diatas menggunakan compiler C++.


2. Jalankan program tersebut, bisa dari CMD, terminal, ataupun IDE C++.
3. Membuat jarak antar node dalam bentuk matriks, bisa di coret-coret dalam
kertas terlebih dahulu atau bisa diketik dalam note. Langkah langkah dalam
membuat jarak antar node kedalam matriks sebagai berikut.
a. Membuat tabel dengan banyak baris dan kolomnya sebesar node + 1.
Karena soal diatas terdapat 6 node, maka membuat tabel sebanyak 7x7.
Pada baris dan kolom pertama isi node tersebut.

A B C D E F
A
B
C
D
E
F

b. Isi tiap jarak antar node, misal node A dengan node B berjarak 3, maka
didalam tabel tersebut pada baris A kolom B di isi dengan nilai 3. Apabila
tidak mempunyai jarak seperti node A ke node A itu sendiri dan tidak
berhubungan maka bisa di isi dengan 0.

9
A B C D E F
A 0 3 2 0 0 0
B 0 0 0 1 2 0
C 0 0 0 0 4 8
D 0 0 0 0 2 0
E 0 0 0 0 0 3
F 0 0 0 0 0 0
c. Maka yang diambil menjadi matriks yaitu yang didalam tabel itu sendiri.
4. Didalam program tersebut, terdapat perintah untuk menginputkan banyak
node, maka isilah dengan banyak node pada graf lalu enter.

5. Setelah itu akan muncul perintah untuk memasukkan jarak antar node dalam
bentuk matriks, maka bisa di inputkan sesuai dengan matriks yang sudah
dibuat tadi.

6. Akan muncul perintah untuk memasukkan node mulai dan node akhir, maka isi
node mulai dengan node awal, karena soal diatas menggunakan alphabet, bisa
diubah menjadi bilangan bulat, misal node A, maka akan jadi node 1 dan
seterusnya. Isi node akhir sesuai dengan node yang akan dituju untuk mencari
jarak terpendeknya.

10
7. Jarak terpendek akan muncul. Setelah itu muncul perintah untuk user
menginputkan pilihan, ketika user input y/Y, maka program akan dimulai dari
awal dan melakukan perhitungan dijkstra lagi. Apabila user input n/N, maka
program akan keluar.

2.4 Penerapan
Beberapa penelitian sebelumnya, Algoritma Dijkstra digunakan untuk mencari
tempat parkir. Karna menurut peneliti pencarian tempat parkir secara manual masih
belum efisien karena membutuhkan waktu lama, terutama ketika sedang berada di
pusat pembelanjaan. Ketika driver menekan tombol untuk mengambil tiket parkir,
maka akan tercetak tiket beserta minimap untuk memudahkan driver mencari tempat
parkir. Software yang digunakan adalah LabView untuk implementasi Dijkstra dan
beberapa hardware untuk membantu proses pencarian tempat parkir. Diantaranya:
Digital converter, GIS, GPS, Infrared, LCD, LED, National Instrument, Printed Circuit
Board dan lain-lain. Perbedaan penelitian yang dahulu dengan yang sekarang
sangatlah signifikan. Mulai dari software dan hardware yang digunakan, kegunaan
dalam pengimplementasian Dijkstra, dan alat-alat yang digunakan untuk mendukung
penelitian tersebut. Algoritma Dijkstra juga digunakan dalam proses routing di dalam
jaringan internet. Routing adalah proses menemukan jalan antara sumber dan tujuan
berdasarkan transmisi data. Untuk menemukan rute terpendek untuk transmisi data
di dalam jaringan, Dijkstra menggunakan koneksi matriks dan berat dari matriks.
Matriks terdiri dari beberapa path dari node awal ke node tujuan. Software yang
digunakan dalam proses routing adalah Matlab.

11
Latihan Soal

1.
Kota Kota

Michelia Kalanchoe

Kota Kota Kota

Amarilis Mirabilis Lycoris

Kota Kota Kota

Hortensis Brunfelsia Calathea

Rose yang magang di Kota Amarilis mendapat kabar dari bibinya bahwa ibunya
yang berada di Kota Lycoris sedang sakit keras. Rose panik, ia ingin segera
mengunjungi ibunya. Ia segera menyewa mobil untuk segera tancap gas ke
sana. Ia harus memilih rute terpendek agar sampai dengan cepat ke Kota
Lycoris. Jarak dari Kota Amarilis menuju Kota Michelia adalah 35 kilo meter.
Jarak dari Kota Amarilis ke Kota Hortensis 5 kilo lebih jauh dari jarak Kota
Amarilis menuju Kota Michelia. Sedangkan jarak Kota Michelia dan Kota
Hortensis adalah 50 kilo meter. Kota Michelia berjarak 55 kilo meter dengan
Kota Brunfelsia yang hanya berjarak 10 kilo meter dengan Kota Hortensis. Kota
Hortensis dan Kota Mirabilis lebih dekat 20 kilo meter dari pada jarak Kota
Michelia dan Kota Hortensis. Kota Mirabilis dan Kota Michelia terpisah dengan
jalan sejauh 40 kilo meter. Kota Michelia berjarak 50 kilo meter dengan Kota
Kalanchoe, tidak seperti Kota Mirabilis yang lebih dekat 20 kilo meter dengan
Kota tersebut. Kota Brunfelsia berjarak 15 kilo meter dengan Kota Mirabilis.
Jarak Kota Brunfelsia dengan Kota Kalanchoe sama jauhnya seperti jarak ke
Kota Michelia. Rose mendapat informasi tentang Kota Calathea yang dekat
dengan Kota Brunfelsia hanya terpisah jarak 5 kilo meter dan 30 kilo meter
dengan Kota Mirabilis. Untuk menuju Kota Lycoris hanya 40 kilo meter dari Kota
Kalanchoe maupun Calathea. Dengan informasi itu, rute mana yang harus
dipilih Rose?

12
2. Perhatikan lahan parkir lantai tiga Hotel Orion

Bentuk Graf

Cassiopeia ingin parkir (Mobil Cassiopeia ditandai dengan kotak biru atau huruf
A). Ia mendapat informasi bahwa tempat parkir yang bewarna merah sudah
diisi oleh kendaraan lain. Yang masih putih artinya kosong. Cassiopeia ingin
segera parkir dan menghadiri undangan di ruang yang sudah disediakan Hotel
Orion, maka, sebaiknya Cassiopeia mengambil tempat parkir di...?

13
3. Perhatikan peta berikut

Mall Museum
30
Canis Morpho
20
50 10
30
Perumahan Perumahan Perumahan
30
Felis Aeshna Equus

60
15
15 20
25
Pet Shop Restaurant

Jubata 30 Anura

Tora, tempat tinggal di Perumahan Felis, sudah hampir terlambat kumpul


bersama temannya untuk mengerjakan projek animasi cegah corona di
Perumahan Aeshna. Ia buru-buru menyiapkan motor dan memakai helm. Dia
bisa saja sampai dalam waktu singkat dengan menerobos arah lalu lintas,
namun itu berbahaya dan sangat tidak disarankan. Akhirnya, dengan
memperhatikan arah lalu lintas, Tora memilih rute terpendek yang bisa ia
pikirkan saat itu. Rute manakah yang dilewati Tora? (Keterangan : Panah
menunjukkan arah lalu lintas)

14
Daftar Pustaka
Misa, Thomas J. 2010. “An interview with Edsger W. Dijkstra”. ACM, 2010 (8) : 41-
47.
Suyitno, Amin dan lain sebagainya. 2017. “Implementasi Algoritma Dijkstra dalam
Pencarian Rute Terpendek Tempat Wisata di Kabupaten Gunungkidul dengan
Program Visual Basic”. UJM, 2017 (6) : 109-116.
Fauzi, Imron. 2011. “Penggunaan Algoritma Dijkstra dalam Pencarian Rute Tercepat
dan Rute Terpendek (Studi Kasus pada Jalan Raya andata Wilayah Blok M dan
Kota)”. UIN, Jakarta: 186 hlm.
Suryadi15. 2015. “Algoritma Dijkstra Shortest Path: (online).
(https://github.com/suriyadi15/algoritma-dijkstra-shortest-path/commit/master.
Diakses tanggal 27 Juni 2015)”.

Anonim. 2015. “Graph Algoritma Dijkstra: (online).


(http://yuliana.lecturer.pens.ac.id/Struktur%20Data/PRAKTIKUM%202015/Praktikum
%2032%20-%20Algoritma%20Dijkstra.pdf. Diakses tanggal 29 Agustus 2015)”.
Diana. 2019. “Contoh Soal Algoritma Dijkstra Lintasan Terpendek: (online).
(https://bakingupforlosttime.blogspot.com/2019/12/contoh-soal-algoritma-dijkstra-
lintasan.html?m=1. Diakses tanggal 24 Desember 2019)”.
Girsang, Abba S. 2017. “Algoritma Dijkstra: (online).
(https://mti.binus.ac.id/2017/11/28/algoritma-
dijkstra/#:~:text=Algoritme%20Dijkstra%2C%20. Diakses pada tanggal 28 November
2017)”.
Anonim. 2017. “http://repository.dinamika.ac.id/id/eprint/2194/5/BAB_III.pdf.”

15
Kunci Jawaban

16
JAWABAN LATIHAN SOAL
1.

Misal
A = Kota Amarilis E = Kota Mirabilis
B = Kota Hortensis F = Kota Kalanchoe
C = Kota Michelia G = Kota Calathea
D = Kota Brunfelsia H = Kota Lycoris

2 3 4 5 6 7 8
A 40A 35A ∾ ∾ ∾ ∾ ∾
C 40A 90C 75C 85C ∾ ∾
B 50B 70B 85C ∾ ∾
D 65D 85C 55D ∾
G 65D 85C 95G
E 85C 95G
F 95G
Jadi rute terpendek ialah :
A – B – D – G – H atau
Kota Amarilis – Kota Hortensis – Kota Brunfelsia – Kota Calathea – Kota Lycoris
dengan jarak 95 kilo meter.

17
2.

B C D E F G H I J K L MN O P Q R S T U V W X Y Z
A 3 3
A A
B 4 8 3
B B A
M 4 8 8 7
B B M M
C 8 11 8 8 7
C C B M M
N 8 11 8 8 1 1
C C B M 1 2
N N
D 11 19 8 8 1 1
C D B M 1 2
N N
K 11 19 1 8 1 1
C D 6 M 1 2
K N N
L 11 19 1 1 1 9 1
C D 6 1 0 L 2
K N L N
Jadi, tempat parkir kosong yang terdekat adalah tempat parkir V dengan urutan jalan
:
A–M–L–V

18
3.

Misal
A = Perumahan Felis E = Museum Morpho
B = Mall Canis F = Restaurant Anura
C = Pet Shop Jubata G = Perumahan Equus
D = Perumahan Aeshna

B C D E F G
A 20A 50A
B 50A/B
E 110E 80E 60E
G 110E 75G
F 105F 95F
Jadi jarak terpendek tanpa melawan arus lalu lintas :
1) A – E – G – F – D
Perumahan Felis – Museum Morpho – Perumahan Equus – Restaurant Anura –
Perumahan Aeshna
atau
2) A – B – E – G – F – D
Perumahan Felis – Mall Canis – Museum Morpho – Perumahan Equus –
Restaurant Anura – Perumahan Aeshna

19
20

Anda mungkin juga menyukai