KATA PENGANTAR
Dengan
nama Allah yang maha pengasih lagi maha penyayang, Segala puji bagi Allah SWT
yang telah memberikan rahmat serta karunia-Nya kepada kami sehingga kami
berhasil menyelesaikan Makalah yang berjudul “Algoritma dijkstra”
Pembuatan makalah ini bertujuan untuk memenuhi tugas mata kuliah Struktur data. Adapun yang kami bahas dalam makalah ini adalah algoritma dijakstra.
Pembuatan makalah ini bertujuan untuk memenuhi tugas mata kuliah Struktur data. Adapun yang kami bahas dalam makalah ini adalah algoritma dijakstra.
Kami menyadari bahwa makalah ini masih jauh dari sempurna,
oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun
selalu kami harapkan demi kesempurnaan makalah ini.
Akhir kata, kami sampaikan terima kasih kepada semua pihak yang telah berperan serta dalam penyusunan makalah ini dari awal sampai akhir. Semoga Allah SWT senantiasa meridhai segala usaha kita.
Akhir kata, kami sampaikan terima kasih kepada semua pihak yang telah berperan serta dalam penyusunan makalah ini dari awal sampai akhir. Semoga Allah SWT senantiasa meridhai segala usaha kita.
Amin.
Bekasi, 25 Mei 2016
Kelompok 2
Kelompok 2
USNI
DAFTAR ISI
KATA PENGANTAR............................................................................................
i
DAFTAR ISI............................................................................................................
ii
BAB I PENDAHULUAN.......................................................................................
1
Latar Belakang .......................................................................................................... 1
Rumusan masalah.......................................................................................................
1
Tujuan dan manfaat penelitian...................................................................................
2
BAB II ...................................................................................................................... 3
Teori dasar graf..........................................................................................................
3
Graf berbobot.............................................................................................................
4
Lintasan terpendek.....................................................................................................
4
Algoritma dijkstra......................................................................................................
4
BAB III.....................................................................................................................
10
Kesimpulan................................................................................................................
10
DAFTAR PUSTAKA.............................................................................................
11
BAB I
LATAR BELAKANG
Kita
mengetahui bahwa untuk menuju ke suatu kota tujuan dapat ditempuh melalui
beberapa
lintasan. Dalam hal ini, kita akan menentukan kota-kota atau jalan manakah
yang
harus dilalui sehingga kita dapat mencari tempat tujuan dengan jarak terpendek.
Dengan
demikian lintasan terpendek dapat diartikan sebagai bobot minimal dari suatu
lintasan,
yaitu jumlah bobot dari seluruh busur yang membentuk lintasan. Dalam menentukan
lintasan
terpendek dapat diperoleh dengan beberapa algoritma matematika, antara lain
algoritma
Dijkstra, algoritma Floyd-Warshall dan algoritma Bellman-Ford.
Algoritma
yang akan di pakai dalam sistem ini adalah algoritma Dijkstra. Algoritma ini
bertujuan
untuk menemukan lintasan terpendek berdasarkan bobot terkecil dari satu titik
ke
titik lainnya. Misalkan titik mengambarkan kota, garis menggambarkan jalan dan
bobot
menggambarkan
jarak, maka algoritma Dijkstra melakukan kalkulasi terhadap semua
kemungkinan
bobot terkecil dari setiap titik. Dengan kata lain algoritma ini menghitung
lintasan
berdasar jarak terpendek yang di tempuh di tiap-tiap kota.
1.1 Rumusan Masalah
Berdasarkan
kondisi yang dijelaskan di atas, maka terdapat beberapa rumusan masalah
yang
akan dijawab dalam penelitian ini
Ø Bagaimana
menentukan lintasan terpendek antar kota karena terdapat jalan yang
bercabang-cabang.
Ø Bagaimana
merancang dan menerapkan algoritma Dijkstra untuk melakukan kalkulasi
terhadap
semua kemungkinan bobot terkecil dari setiap titik.
1.2 Tujuan Penelitian
Penelitian
ini bertujuan antara lain:
1.
Memberikan solusi dalam pemilihan lintasan terpendek pada jalan darat antara
kotakota di sumatera bagian selatan meliputi provinsi Jambi, Sumatera Selatan,
Bengkulu dan Lampung.
2.
Mempercepat dalam mencari solusi lintasan terpendek pada jalan darat antara
kotakota di sumatera bagian selatan.
3.
Memperoleh hasil yang akurat dan tepat sesuai dengan keadaan di lapangan.
1.3 Manfaat Penelitian
Dengan
menerapkan alogaritma dijkstra untuk mencari lintasan terdekat dapat membantu
para pengguna jalan, traveling salesman, perusahaan yang bergerak dibidang
pariwisata dan angkutan antar provinsi, instansi pemerintah dan lain sebagainya
terutama bagi yang membutuhkan informasi tentang lintasan terdekat.
BAB II
KAJIAN TEORI
2.1 Teori Dasar Graf
Graf
didefinisikan sebagai pasangan himpunan (V, E), ditulis dengan notasi G = (V,
E), yang dalam hal ini V adalah himpunan tidak kosong dari simpul-simpul
(vertices atau node) dan E adalah himpunan sisi (edges atau arcs) yang
menghubungkan sepasang simpul [1]. Simpul pada graf dinomori dengan huruf,
seperti a, b, c...dst, dengan bilangan asli 1, 2, 3...dst, atau gabungan
keduanya. Sedangkan sisi yang menghubungkan simpul u dengan simpul v dinyatakan
dengan pasangan (u, v) atau dinyatakan dengan lambang e1, e2....en dengan kata
lain, jika e adalah sisi yang menghubungkan simpul u dengan simpul v, maka e
dapat ditulis sebagai e = (u, v). Secara geometri graf digambarkan sebagai
sekumpulan noktah (simpul) di dalam bidang dwimatra yang dihubungkan dengan
sekumpulan garis (sisi)
Gambar 1. (G1) graf
sederhana, (G2) multigraf, dan (G3) multigraf
Gambar
di atas memperlihatkan tiga buah graf, G1, G2 dan G3 .
G1 adalah graf dengan himpunan simpul V dan
himpunan sisi E adalah:
V
= {1, 2, 3, 4}
E
= {(1, 2), (1, 3), (2, 3), (2, 4), (3, 4)}
G2
adalah graf dengan himpunan simpul V dan himpunan sisi E adalah:
V
= {1, 2, 3, 4}
E
= {(1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4)}
= {e1, e2, e3, e4, e5, e6, e7}
G3adalah
graf dengan himpunan simpul V dan himpunan sisi E adalah:
V
= {1, 2, 3, 4} E = {(1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4), (3,
3)}
= {e1, e2, e3, e4, e5, e6, e7, e8}
Pada
G2, sisi e3 = (1, 3) dan sisi e4= (1, 3) dinamakan sisi-ganda (multiple edges
atau parallel edges) karena kedua sisi ini menghubungi dua buah simpul yang
sama, yaitu simpul 1 dan simpul 3. Pada G3 , sisi e8 = (3, 3) dinamakan gelang
atau kalang (loop) karena ia berawal dan berakhir pada simpul yang sama.
2.2 Graf Berbobot (Weighted Graph)
Graf berbobot adalah graf yang setiap sisinya diberi sebuah harga
(bobot) [1]. Bobot pada tiap sisi dapat berbeda-beda bergantung 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
simpul komunikasi ke simpul komunikasi lain (dalam jaringan komputer), ongkos
produksi, dan sebagainya.
2.3 Lintasan Terpendek
Persoalan mencari
lintasan terpendek di dalam graf merupakan salah satu persoalan optimasi. Graf
yang digunakan dalam pencarian lintasan terpendek adalah graf berbobot
(weighted graph), yaitu graf yang setiap sisinya diberikan suatu nilai atau
bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu pengiriman
pesan, ongkos pembangunan, dan sebagainya. Asumsi yang kita gunakan di sini
adalah bahwa semua bobot bernilai positif. Kata terpendek berbeda-beda maknanya
bergantung pada tipikal persoalan yang akan diselesaikan. Namun, secara umum
terpendek berarti meminimisasi bobot pada suatu lintasan dalam graf [1]
2.4 Algoritma Dijkstra
Saat
ini sudah banyak algoritma yang bisa digunakan untuk menemukan pencarian rute
terpendek, dan tidak bisa di pungkiri Djikstra masih menjadi salah satu yang
populer dari sekian banyak algoritma tersebut..
Algortima ini ditemukan oleh Edsger W. Dikstra dan di publikasi pada tahun
1959 pada sebuah jurnal Numerische Mathematik yang berjudul “A Note on Two
Problems in Connexion with Graphs“[1]. Algoritma ini sering digambarkan
sebagai algoritma greedy (tamak). Sebagai contoh, ada pada buku Algorithmics(Brassard and
Bratley [1988,
pp. 87-92])
Djikstra merupakan
salah satu varian bentuk algoritma popular dalam pemecahan persoalan terkait
masalah optimasi pencarian lintasan terpendek sebuah lintasan yang
mempunyai panjang minimum dari verteks a ke z dalam graph berbobot, bobot
tersebut adalah bilangan positif jadi tidak dapat dilalui oleh node negatif.
Namun jika terjadi demikian, maka penyelesaian yang diberikan adalah infiniti
(Tak Hingga). Pada algoritma Dijkstra, node digunakan karena algoritma Dijkstra
menggunakan graph berarah untuk penentuan rute listasan terpendek. Berikut
Pseudo Code dan Flowchart Algoritma Djikstra:
Pseudo
Code
function Dijkstra(Graph, source):
|
|
for each vertex v in Graph: //
Initializations
|
|
dist[v] := infinity ; // Unknown
distance function from
|
|
// source to v
|
|
previous[v] := undefined ; // Previous node
in optimal path
|
|
end for
// from source
|
|
dist[source] := 0 ; //
Distance from source to source
|
|
Q := the set of all nodes in Graph
; // All nodes in
the graph are
|
|
// unoptimized - thus are in Q
|
|
while Q is not empty: // The main loop
|
|
u := vertex in Q with smallest
distance in dist[] ; // Start node
in first case
|
|
remove u from Q ;
|
|
if dist[u] = infinity:
|
|
break ;
// all remaining vertices are
|
|
end if
// inaccessible from source
|
|
for each neighbor v of u: // where v has not yet been
|
|
// removed from Q.
|
|
alt := dist[u] +
dist_between(u, v) ;
|
|
if alt < dist[v]: // Relax
(u,v,a)
|
|
dist[v] := alt ;
|
|
previous[v] := u ;
|
|
decrease-key v in Q; // Reorder v in
the Queue
|
|
end if
|
|
end for
|
|
end while
|
|
return dist;
|
Implementasi
Djikstra
Algoritma
ini bertujuan untuk menemukan jalur terpendek berdasarkan bobot terkecil dari
satu titik ke titk lainnya. Misalnya titik mengambarkan gedung dan garis
menggambarkan jalan, maka algoritma Dijkstra melakukan kalkulasi terhadap semua
kemungkinan bobot terkecil dari setiap titik.
Pertama-tama
tentukan titik mana yang akan menjadikan node awal, lalu beri bobot jarak pada
node pertama ke node terdekat satu persatu, 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
no keberangkatan, pertimbangkan node tetangga yang belum terjamah dan hitung
jaraknya dari titik keberangkatan. Sebagai contoh, jika titik keberangkatan A
ke B memiliki bobot jarak 6 dan dari B ke node C berjarak 2, maka jarak ke C
melewati B menjadi 6+2=8. 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” selajutnya dan lanjutkan dengan kembali ke step 3
Note : Bahkan menurut Andrew Goldberg, peneliti utama di Microsoft Research Silicon Valley, mengatakan ada banyak alasan
mengapa peneliti terus mempelajari masalah pencarian jalan terpendek.
“Jalan terpendek adalah masalah optimasi yang relevan
untuk berbagai macam aplikasi, seperti jaringan routing, game, desain sirkuit,
dan pemetaan,” – Goldberg. “Industri selalu datang dengan
aplikasi baru sepanjang waktu, membuat parameter yang berbeda untuk tiap
masalah.
Teknologi
dengan lebih banyak kecepatan dan kapasitas memungkinkan kita untuk memecahkan
masalah yang lebih besar, sehingga dalam lingkup masalah jalan terpendek maka
akan selalu ada optimasi.
BAB III
KESIMPULAN
Berdasarkan
latar belakang serta pembahasan-pembahasan pada bab sebelumnya, maka dapat
disimpulkan bahwa :
a. Algoritma dijkstra
dapat digunakan untuk mencari rute terpendek secara optimal.
b. Dengan menggunakan program ini dapat
mempercepat dalam menentukan rute terpendek. c. Program ini menawarkan beberapa
kemudahan dalam menyusun peta secara dinamik sehingga apabila terdapat
perubahan kondisi pada peta, program dapat menyesuaikan dengan kondisi baru.
DAFTAR
PUSTAKA
·
Anonim,2015
tentang Struktur data,
http://ndocfile.blogspot.co.id/2012/09/Struktur
data diakses pada 25 Mei 2016 pada 02.31
·
Wisnu,2016
tentang Struktur data,
http://usniwisnu.blogspot.co.id/.html diakses
pada 25 Mei 2016 pada 02.40
Tidak ada komentar:
Posting Komentar