IMPLEMENTASI ALGORITMA DIJKSTRA UNTUK PENCARIAN LOKASI RUANGAN Studi Kasus : RS. Bethesda Yogyakarta Skripsi Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika Oleh : Agnes Christy Mara Devvi NIM : 045314070 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2008
104
Embed
IMPLEMENTASI ALGORITMA DIJKSTRA UNTUK PENCARIAN …repository.usd.ac.id/32362/2/045314070_Full.pdf · Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
IMPLEMENTASI ALGORITMA DIJKSTRA
UNTUK PENCARIAN LOKASI RUANGAN
Studi Kasus : RS. Bethesda Yogyakarta
Skripsi
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh :
Agnes Christy Mara Devvi
NIM : 045314070
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2008
DIJKSTRA ALGORITHM IMPLEMENTATION
TO SEARCH ROOM LOCATION
Objective : Yogyakarta Bethesda Hospital
FINAL ASSIGNMENT
Presented as a Meaning
For Gaining Engineering Holder
In Informatics Enginering Study Program
By :
Agnes Christy Mara Devvi
NIM : 045314070
INFORMATICS ENGINEERING DEPARTMENT
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2008
ii
iii
iv
INTISARI
Pencarian lokasi ruangan di rumah sakit, khususnya RS. Bethesda,
merupakan suatu masalah yang dihadapi pengunjung awam pada umumnya.
Dalam skripsi ini di buat suatu program bantu dengan mengimplementasikan
algoritma dijkstra untuk pencarian lokasi ruangan di rumah sakit dengan studi
kasus di RS. Bethesda. Algoritma dijkstra ini, diimplementasikan dengan bahasa
pemrograman Visual Basic 6.0 dan untuk penyimpanan data-data ruangannya, di
gunakan MySQL 5.0.
Masukan untuk program bantu ini, berupa nama ruangan yang ingin di tuju
dan pintu masuk. Keluaran dari program bantu ini berupa letak ruangan tersebut,
lengkap dengan petunjuk berupa gambar denah yang disertai dengan jalur
terpendek untuk sampai ke ruangan tersebut.
v
ABSTRACT
Searching room location in a hospital, especially in Bethesda Hospital, is
one of the common problems faced by new visitor. From this Thesis, an assistance
program is made by implementing dijkstra algorithm to search location of rooms
in hospital, with Bethesda Hospital as the objective. This djikstra algorithm, was
implemented by using Visual Basic 6.0 and to store the data of rooms, MySQL
5.0 is used.
The Input of this assistance program is the name of the room desired and
entrance, and the output of this assistance program is the location of the room,
with direction drawn in the map, showing the shortest route to the desired room.
vi
KATA PENGANTAR
Puji syukur saya ucapkan ke hadirat Allah, SWT atas berkat dan limpahan
kasih karunia yang telah diberikan-Nya sehingga penulis bisa menyelesaikan
tugas akhir dan menyusun laporan ini dengan judul “Implementasi Algoritma
Dijkstra Untuk Pencarian Lokasi Ruangan dengan Studi Kasus di RS Bethesda
Yogyakarta”.
Dorongan serta nasehat dari berbagai pihak sangat membantu dalam
pembuatan tugas akhir ini sampai tersusunnya laporan ini. Untuk itu, penulis ingin
mengucapkan terima kasih kepada :
1. Bapak Puspaningtyas Sanjoyo Adi, S.T.,M.T selaku Ketua Jurusan Teknik
Informatika Fakultas Sains dan Teknologi Universitas Sanata Dharma
Yogyakarta.
2. Bapak Drs.Jong Jek Siang, M.Sc selaku Dosen Pembimbing Tugas Akhir yang
telah membimbing dan menyediakan waktu dalam memberikan pengarahan
selama pembuatan tugas akhir dan penulisan laporan tugas akhir ini.
3. Pihak RS. Bethesda yang telah memberikan ijin pada penulis untuk melakukan
penelitian di Rs. Bethesda Yogyakarta.
4. Ibu dan Bapakku tercinta, yang selalu memberikan dorongan pada penulis
untuk selalu maju dan terus berjuang untuk menggapai masa depan yang lebih
baik. Terima kasih atas doa yang senantiasa selalu menemani langkahku.
5. Papa tersayang ku, yang selalu memberikanku motivasi untuk maju, untuk
selalu berusaha menjadi yang terbaik. “ I love u, my father….. I miss u “
6. Nenek dan Kakek ku tersayang yang senantiasa memberikan saran, doa dan
dukungan untuk penulis.
7. Eko Budi Kuncoro atas kritik, masukan dan semangat untuk segera
menyelesaikan tugas akhir ini, yang tak pernah lelah menjadi tempat keluh
kesahku.
Kakak dan adekku tersayang, mbak wiwik dan mas aan ( kakak terhebatku ) yang
selalu menemaniku, yang selalu menjadi tempatku berkeluh kesah. Buat
vii
viii
ix
x
DAFTAR ISI
Halaman
HALAMAN JUDUL ............................................................................................ i
HALAMAN JUDUL ( DALAM B.INGGRIS ) ................................................. ii
HALAMAN PERSETUJUAN PEMBIMBING ................................................ iii
HALAMAN PENGESAHAN .............................................................................. iv
INTISARI ............................................................................................................. v
ABSTRACT .......................................................................................................... vi
KATA PENGANTAR .......................................................................................... vii
PERNYATAAN KEASLIAN KARYA .............................................................. ix
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS ........................................... x
DAFTAR ISI......................................................................................................... xi
DAFTAR GAMBAR ............................................................................................ xiv
DAFTAR TABEL ................................................................................................ xv
DAFTAR LAMPIRAN ........................................................................................ xvi
PDI, PSMRS, PSP, PYC, PKPKY, PKBRS, BMKK, IDI, PDE, komite bidang
diklat, komite gerejani, komite dana pension YAKKUM, komite medis.
7. Kategori Operasional
Terdiri dari dapur, instansi gizi, petrollena, ruang diklat, kantor
elektromedik, ruang senam & fitness, studio, unit jahit, liner bersih, liner kotor,
ruang operasional, PSPM dan ruang rapat.
8. Kategori Staff Administrasi
Terdiri dari loket administrasi, ruang akutansi & keuangan, loket askes,
kantor piutang.
9. Kategori ATM
Terdiri dari ATM BRI, kas BRI, kas Lippo Bank dan kas BPD DIY.
10. Kategori Fasilitas Umum
Terdiri dari toilet, café, lift, tempat layanan informasi dan mini market.
11. Kategori Lain-lain
Terdiri dari unit perawatan ginjal dan ruang cuci darah, ruang bersalin,
ruang pemulihan dan ruang fisioteraphi.
33
3.7.2 Desain Output
Desain output dari program bantu ini adalah berupa jarak terpendek dan
jalur terpendek dari pintu masuk sampai ke ruangan yang ingin di kunjungi oleh
pengguna program bantu yang disertai dengan denah RS.Bethesda.
3.8 Perancangan Proses
Untuk menemukan jalur terpendek ke setiap ruangan yang ada di rumah
sakit ini, digunakan suatu algoritma pencarian jarak terpendek yaitu algoritma
dijkstra. Untuk mengimplementasikan algoritma ini, maka denah rumah sakit di
ubah ke dalam bentuk graf. Data jarak dan ruangan didapat dari pihak Bethesda
Yogyakarta berbentuk denah rumah sakit dengan skala 1 : 125 cm untuk gedung
lantai 1 kecuali gedung IGD dan IRJ, karena untuk gedung IRJ dan IGD di
berikan data asli tanpa skala.
Dalam pengimplementasian perubahan denah rumah sakit ke dalam graf
ada beberapa aturan yang dipakai, antara lain :
1. Setiap ruangan, pertigaan dan perempatan dijadikan suatu titik.
2. Jika ruangan berupa ruang rawat inap pasien maka ada aturan berbeda untuk
ruang rawat inap pasien yang berupa paviliun dan bangsal. Hal ini disebabkan
karena untuk ruang rawat inap pasien yang berupa paviliun mempunyai pintu
masuk sendiri-sendiri untuk setiap pasiennya, sedangkan untuk ruang rawat
inap pasien yang berupa bangsal pintu masuk hanya 1. Aturan tersebut adalah
sebagai berikut :
34
Jika ruang rawat inap pasien yang dituju berupa bangsal maka titik
diletakan di pintu masuk ruangan.
Jika ruangan rawat inap pasien berupa paviliun maka titik diletakan di
ruang perawat paviliun tersebut.
3. Untuk ruangan selain ruang rawat inap pasien maka titik di letakan di pintu
masuk ruangan tersebut.
3.8.1 Pembuatan Matriks Jarak
Dalam menentukan jarak antar titik pada graf, langkah yang dilakukan
adalah dengan mengukur jarak pada denah rumah sakit yang berskala 1 : 125 cm
untuk gedung lantai 1 kecuali gedung IGD dan IRJ, untuk gedung IGD dan IRJ
dihitung tanpa skala karena data yang di dapat sudah berupa data asli tanpa skala.
Untuk jalur yang hanya searah maka pada tabel jarak hanya ada jarak
antara titik awal ke titik tujuan, tidak sebaliknya, tetapi untuk jalur yang 2 arah,
maka pada tabel jarak akan ada jarak antara titik awal ke titik tujuan dan
sebaliknya tetapi titik tujuan dijadikan titik awal dan titik awal dijadikan titik
tujuan. Jarak antar titik dikatakan ∞ jika kedua titik tidak terhubung langsung.
Jika kedua titik terhubung langsung maka dalam field jarak pada tabel jarak akan
diisi jarak antara kedua titik tersebut. Tabel jarak untuk graf rumah sakit Bethesda
nampak pada Lampiran B.
35
3.8.2 Pembagian Ruang Lingkup
Untuk efisiensi pengimplementasian algoritma dijkstra pada program,
maka dari keseluruhan graf rumah rumah sakit Bethesda Yogyakarta akan dibagi
menjadi 9 ruang lingkup seperti yang nampak pada gambar 3.12, 3.13 dan 3.14,
yaitu ruang lingkup A, B, C, D, E, F, G dan H, I, dengan pembagiannya sebagai
berikut :
Ruang Lingkup A
Meliputi sebagian besar paviliun ruang rawat inap pasien yang dimulai dari
pintu masuk samping paviliun Srikandi sampai dengan pertigaan selasar utama
paviliun Dahlia.
Ruang Lingkup B
Meliputi paviliun Edelweis, ruang pertemuan I dan semua ruangan yang
dimulai dari pintu masuk pengunjung pasien rawat inap sampai dengan pertigaan
selasar utama.
Ruang Lingkup C
Meliputi semua ruangan di gedung IRJ dan IGD lantai 1 yang dimulai dari
pintu masuk IRJ sampai dengan selasar belakang IRJ.
Ruang Lingkup D
Meliputi semua ruangan bangsal pasien rawat inap dari A sampai N, ruang
jenazah dan parkir ambulans, yang dimulai dari dapur kecil.
Ruang Lingkup E
Meliputi PSPM, dapur besar dan selasar penghubung antara ruang lingkup B,
C dan D.
36
Ruang Lingkup F
Meliputi semua ruangan rawat inap pasien I sampai VII kecuali VI, ruang
Galilea, yang dimulai dari selasar utama sampai dengan selasar utama paviliun
Dahlia.
Ruang Lingkup G
Meliputi ATM BRI dan minimarket
Ruang Lingkup H
Meliputi semua ruangan di gedung IRJ dan IGD lantai 2
Ruang Lingkup I
Meliputi semua ruangan di gedung IRJ dan IGD lantai 3
Untuk efisiensi penerapan algoritma dijkstra, maka di buat aturan
pembagian ruang lingkup pengecekan titik berdasarkan ruang lingkup pintu
masuk dan ruang lingkup titik tujuan. Pada aturan pembagian ruang lingkup
pengecekan titik, ada beberapa contoh kasus yang menyebabkan ruang lingkup
pengecekan titik dipersempit, karena pada kenyataannya ada ruang lingkup yang
sebenarnya tidak masuk ke dalam jalur terpendek. Contoh-contoh kasusnya dapat
di lihat pada table 3.2 di bawah ini.
Titik Asal Titik Tujuan Ruang Lingkup Jalur Terpendek
A1 C3 A,B,C,E,F
A1 D4 A,B,D,E,F
B1 C24 B,C,G
B1 E6 B,E
B1 D4 B,D,E
37
C1 B31 B,C,G
C1 F2 B,C,E,F
C1 A12 A,B,C,E,F
Tabel 3.2 Tabel Contoh Kasus Penyempitam Ruang Lingkup Pengecekan Titik
Dari beberapa contoh kasus pada table 3.2 di atas, maka aturan pembagian
pengecekan titik nampak pada tabel 3.3 dibawah ini.
Ruang Lingkup Pintu
Masuk
Ruang Lingkup Titik
Tujuan
Ruang Lingkup Pengecekan
Titik
A A A
A B AB,F
A C A,B,C,E,F
A D A,B,D,E,F
A E A,B,E,F
A F A,F
A G A,B,F,G
A H A,B,C,E,F,H
A I A,B,C,E,F,H,I
B A A,B,F
B B B
B C B,C,G
B D B,D,E
38
B E B,E
B F B,F
B G B,G
B H B,C,G,H
B I B,C,G,H,I
C A A,B,C,E,F
C B B,C,G
C C C
C D C,D,E
C E C,E
C F B,C,E,F
C G C,G
C H C,H
C I C,H,I
Tabel 3.3 Tabel Aturan Ruang Lingkup Pengecekan Titik
39
C 1
C 7 C8
C 36
C 14
C 10
C 11
C13
C 34C 30
C 31C 35
C 3
C 6
C 20
C 29C 28 C33
C 23C 27
C 24
C 32
C 22 C 38
C 17
C 16
C15
C 26
C 21
D 9
E5
E 7
E2
E1
E3
D 1
D 2
D 3
D 12
D 8
D 10
D15
D 18
D 16
D 13
D 30
D 11
D 31
D 27
D 25
D 24
D23
D 26
D 20
D 22
D 19
D 21
D 5
D 4
D 7
D 6
D 29
D 28
D 17
B28
B27 B26 B 25
B12
B 11 B13B 10
B 4
B3
B1
B 2
B7B6
B8
B 9
B14
B24
B21
B22B23
B15
B 30
B29
B 31
B16
B18
F1
F2
F3
F4
F5
F6F7
F9
F11
F12
F8
A 19
F10
A28A29
A 26
A 13
A 8
A 17
A 9
A 11
A 14A 16
A 15
A 12
A 2
A 5
A 7
A 10
A 6
A 25
A 21
A 22A 23
A 18
A24A 27
A 20
A 1
A 4
B 17
B 19
B20
F13
A 3
C 19
C25
B5
E4
D 14
E 6
C 5
C 37
C2G 1
G 2
D 32
R uang Lingkup A
R uang Lingkup F
R uang L ingkup B
R uang Lingkup G
R uang Lingkup C
R uang Lingkup E
R uang Lingkup D
A 30A 31
C 18
C 4 C 12
C 9
D 33D 34
F14
F15
Gambar 3.12 Graf Keseluruhan Rumah Sakit Bethesda Lantai 1
= Tangga dan Lift yang menghubungkan antar lantai = Pintu Masuk
40
H1
H2
H3
H13
H10
H7
H8H9
H6H4
H5
H11
H15
H31
H17 H18
H19
H20
H21
H22
H23
H24
H25 H26H27
H28H29
H30
H41
H33
H34
H35
H36H37H38H39
H40
H14
H12
H32
H16
Ruang Lingkup H
H42
H43
Gambar 3.13 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 2
= Tangga dan Lift yang menghubungkan antar lantai gedung IGD dan IRJ
41
I1
I2
I3
I4
I5
I6
I7I8I9I10
I11
I12
I13 I14I15
I16
I17
I18
I19
I20
I21
I22
I23
I24
I25
I26I27
I28
I29
I30
I31 I32
Ruang Lingkup I
I33
Gambar 3.14 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 3
= Tangga dan Lift yang menghubungkan antar lantai gedung IGD dan IRJ
BAB IV
IMPLEMENTASI DAN ANALISA HASIL
Pada bab ini akan dibahas tentang implementasi pembuatan program bantu
pencarian lokasi di RS. Bethesda Yogyakarta dengan menggunakan bahasa
pemograman Visual Basic 6.0 dan databasenya menggunakan MySQL 5.0. Pada
bab ini juga akan dibahas tentang analisa dari program bantu tersebut dan
pembahasannya.
4.1 Implementasi Program
Program bantu ini dibuat untuk membantu pengunjung RS. Bethesda
untuk memperoleh jalur terpendek dalam mencari ruangan yang ingin dikunjungi
dan mempermudah pihak rumah sakit dalam memberikan pelayanan yang lebih
baik dan mudah untuk pengunjung maupun pengguna jasa RS. Bethesda.
4.1.1 Implementasi Algoritma Dijkstra
Pada bagian ini akan dibahas beberapa listing program yang berhubungan
dengan implementasi algoritma dijkstra dalam bahasa pemrograman Visual Basic
6.0. Untuk efisiensi pengimplementasian algoritma dijkstra maka di buat strore
prosedur algoritma_dijkstra() yang akan dipanggil dalam bahasa pemrograman
Visual Basic 6.0.
42
43
4.1.1.1 Menentukan titik awal
Titik awal yang dimaksud disini adalah kode pintu masuk yang telah
dipilih oleh pengguna program bantu ini. Pada program bantu ini di sediakan 3
pintu masuk, yaitu pintu masuk IGD & IRJ, pintu masuk pengunjung pasien rawat
inap dan pintu masuk samping paviliun Srikandi. Dalam penentuan titik awal ini
digunakan event click() pada kontol option button berikut listing programnya :
Private Sub OptIgd_Click() TextIgd = "C1" kodeawal1 = TextIgd awal1 = Left(kodeawal1, 1) End Sub Private Sub OptPasien_Click() TextIgd = "B1" kodeawal1 = TextIgd awal1 = Left(kodeawal1, 1) End Sub Private Sub OptSamping_Click() TextIgd = "A1" kodeawal1 = TextIgd awal1 = Left(kodeawal1, 1) End Sub
Keterangan :
Pada tiap form kategori ruangan dipasang event click() pada ke 3 kontrol
option button, dimana kontrol option button ini digunakan untuk menampung ke
tiga pilihan pintu masuk yang di ada.
Ketika salah satu kontrol option button di click maka TextIgd ( kontrol
TextBox yang digunakan untuk menampung kode_ruangan dari pintu masuk yang
dipilih ) akan di isi dengan kode_ruangan pintu masuk yang telah di pilih oleh
pengguna program bantu ini. Kemudian isi dari TextIgd akan ditampung dalam
variabel kodeawal1 yang merupakan variabel titik awal yang akan digunakan
dalam iterasi algoritma djikstra, selanjutnya kodeawal1 ini akan dipotong 1 huruf
44
dari depan yang disimpan dalam variabel awal1 yang digunakan dalam penentuan
ruang lingkup.
4.1.1.2 Menentukan titik tujuan
Titik tujuan yang dimaksud disini adalah kode ruangan yang ingin
dikunjungi oleh pengguna program bantu ini, berikut listing program untuk
menetukan titik tujuan :
Set rs = New ADODB.Recordset rs.Open " select * from ruangan where nama_ruangan='" & ComboAdministrasi & "'", conn If Not rs.EOF Then
If status_ruangan = 0 Then kode = rs("kode_ruangan") kodeakhir1 = kode akhir = Left(kode, 1) Else MsgBox "Maaf, ruangan yang ingin di kunjungi
sedang di renovasi. . !!", vbCritical, "Error" ComboAdministrasi = "Pilih Ruang Administrasi
Yang Tersedia" CommandCari.Enabled = True CommandMenu.Enabled = True Exit Sub End If Else MsgBox "Silahkan pilih jenis ruang administrasi
terlebih dahulu. . !!", vbCritical, "Error" ComboAdministrasi = "Pilih Ruang Administrasi Yang
Tersedia" CommandCari.Enabled = True CommandMenu.Enabled = True Exit Sub End If Set rs = Nothing
Keterangan : Untuk memperoleh kode_ruangan dari ruangan yang telah di pilih oleh
pengguna program bantu ini digunakan query yang berfungsi untuk mengambil
data dari tabel ruangan yang nama ruangannya sama dengan nama ruangan yang
dipilih oleh pengguna program bantu pada kontrol combobox.
45
Pada penentuan titik tujuan ini, jika status ruangan yang ingin dituju oleh
pengguna program bantu ini adalah 1 ( yang berarti ruangan sedang di renovasi ),
maka program bantu ini akan memberikan informasi pada pengguna program
bantu bahwa ruangan yang ingin di kunjungi sedang di renovasi.
Data kode_ruangan yang dihasilkan dari query tersebut akan ditampung
dalam variabel kode, yang kemudian akan ditampung lagi pada variabel
kodeakhir1 yang merupakan variabel titik tujuan yang merupakan titik akhir
dalam iterasi algoritma dijksra, selanjutnya kode_ruangan tersebut akan dipotong
1 huruf dari depan yang ditampung dalam variable akhir, hal ini diperlukan untuk
menentukan ruang lingkup.
4.1.1.3 Menentukan ruang lingkup
Penentuan ruang lingkup berguna untuk mempercepat proses pengecekan
tiap titik, karena jika tidak dibagi kedalam beberapa ruang lingkup maka jumlah
titik yang di cek akan sangat banyak yaitu 227 titik, sehingga akan menyebabkan
proses pencarian jalur terpendek dengan algoritma dijkstra memakan waktu yang
relatif lama. Sehingga pada program bantu ini, graf RS. Bethesda dibagi menjadi 9
ruang lingkup. Untuk menentukan ruang lingkup maka dibuat store prosedur
untuk menentukan titik mana saja yang harus di cek dalam iterasi algoritma
dijkstra. Store prosedur untuk tiap titik asal dan titik tujuan yang berbeda juga
berbeda. Dimana aturan penentuan ruang lingkup harus sesuai dengan tabel aturan
pengecekan titik ruang lingkup yang dapat dilihat pada tabel 3.3 di halaman 37.
Berikut salah satu listing program store prosedur penentuan ruang lingkup :
46
DELIMITER $$; DROP PROCEDURE IF EXISTS `bethesda`.`lingkupA_A`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `lingkupA_A`(lingkup_awal varchar(1),lingkup_tujuan varchar(1)) BEGIN declare titik_lingkup varchar(4); declare jumlah int; declare x int default 1; declare cur1 cursor for select count(*) from ruangan
where Substring(kode_ruangan,1,1)=lingkup_awal OR Substring(kode_ruangan,1,1)=lingkup_tujuan;
declare cur2 cursor for select kode_ruangan from ruangan where substring(kode_ruangan,1,1)=lingkup_awal OR Substring(kode_ruangan,1,1)=lingkup_tujuan;
open cur1; open cur2; fetch cur1 into jumlah; set jumlah=jumlah+1; while x < jumlah do fetch cur2 into titik_lingkup; insert into titik values(x,titik_lingkup,1); set x =x+1; end while; CLOSE cur1; CLOSE cur2; END$$ DELIMITER ;$$
4.1.1.4 Iterasi algoritma dijkstra
Pada tahap ini ada beberapa tahap yang harus dilakukan untuk
mendapatkan jarak dan jalur terpendek dari pintu masuk sampai ke ruangan yang
ingin di kunjungi oleh penguna program bantu ini, berikut ini adalah tahap-tahap
iterasi algoritma dijkstra :
a. Menghitung jarak antara titik awal dengan semua titik-titik yang merupakan
titik yang termasuk dalam ruang lingkup hasil dari langkah3. Setelah di
dapatkan data jarak, maka semua data pada iterasi ini disimpan pada tabel
bantuan yaitu tabel iterasi_jarak. Berikut listing store prosedur nya:
47
set titik_terpilih=kode_asal; update titik set status1 = 0 where
kode_titik=titik_terpilih; select count(*) into jumlah from titik; set jumlah=jumlah+1; while x<jumlah do select kode_titik into in_kode_titik from titik where
nomor=x; select status1 into status_titik from titik where
nomor=x; if status_titik=1 then CALL ambil_jarak (kode_asal, in_kode_titik,
@jarak); select @jarak into in_jarak; insert into iterasi_jarak values(in_iterasiku,x,
kode_asal,in_kode_titik,in_jarak); set x=x+1; else insert into iterasi_jarak values (in_iterasiku,
x,kode_asal,in_kode_titik,999); set x=x+1; end if; end while; set kode_asalku=kode_asal;
b. Pengecekan apakah titik tujuan telah masuk kedalam himpunan titik terpilih.
Selama hasil pengecekan bernilai salah, berarti titik tujuan belum masuk ke
dalam himpunan titik terpilih dalam jalur terpendek. Sehingga akan dilakukan
2 langkah yaitu :
b1. Pilih titik terpilih yang termasuk dalam dalam ruang lingkup ( iterasi
terakhir ) dengan jarak terkecil. Berikut listing store prosedurnya :
if z>1 then select kode_titik into kode_asalku from
titik_terpilih where iterasi=in_iterasi; end if; call pilih_jaral_terpendek (in_iterasiku, @jarak,
@titik); select @jarak into in_jarak; set jarak_sementara=in_jarak; select @titik into in_titik; set titik_terpilih=in_titik; insert into titik_terpilih values (in_iterasiku,
in_titik,in_jarak); set waktu_akhir_iterasi=curtime();
48
set waktu_iterasi = timediff (waktu_akhir_iterasi, waktu_awal_iterasi);
insert into detail_waktu_iterasi values (kode_asalku, in_titik,waktu_awal_iterasi,waktu_akhir_iterasi);
set waktu_awal_iterasi=curtime(); if in_iterasiku=1 then set total_waktu_iterasi=waktu_iterasi; else set total_waktu_iterasi1=waktu_iterasi; set total_waktu_iterasi = addtime
(total_waktu_iterasi, total_waktu_iterasi1); end if; insert into waktu_iterasi values (in_iterasiku,
kode_asalku,in_titik,waktu_iterasi); set in_iterasi=in_iterasiku; set in_iterasiku=in_iterasiku+1; update titik set status1 = 0 where kode_titik =
titik_terpilih;
b2. Ruang lingkup titik – titik yang harus di cek akan dikurangi dengan titik
terpilih hasil dari langkah c1. Selanjutnya akan dilakukan lagi pengecekan
jarak dari titik terpilih hasil dari langkah c1 dengan semua titik yang masih
termasuk dalam ruang lingkup. Setelah di dapatkan data jarak, maka
semua data pada iterasi ini disimpan pada tabel bantuan yaitu tabel
iterasi_jarak. Berikut listing program pengecekan jarak tersebut :
declare cur1 cursor for select count(*) from titik; declare cur2 cursor for select kode_titik from titik;
open cur1; open cur2; fetch cur1 into jumlah; set x=1; set jumlah=jumlah+1; while x < jumlah do fetch cur2 into in_kode_titik; select status1 into status_titik from titik
where nomor=x; if status_titik=1 then call ambil_jarak2 (in_iterasi,
kode_asalku,in_kode_titik,@jarak); select @jarak into in_jarak2; call ambil_jarak3 (titik_terpilih,
in_kode_titik,jarak_sementara,@jarak); select @jarak into in_jarak;
49
if in_jarak2>in_jarak then insert into iterasi_jarak values
set x =x+1; end if; end while; CLOSE cur1; CLOSE cur2;
Langkah c1 dan c2 akan terus dilakukan selama titik tujuan tidak sama dengan
titik terpilih.
c. Jika iterasi telah dihentikan maka akan di telesuri jalur terpendek dari pintu
masuk sampai dengan ke ruangan yang ingin dikunjungi oleh pengguna
program bantu ini. Dalam penelusuran jalur terpendek ini digunakan listing
program sebagai berikut :
select count(*) into jumlah_jalur from titik_terpilih; select jarak into jarak_akhir from titik_terpilih where
iterasi=jumlah_jalur; select kode_titik into jalur_tujuan from titik_terpilih
where iterasi=jumlah_jalur; set kode_awal_jalur=jalur_tujuan; insert into sementara values(a,jalur_tujuan); set z=1; while jumlah_jalur>1 do set iterasi_sebelum=jumlah_jalur-1; if a=1 then set in_iterasi_sebelum=jumlah_jalur-2; select kode_titik into jalur_asal from
titik_terpilih where iterasi=in_iterasi_sebelum; else set in_iterasi_sebelum=jumlah_jalur-2; select kode_titik into jalur_asal from
titik_terpilih where iterasi=in_iterasi_sebelum; end if;
50
select jarak into jarak_jalur from iterasi_jarak where iterasi=iterasi_sebelum and kode_ruangan_asal = jalur_asal and kode_ruangan_tujuan=jalur_tujuan;
set jumlah_jalur=jumlah_jalur-1; if jarak_jalur <> jarak_akhir then set waktu_akhir_jalur=curtime(); set waktu_jalur =timediff (waktu_akhir_jalur,
waktu_awal_jalur); set waktu_awal_jalur=curtime(); set a=a+1; select iterasi into iterasi_titik from
titik_terpilih where kode_titik=jalur_asal; set iterasi_titik=iterasi_titik+1; select kode_titik into jalur_tujuan_sementara
from titik_terpilih where iterasi=iterasi_titik; set kode_akhir_jalur=jalur_tujuan_sementara; insert into sementara values
(a,jalur_tujuan_sementara); select jarak into jarak_jalur_sementara from
titik_terpilih where kode_titik = jalur_tujuan_sementara;
set jarak_akhir=jarak_jalur_sementara; set jalur_tujuan=jalur_tujuan_sementara; if kode_akhir_jalur <> kode_tujuan then
insert into waktu_penentuan_jalur values (k,kode_awal_jalur,kode_akhir_jalur,waktu_jalur);
insert into waktu_iterasi_titik values(kode_awal_jalur,kode_akhir_jalur,waktu_awal_jalur,waktu_akhir_jalur);
end if; if k=1 then set total_jalur=waktu_jalur; else set total_jalur1=waktu_jalur; set total_jalur = addtime (total_jalur,
total_jalur1); end if; set k=k+1; set kode_awal_jalur=kode_akhir_jalur; end if; end while;
4.1.2 Implementasi Pembuatan Output
Pada program bantu ini terdapat 2 macam output yang di hasilkan yaitu
output yang berupa informasi mengenai jarak terpendek ( dalam satuan meter )
dan jalur terpendek ( kode ruangan dan nama ruangan ) dari pintu masuk sampai
51
ke ruangan yang ingin di kunjungi oleh pengguna program bantu ini, yang di
tampilkan dalam bentuk kalimat dan output visualisasi yang berupa gambar denah
RS. Bethesda yang disertai dengan jalur terpendek dari pintu masuk sampai ke
ruangan yang ingin di kunjungi oleh pengguna program bantu ini, yang
merupakan hasil dari implementasi algoritma dijkstra.
4.1.2.1 Output Berupa Kode Ruangan dan Nama Ruangan Jalur Terpendek
Untuk menampilkan kode ruangan dan nama ruangan dari jalur terpendek
yang telah di hasilkan dari implementasi algoritma dijkstra maka digunakan
function penentuan jalur() untuk memecah array jalur() yang penampung jalur
terpendek hasil dari implementasi algoritma dijkstra. Berikut listing program
function penentuan jalur():
Public Function penentu_jalur() c = 1 e = 1 Set rs = New ADODB.Recordset rs.Open " select count(*) as jumlahku from sementara", conn If Not rs.EOF Then jumlah = rs("jumlahku") b = jumlah End If Set rs = Nothing While jumlah > 0 If jumlah = b Then Set rs = New ADODB.Recordset rs.Open " select * from sementara where nomor='" &
jumlah & "' ", conn If Not rs.EOF Then jalurterpilih = rs("kode_titik") jalur_awal = jalurterpilih End If Set rs = Nothing Set rs = New ADODB.Recordset rs.Open " select * from ruangan where kode_ruangan='"
& jalurterpilih & "'", conn If Not rs.EOF Then ruang = rs("nama_ruangan") jalurterpendek = c & ". " & jalurterpilih & " ( "
& ruang & " )" jumlah = jumlah - 1
52
End If Set rs = Nothing Else Set rs = New ADODB.Recordset rs.Open " select * from sementara where nomor='" &
jumlah & "'", conn If Not rs.EOF Then jalurterpilih = rs("kode_titik") jalur_akhir = jalurterpilih End If Set rs = Nothing Set rs = New ADODB.Recordset
rs.Open " select * from ruangan where kode_ruangan='" & jalurterpilih & "'", conn
If Not rs.EOF Then ruang = rs("nama_ruangan") 'jalur_terpilih1(c) = jalurterpilih jalurterpendek = jalurterpendek & vbCrLf & c & ".
" & jalurterpilih & " ( " & ruang & " )" jumlah = jumlah - 1 'd = c - 1 End If Set rs3 = Nothing End If If c >= 2 Then If c = 2 Then jumlah1 = jumlah + 3 Else jumlah1 = jumlah + 2 End If Set rs = New ADODB.Recordset
rs.Open " select * from sementara where nomor='" & jumlah1 & "'", conn
If Not rs.EOF Then jalurterpilih = rs("kode_titik") jalur_awal = jalurterpilih End If Set rs = Nothing conn.Execute "call spinjalur('" & e & "','" &
jalur_awal & "', '" & jalur_akhir & "') " e = e + 1 End If c = c + 1 Wend hasil_akhir = "Jalur yang terpendek yang bisa dilewati adalah
" & vbCrLf & jalurterpendek End Function
53
Keterangan :
a) Untuk memecah data titik terpilih pada tabel bantu sementara maka digunakan
perulangan selama semua titik terpilih belum selesai di cek. Dalam
perulangan ini, pada iterasi awal dibuat query untuk mengambil data dari tabel
ruangan dengan kode_ruangannya adalah titik terpilih pada jalur terpendek
yang sedang di cek dalam perulangan ini. Dan variabel jalur terpendek (
penampung hasil yang akan ditampilkan pada output ) akan di isi dengan
jumlah titik yang telah di cek di ikuti kode ruangan dan nama ruangan dari
titik yang sedang di cek dalam perulangan ini.
b) Kemudian dilanjutkan ke perulangan berikutnya untuk mengecek titik
berikutnya, dimana pada perulangan ini dibuat juga query yang sama seperti
pada query sebelumnya. Pada perulangan ini variabel jalur terpendek (
penampung hasil yang akan ditampilkan pada output ) akan di isi dengan isi
dari variabel jalur terpendek hasil dari perulangan sebelumnya ditambah
dengan jumlah titik yang telah di cek di ikuti kode ruangan dan nama ruangan
dari titik yang sedang di cek dalam perulangan ini.
c) Dilakukan pemanggilan store prosedur spinjalur() untuk memasukan data jalur
dari titik yang di cek pada perulangan sebelumnya ke titik yang sedang di cek
pada perulangan saat ini ke dalam tabel bantu jalur yang akan digunakan
untuk membuat output berupa gambar denah RS. Bethesda yang di sertai
dengan jalur terpendeknya.
d) Perulangan akan dilanjutkan dengan melakukan langkah b dan d. Perulangan
akan dihentikan jika titik yang di cek adalah titik awal.
54
Hasil dari langkah diatas adalah urutan data jalur terpendek ( kode ruangan dan
nama ruangan) dari titik awal sampai dengan titik tujuan.
4.1.2.2 Output Berupa Denah RS. Bethesda Disertai Jalur Terpendek
Untuk mengimplementasikan visualisasi jalur terpendek hasil dari
implementasi algoritma dijkstra ke dalam bentuk gambar, dibutuhkan kontrol line
yang akan menunjukan jalur dari pintu masuk sampai ke ruangan yang ingin
dikunjungi oleh pengguna program bantu ini. untuk mengerakkan kontrol line
tersebut maka dibutukan kontrol timer. Berikut adalah langkah-langkah
pengimplementasian jalur terpendek ke bentuk gambar jalur terpendek pada denah
RS. Bethesda :
• Memecah tabel jalur yang menyimpan urutan jalur dari titik awal ke titik
tujuan. Data pada tabel jalur diambil per record untuk diambil data titik asal
dan titik tujuan jalur pertama, kontrol line titik asal dan titik koordinat ke 2
titik tersebut.
• Setelah di peroleh data tersebut maka kontrol line ini digerakan dari koordinat
titik asal sampai ke titik tujuan. Berikut listing program untuk menggerakkan
kontrol line tersebut :
If nama_line = "L69" Then Line69.BorderColor = vbRed Line69.BorderStyle = 1 Line69.BorderWidth = 3 If y1 < y2 Then
If Line69.y2 <> y2 Then If Line69.y2 < y2 Then Line69.y2 = Line69.y2 + 5 Else Line69.y2 = Line69.y2 - 5 End If End If
55
If Line69.y2 = y2 Then Line69.y2 = Line69.y2 If Line69.x2 > x2 Then Line69.x2 = Line69.x2 - 5 Else Line69.x2 = Line69.x2 + 5 End If If Line69.x2 = x2 Then Line69.x2 = Line69.x2 c = c + 1 End If End If Else If Line69.x2 <> x2 Then If Line69.x2 < x2 Then Line69.x2 = Line69.x2 + 5 Else Line69.x2 = Line69.x2 - 5 End If End If If Line69.x2 = x2 Then Line69.x2 = Line69.x2 If Line69.y2 > y2 Then Line69.y2 = Line69.y2 - 5 Else Line69.y2 = Line69.y2 + 5 End If If Line69.y2 = y2 Then Line69.y2 = Line69.y2 c = c + 1 End If End If End If
Keterangan :
Kontrol line titik awal akan di beri warna merah dengan ketebelan 3 agar
lebih mudah untuk dilihat. Kemudian akan dibandingkan apakah koordinat y2
titik asal lebih kecil dari koordinat y1 titik tujuan. Jika benar maka selama
koordinat kontrol line ini belum sampai ke koordinat y1 titik tujuan maka akan
dilakukan pengecekan apakah koordinat y2 kontrol line ini lebih besar dari
dari y1 koordinat titik tujuan maka koordinat y2 kontrol line ini akan ditambah
56
5, akan tetapi jika tidak lebih besar maka koordinat y2 kontrol line ini akan di
kurangi 5.
Kemudian jika koordinat y1 titik tujuan telah tercapai maka akan
dilakukan pengecekan untuk menggerakkan koordianat x2 kontrol line ini.
Sama seperti saat menggerakan koordinat y2 kontrol line untuk sampai ke
koordinat x1 titik tujuan maka jika koordinat x1 titik tujuan lebih besar dari
koordinat x2 kontrol line ini, koordinat x2 kontrol line ini akan ditambah 5
akan tetapi jika tidak lebih besar dari dari x1 koordinat titik tujuan maka
koordinat x2 kontrol line ini akan ditambah 5.
Jika koordinat x2 kontrol line ini telah mencapai koordinat x1 titik tujuan
maka perulangan untuk memecah tabel jalur yang menyimpan urutan jalur
dari titik awal ke titik tujuan dilanjutkan lagi sampai sudah tidak ditemukan
record lagi yang harus di cek.
4.2 Hasil Implementasi
Hasil dari implementasi pada sub bab 4.1 tersebut dapat di gambarkan
melalui capture – capture langkah-langkah penggunaan program bantu ini.
4.2.1 Menu Utama
Pada saat program bantu ini dipertama kali di eksekusi maka akan nampak
menu utama seperti pada gambar 4.1.
57
Gambar 4.1 Tampilan Menu Utama
Pada menu utama ini pengguna program bantu ini akan di beri informasi
tentang bagaimana langkah-langkah penggunaan program bantu ini sehinggga
dapat membantu menghindarkan pengguna program ini untuk melakukan
kesalahan saat menggunakan program bantu ini. Pada form ini juga ditawarkan
menu kategori ruangan yang di sediakan oleh program bantu ini. Jika pengguna
tidak mengetahui kategori ruangan mana yang sesuai dengan ruangan yang ingin
dikunjungi maka pengguna dapat memilih menu informasi untuk mendapatkan
kategori ruangan yang tepat untuk ruangan yang ingin dikunjunginya.
4.2.2 Menu Input Titik Awal dan Titik Tujuan
Saat pengguna program bantu ini memilih salah satu kategori ruangan
yang ditawarkan pada menu utama, maka gambar 4.2 dibawah ini merupakan
salah satu contoh tampilan menu kategori ruangan, yaitu kategori fasilitas umum.
58
Gambar 4.2 Tampilan Menu Untuk Kategori Fasilitas Umum
Pada form ini pengguna program bantu harus menentukan nama ruangan
yang ingin dikunjungi dengan memilih satu nama ruangan dari semua nama
ruangan yang telah di sediakan pada kontrol combobox. Selanjutnya pengguna
program bantu harus menentukan dari pintu masuk mana pengguna program bantu
tersebut masuk ke RS. Bethesda. Jika pengguna telah menentukan nama ruangan
yang ingin di kunjungi dan pintu masuk mana pengguna program bantu tersebut
masuk ke RS. Bethesda maka pilih tombol ”Cari” untuk diproses untuk
menghasilkan jarak terpendek dan jalur terpendek dari pintu masuk sampai
dengan ke ruangan yang ingin dikunjungi.
4.2.3 Tampilan Output
Ketika pengguna program bantu ini telah menentukan ruangan mana yang
ingin dikunjungi dan dari pintu masuk mana pengunjung itu masuk maka
59
pengguna program bantu ini tinggal memilih button cari sehingga akan muncul
output berupa jalur terpendek seperti yang ditujnjukan pada gambar 4.3 di bawah
ini.
Gambar 4.3 Tampilan Output Yang Berupa Gambar Denah RS. Bethesda
Dilengkapi dengan Jalur Terpendek
Pada form output ini akan nampak jalur terpendek dari pintu masuk yang
jika dilihat pada program yang sedang di eksekusi maka pintu masuk akan terlihat
kedip – kedip. Output gambar jalur terpendek pada denah RS.Bethesda ini akan
dibantu dengan output seperti pada gambar 4.4 ini untuk mengetahui kode
ruangan dan nama ruangan mana saja yang harus dilewati sesuai dengan gambar
output 4.3 diatas.
60
Gambar 4.4 Tampilan Output Jalur Terpendek Yang Berupa Kode Ruangan
dan Nama Ruangan
Jika output gambar jalur terpendek di tutup maka akan muncul form
seperti pada gambar 4.5. Hal ini bertujuan untuk membantu pengunjung jika
pengunjung lupa urutan jalur terpendek mulai dari tabel pintu masuk sampai ke
ruangan yang ingin dikunjungi. Pada form ini juga akan nampak jarak terpendek
dan waktu iterasi algoritma dijkstra.
61
Gambar 4.5 Tampilan Menu Ketika Output pada Gambar 4.3 Ditutup
4.3 Analisa hasil
4.3.1 Pengaruh Pembagian Ruang Lingkup
Pada pengimplementasian pencarian jalur terpendek ini, denah RS. Bethesda di
ubah menjadi suatu graf berarah . Setelah diubah menjadi graf maka dapat
dihitung jumlah titik yang ada pada graf tersebut yaitu 277 titik. Saat dilakukan
perhitungan algoritma djikstra dengan jumlah titik sebanyak itu maka proses
pencarian memakan waktu yang sangat lama sehingga diputuskan untuk membagi
graf tersebut menjadi 9 ruang lingkup seperti yang telah dijelaskan pada sub bab
3.8.2. Untuk mengetahui pengaruh sebelum graf RS. Bethesda dibagi menjadi 9
ruang lingkup dan sesudah dibagi 9 ruang lingkup, maka di buat percobaan seperti
dapat di lihat pada tabel 4.1.
62
No Titik
Awal
Titik
Tujuan
Waktu Iterasi
Dijkstra sebelum
dibagi menjadi 9
ruang lingkup
Waktu Iterasi
Dijkstra setelah
dibagi menjadi 9
ruang lingkup
Prosentase
waktu
pembagian
ruang lingkup
1 A1 A20 00:05:23 00:00:38 11,76 %
2 A1 B2 00:20:31 00:01:17 6,26 %
3 A1 C21 00:28:10 00:07:49 27.75 %
4 A1 D14 00:22:41 00:07:18 32,18 %
5 A1 E7 00:13:36 00:03:05 22,67 %
6 A1 F7 00:08:00 00:01:08 14,17 %
7 A1 G2 00:23:23 00:03:32 15,11 %
8 A1 H5 00:45:42 00:11:15 24,62 %
9 A1 I15 00:38:05 00:12:12 32,04 %
10 B1 A10 00:52:58 00:02:49 5,31 %
11 B1 B18 00:04:08 00:00:27 10,89 %
12 B1 C24 00:46:28 00:02:40 5,74 %
13 B1 D3 00:35:41 00:01:42 4,76 %
14 B1 E4 00:11:37 00:00:47 6,74 %
15 B1 F3 00:08:32 00:00:53 10,35 %
16 B1 G2 00:00:55 00:00:08 14,55 %
17 B1 H3 00:14:46 00:04:12 28,44 %
18 B1 I12 00:31:50 00:08:56 28,06 %
19 C1 A16 00:54:06 00:08:08 15.03 %
20 C1 B4 00:31:29 00:02:12 6.99 %
21 C1 C35 00:23:43 00:00:43 2,28 %
22 C1 D6 00:41:18 00:02:20 5,65 %
23 C1 E7 00:32:50 00:00:58 2,94 %
24 C1 F11 00:51:15 00:04:24 8,59 %
25 C1 G1 00:31:29 00:00:47 2,49 %
26 C1 H4 00:05:15 00:01:20 25,40 %
63
27 C1 I23 00:04:10 00:02:03 49,20 %
Rata-Rata penghematan waktu dengan pembagian ruang
lingkup
15,55 %
Tabel 4.1 Tabel Percobaan Pengaruh Pembagian Ruang Lingkup
Dari percobaan di atas dapat di dilihat bahwa perbedaan waktu iterasi
dijkstra sebelum dan sesudah dibagi menjadi 9 ruang lingkup sangat besar yaitu,
15,55%. Hal tersebut disebabkan karena pada pembagian ruang lingkup
RS.Bethesda telah ditentukan titik-titik mana saja yang harus di cek jaraknya pada
perhitungan iterasi algoritma dijkstra, sehingga dapat memperpendek waktu yang
di gunakan dalam iterasi algoritma djikstra.
4.3.2 Waktu Iterasi Algoritma Dijkstra
Untuk mengetahui faktor yang mempengaruhi waktu yang di perlukan
dalam pengimplementasian iterasi dijkstra, maka dilakukan percobaan yang dapat
di lihat pada tabel 4.2, dimana pada percobaan ini faktor yang diperhatikan ada 3
yaitu jumlah ruang lingkup, jumlah titik dan jarak titik asal ke titik tujuan.
No Titik
Asal
Titik
Tujuan
Jumlah Ruang
Lingkup
Jumlah Titik Waktu Jarak
1 A1 A12 1 31 00:00:27 106.6 m
2 C1 C13 1 38 00:00:47 53.1 m
3 B1 G2 2 33 00:00:08 25.6 m
4 A1 A5 1 31 00:00:06 34.9 m
5 B1 B5 1 31 00:00:04 14.8 m
6 B1 B26 1 31 00:00:26 73.4 m
Tabel 4.2 Tabel Percobaan Faktor Yang Mempengaruhi Waktu Iterasi Algoritma Dijkstra
64
Penjelasan Percobaan :
• Pada percobaan 1 dan 2 dapat dilihat bahwa jika jumlah ruang lingkup
sama akan tetapi jumlah titik berbeda maka dapat terlihat bahwa selisih
waktu yang diperlukan dalam iterasi dijkstra cukup besar yaitu 20 detik
pada contoh kasus ini.
• Pada percobaan 3 dan 4 dapat dilihat bahwa jika jumlah ruang lingkup
berbeda akan tetapi jumlah titik kurang lebih sama maka dapat terlihat
bahwa selisih waktu yang diperlukan dalam iterasi dijkstra sangat kecil,
yaitu 2 detik pada contoh kasus ini.
• Pada percobaan 5 dan 6 dapat dilihat bahwa jika titik asal dan titik tujuan
berada pada ruang lingkup yang sama akan tetapi jarak dari titik asal ke
titik tujuan berbeda cukup jauh, maka dapat terlihat bahwa selisih waktu
yang diperlukan dalam iterasi dijkstra cukup besar, yaitu 24 detik pada
contoh kasus ini.
Dari percobaan diatas, dapat disimpulkan bahwa, faktor yang mempengaruhi
waktu yang di perlukan dalam pengimplementasian iterasi algoritma dijkstra
adalah :
1. jumlah titik
2. jarak titik asal ke titik tujuan.
Jadi dapat dilihat bahwa faktor jumlah ruang lingkup tidak mempengaruhi waktu
pengimplementasian iterasi algoritma dijkstra.
BAB V
KESIMPULAN DAN SARAN
5.1 KESIMPULAN
Dari hasil penelitian yang telah dilakukan di RS. Bethesda Yogyakarta
untuk menemukan jalur terpendek dengan mengunakan algoritma Dijkstra, maka
dapat di ambil kesimpulan sebagai berikut ini :
1. Pada program bantu ini, pembagian graf menjadi beberapa ruang lingkup
sangat penting, untuk menentukan titik mana saja yang harus di cek
jaraknya dalam iterasi algoritma djikstra.
2. Penghematan waktu iterasi dijkstra sesudah dibagi menjadi 9 ruang
lingkup adalah 15,55 %.
3. Ada 2 faktor penting yang mempengaruhi waktu pengimplementasian
iterasi algoritma dijkstra pada program bantu ini, yaitu : jumlah titik dan
jarak titik asal ke titik tujuan.
4. Semakin banyak jumlah titik, maka waktu pengimplementasian iterasi
algoritma dijkstra semakin banyak.
5. Pada program bantu ini jumlah ruang lingkup tidak mempengaruhi waktu
pengimplementasian algoritma dijkstra.
5.2 SARAN
Saran yang dapat diberikan agar program bantu ini dapat di buat lebih baik
lagi adalah sebagai berikut :
65
66
1. Sebaiknya digunakan bahasa pemrograman lain untuk membuat tampilan
lebih user friendly.
2. Tampilan Output sebaiknya dibuat lebih menarik agar pengguna program
bantu merasa lebih nyaman saat menggunakan program bantu ini.
3. Sebaiknya di tambahkan fasilitas untuk mencari ruangan dengan titik awal
bukan pintu masuk, akan tetapi bergantung atas keinginan pengguna
program bantu ini.
DAFTAR PUSTAKA
-, Pengembangan Sistem Pakar Menggunakan Visul Basic, Andi Offset, 2003
Agnes Maria Polina, Jong Jek Siang, Kiat Jitu Menyusun Skripsi Jurusan
Informatika/Komputer, Andi Offset, 2005
Agus, M., Alam, J., MySQL Server dan Aplikasinya dalam Visual Basic 6 dan Delphi
versi 5, PT Elex Media Komputindo, 2005
Bayu Adhitya Pradhana, Makalah Studi Dan Implementasi Persoalan Lintasan
Terpendek Suatu Graf Dengan Algoritma Dijkstra Dan Algoritma Bellman-
Ford
J.Bismoko., A.Supraktiknya., Pedoman Penulisan Skripsi, Universitas Sanata
Dharma, 2004
Jong Jek Siang, Matematika Diskret Dan Aplikasinya Pada Ilmu Komputer, Andi
Offset, 2002
Jeffery, Whitten, L., Lonnie, Bentley, D., dan Kevin, C.Ditman., Metode Desain dan
Analisis Sistem, Andi Offset, 2004
LPKMB MADCOMS, Panduan Pemrograman dan Referensi Kamus Visual Basic
6.0, Andi Offset, 2006
LAMPIRAN A
TABEL RUANGAN
1
Lampiran A : Tabel Ruangan Keterangan Kategori Ruangan :
B3 Tempat Informasi Pusat U 21420 4815 0 L50 B4 Ruang PDE S 21735 5190 0 L51 B5 Tempat Map Rs.Bethesda U 21180 5040 0 L52 B6 Farmasi Pusat Pasien Rawat Inap F 20505 5460 0 L53 B7 Ruang Petrollena O 21135 5355 0 L54 B8 Ruang Operasional O 20400 6240 0 L55 B9 Kas BRI Ruang Lingkup B KA 20400 6600 0 L56 B10 Pertigaan Lab Mikrobiologi 1 21645 6870 0 L57 B11 Toilet Umum Samping Lab Mikrobiologi U 22440 6795 0 L58 B12 Pertigaan Lab Mikrobiologi 2 22680 6870 0 L59 B13 Laboratorium Mikrobiologi L 23280 6720 0 L60 B14 Pertigaan Samping Kas BRI 20595 6840 0 L61 B15 Pertigaan Depan Pav.Edelweys 19575 6840 0 L62 B16 Ruang Fisioteraphi Pasien Rawat Inap X 18825 4635 0 L64 B17 Kantor Elektromedik O 18345 4860 0 L63 B18 Paviliun Edelweys PV 17460 6840 0 L65 B19 Depan Kantor Elektromedik 18345 4635 0 L66 B20 Unit Perawatan Ginjal\Ruang Cuci Darah X 17895 4860 0 L67 B21 Loket Askes & Kantor Piutang AD 21540 7140 0 L68 B22 Pojok Petrollena 21630 7800 0 L69 B23 Pertigaan Petrollena 21150 7800 0 L70 B24 Laboratorium Radiologi L 20595 7890 0 L71 B25 Pertigaan Lab Klinik 1 22680 8220 0 L72 B26 Laboratorium Klinik L 22110 8310 0 L73 B27 Pertigaan Lab Klinik 21150 8220 0 L74 B28 Pertigaan Selasar Utama 21150 10125 0 L75 B29 Pertigaan Selasar Utama Ruang Pertemuan I 19605 10125 0 L76 B30 Pertigaan Ruang Pertemuan I 19605 8940 0 L77 B31 Ruang Pertemuan I O 19245 8940 0 L78 C1 Pintu Masuk Instansi Rawat Jalan 28395 4395 0 L79 C2 Pintu Masuk Instansi Gawat Darurat I 25365 4545 0 L80 C3 Toko U 28920 4620 0 L81 C4 Fotocopy U 27990 4665 0 L82
3
C5 Kas Lippo Ruang Lingkup C KA 28980 4905 0 L83 C6 Kas BRI Ruang Lingkup C KA 28980 5235 0 L84 C7 Medical Record Gedung IRJ Lantai 1 F 28410 5655 0 L85 C8 Tangga 1 Gedung IRJ Lantai 1 29190 5835 0 L86
C9 Laboratorium Patologi Klinik Gedung IRJ Lantai 1
L
29910
5595
0
L87
C10 Perempatan VIDE 1 B 30780 5730 0 L88 C11 Klinik Kebidanan K 30945 5070 0 L89 C12 Klinik Fisioterapi K 31455 5070 0 L90 C13 Toilet Umum 1 Gedung IRJ Lantai 1 U 31710 5490 0 L91 C14 Klinik Saraf K 31515 6150 0 L92 C15 Perempatan VIDC 1 B 27720 5820 0 L93 C16 Lift Gedung IRJ Lantai 1 Li 27390 5820 0 L94 C17 Farmasi Rawat Jalan F 26775 5385 0 L95 C18 Kas BPD DIY KA 26490 5640 0 L96 C19 Tangga 2 Gedung IRJ Lantai 1 26085 5640 0 L97 C20 Tempat Pendaftaran Pasien IGD I 25815 5040 0 L98 C21 Pertigaan VIDC 1 A 25935 5820 0 L99 C22 Pertigaan VIDC 1 C 25935 7125 0 L100C23 Ruang IRD I 25815 7650 0 L101C24 Ruang Kepala IRD S 26070 7680 0 L102C25 Ruang Dokter Jaga Gedung IRJ Lantai 1 S 26625 7230 0 L103C26 Unit DPK S 27135 7230 0 L104C27 Tangga 3 Gedung IRJ Lantai 1 27525 7230 0 L105C28 Perempatan VIDC 1 D 27720 7140 0 L106C29 Ruang Sekretariat PPKT RSB S 28035 6990 0 L107C30 Ruang Sector Fotocopy Gedung IRJ Lantai 1 U 28440 6990 0 L108C31 Ruang OPS S 29760 7215 0 L109C32 Klinik Bedah K 28110 7920 0 L110C33 Perempatan VIDE 1 D 30780 7140 0 L111C34 Klinik Penyakit Dalam K 32010 7140 0 L112C35 Ruang Pemulihan X 31290 7740 0 L113
C36 Toilet Umum Samping Klinik Penyakit Dalam Gedung I
U
27630
7800
0
L114
C37 Perempatan VIDE 1 A 28995 5835 0 L115C38 Perempatan VIDE 1 C 28995 7140 0 L116D1 Pojok Dapur Kecil 34645 10065 0 L117D2 Pertigaan Selasar Utama Ruang H 25515 10065 0 L118D3 Instansi Gizi O 24360 11955 0 L119D4 Pertigaan IMC 27000 10065 0 L120D5 Ruang A / IMC PB 27000 10800 0 L121D6 Ruang Doa U 28035 9720 0 L122D7 Pertigaan Selasar Utama Ruang Doa 28035 10065 0 L123D8 Pertigaan Selasar Utama Ruang B 28515 10065 0 L124D9 Ruang N PB 29325 10065 0 L125
4
D10 Ruang B PB 28620 11475 0 L126D11 Unit Jahit O 24360 13020 0 L127D12 Perempatan Ruang H 25515 12825 0 L128D13 Liner Bersih O 24360 15345 0 L129D14 Ruang H PB 26310 12720 0 L130D15 Pertigaan Ruang Penyuluhan 25515 14730 0 L131D16 Ruang Tunggu Daerah D U 25200 14730 0 L132D17 Pertigaan Ruang J 25515 16005 0 L133D18 Pertigaan Liner Bersih 24480 16005 0 L134D19 Ruang C PB 28425 14160 0 L135D20 Ruang D PB 28635 14160 0 L136D21 Ruang F PB 28635 16950 0 L138D22 Ruang E PB 28440 16950 0 L137D23 Pertigaan Ruang G 28500 17790 0 L139D24 Pojok Ruang G 28500 18345 0 L140D25 Pertigaan Lab Patologi & Anatomi 27225 17790 0 L142D26 Ruang G PB 29760 18435 0 L141D27 Laboratorium Patologi & Anatomi L 26730 18615 0 L144D28 Pintu Masuk Parkir Ambulans 24480 17790 0 L145D29 Liner Kotor O 24360 17340 0 L148D30 Ruang PSP O 22560 18525 0 L147D31 Ruang Jenazah O 25485 19590 0 L149D32 Ruang J PB 26340 16005 0 L150D33 Depan Lab. Patologi dan Anatomi 27225 18615 0 L143D34 Parkiran Mobil Ambulans O 24480 18525 0 L146
E1 Pertigaan Selasar Utama Ruang Pengawas Perawat
22650
10125
0
L151
E2 Ruang Piket Pengawas Perawat 22650 8895 0 L152E3 Pertigaan PSPM 23640 10125 0 L153E4 PSPM O 23640 10680 0 L154E5 Pertigaan Selasar Utama IRJ 24045 8895 0 L155E6 Selasar Belakang IRJ 25920 8895 0 L156E7 Dapur Besar O 24045 10155 0 L157F1 Administrasi Pasien Rawat Inap AD 19335 10035 0 L158F2 IBS K 19335 10800 0 L159F3 Kas BRI KA 18855 10035 0 L160F4 Perempatan Galilea 15945 10170 0 L161F5 Ruang Galilea PB 16035 11460 0 L162F6 Ruang I PB 10065 9000 0 L163F7 Ruang III PB 15840 9000 0 L164F8 Ruang Bersalin X 15945 8265 0 L165F9 Pojok Pav.Edelweis 17460 8295 0 L166F10 Pertigaan Ruang VII 14235 10170 0 L167F11 Ruang VII PB 14235 9615 0 L168F12 Pertigaan Ruang IV 12495 10170 0 L169
5
F13 Ruang IV PB 12495 10830 0 L170F14 Pertigaan Ruang Bayi 13020 10170 0 L171F15 Ruang Bayi PB 13020 9510 0 L172G1 ATM A 23595 4560 0 L167G2 Mini Market U 23400 4665 0 L168H1 Lift Gedung IRJ Lantai 2 Li 6720 3405 0 L1 H2 Perempatan VIDC B A Gedung IRJ Lantai 2 7485 3195 0 L2
H3 Satelit Farmasi Rawat Jalan Gedung IRJ Lantai 2
F
4920
2865
0
L3
H4 Kas BRI Gedung IRJ Lantai 2 KA 7320 2250 0 L4 H5 Klinik Laktasi K 7320 1290 0 L5 H6 Tangga 2 Gedung IRJ Lantai 2 4050 2865 0 L6 H7 Pertigaan VIDC 2 A Gedung IRJ Lantai 2 3600 3195 0 L7 H8 Klinik Paru K 2640 1905 0 L8
H9 Ruang Pertemuan & Perawatan Gedung IRJ Lantai 2
O
1575
2250
0
L9
H10 Toilet Umum 1 Gedung IRJ Lantai 2 U 1575 2640 0 L10 H11 Pojok Klinik Kulit 3600 4605 0 L11 H12 Klinik Kulit K 3165 4605 0 L12 H13 Klinik Gigi & Mulut K 1590 4605 0 L13 H14 Klinik Alergi K 1215 5895 0 L14 H15 Klinik THT K 1320 6360 0 L15 H16 Audio Metri 2010 6360 0 L16 H17 Klinik Mata K 3315 6360 0 L17 H18 Poliklinik Kartini K 4320 6360 0 L18 H19 Pertigaan VIDC 2 C Gedung IRJ Lantai 2 3600 6015 0 L19 H20 Tangga 3 Gedung IRJ Lantai 2 7080 6360 0 L20 H21 Pertigaan VIDC 2 D Gedung IRJ Lantai 2 7485 6015 0 L21 H22 Ruang Sekretariat\Wakil Direktur & Direktur S 8760 6360 0 L22 H23 Medical Record Gedung IRJ Lantai 2 F 8760 2250 0 L23 H24 Tangga 1 Gedung IRJ Lantai 2 10530 3405 0 L24 H25 Pertigaan VIDE 1 C Gedung IRJ Lantai 2 10170 6015 0 L25 H26 Ruang Dokter S 12480 6300 0 L26 H27 Ruang Akutansi & Keuangan AD 14490 6015 0 L44 H28 Toilet Umum 2 Gedung IRJ Lantai 2 U 14490 7470 0 L28 H29 Ruang Arsip Sekretariat Gedung IRJ Lantai 2 15720 7470 0 L29 H30 Loket Administrasi Gedung IRJ Lantai 2 AD 14490 4035 0 L30 H31 Perempatan VIDE 2 B Gedung IRJ Lantai 2 14205 3195 0 L31 H32 Klinik Akupuntur K 13980 1635 0 L32 H33 Klinik CB Anak Sehat K 15630 2265 0 L33 H34 Klinik Psikologi K 15120 1560 0 L34 H35 Toilet Umum 3 Gedung IRJ Lantai 2 U 16290 2640 0 L35 H36 Kantor IRJ S 16290 1005 0 L36 H37 Klinik Karyawan K 14640 1440 0 L37 H38 Klinik Psikiatri K 14040 1440 0 L38
6
H39 Klinik Gizi K 12810 1635 0 L40 H40 Depan Klinik Gizi 12555 3195 0 L39 H41 Ruang Konsultasi 12270 2265 0 L41 H42 Pertigaan VIDE 1 A Gedung IRJ Lantai 2 10170 3195 0 L42 H43 Perempatan VIDE 2 D Gedung IRJ Lantai 2 14205 6015 0 L43 I1 Litf Gedung IRJ Lantai 3 Li 6945 3690 0 L1 I2 Ruang Tamu VIP U 6945 2655 0 L2 I3 Pojok VIDE 1 Gedung IRJ Lantai 3 7635 3690 0 L3 I4 Auditorium Bethesda O 9000 2655 0 L4 I5 Pojok VIDE 2 Gedung IRJ Lantai 3 7635 5940 0 L5 I6 Samping Ruang Tamu VIP 7695 2655 0 L6 I7 Tangga 3 Gedung IRJ Lantai 3 7185 6435 0 L7 I8 Bagian Kepegawaian S 5505 6435 0 L8 I9 Komite Dana Pensiun YAKKUM S 4800 6435 0 L9 I10 Pertigaan VIDC3 C Gedung IRJ Lantai 3 3945 6180 0 L34 I11 Ruang PYC S 3570 5280 0 L11 I12 Ruang Rapat Gedung IRJ Lantai 3 O 3570 4410 0 L12 I13 Ruang Senam & Fitness O 3810 3225 0 L13 I14 Tangga 2 Gedung IRJ Lantai 3 4770 3225 0 L14 I15 Penitipan Anak X 2730 3225 0 L15 I16 PSMRS S 5040 3225 0 L16 I17 PGI S 5940 3225 0 L17 I18 Panitia Rekam Medik S 2745 5940 0 L18 I19 Ruang PKPKY S 2130 6345 0 L19 I20 Ruang PKBRS S 2130 7050 0 L20 I21 Ruang BMKK S 2565 7530 0 L21 I22 Kantor IDI S 3165 6855 0 L22 I23 Pojok Auditorium 1 10230 2655 0 L23 I24 Pojok Ruang Komite Diklat 10230 3270 0 L24 I25 Ruang Komite Bidang Diklat S 11400 3225 0 L25 I26 Ruang Studio O 12480 3225 0 L26 I27 Tangga 1 Gedung IRJ Lantai 3 10440 3690 0 L27 I28 Ruang Komite Gerejani S 12675 3225 0 L28 I29 Pojok Auditorium 2 10230 6180 0 L29 I30 Ruang Perpustakaan O 11580 6435 0 L30 I31 Ruang Diklat/Training O 12690 6435 0 L31 I32 Pav.Jasmine PV 13590 6180 0 L32 I33 Pertigaan VIDC 2 A Gedung IRJ Lantai 3 3945 3540 0 L33