Implementasi Algoritma Greedy Dan Algoritma Floyd – Warshall Untuk Menentukan Jarak Terpendek (Studi Kasus : Beberapa Apotek Terkenal Di Kota Medan)

7

BAB 2
TINJAUAN PUSTAKA

2.1

Apotek
Apotek (berasal dari bahasa Belanda : Apotheek, apotek /apo•tek/ /apoték/.

Pengertian apotek menurut (Kepmenkes RI) No. 1332/MENKES/SK/X/2002, Apotek
adalah suatu tempat tertentu, tempat dilakukan pekerjaan kefarmasian penyaluran
perbekalan farmasi kepada masyarakat. Yang dimaksud pekerjaan kefarmasian
diantaranya pengadaan obat penyimpanan obat, pembuatan sediaan obat, peracikan,
penyaluran dan penyerahan perbekalan farmasi serta memberikan informasi kepada
masyarakat mengenai perbekalan kefarmasian yang terdiri dari obat, bahan obat, obat
tradisional, alat kesehatan dan kosmetik.
Tidak hanya menjalankan pekerjaan kefarmasian tetapi tugas pokok dan fungsi
apotek juga harus dijalankan dengan sebaik-baiknya sesuai dengan standard prosedur
yang telah ditetapkan. Apotek juga merupakan tempat apoteker melakukan praktik
profesi farmasi sekaligus menjadi peritel. Kata ini berasal dari kata bahasa Yunani

apotheca yang secara harfiah berarti "penyimpanan".

2.2

Graph

2.2.1

Definisi Graph
Graph dapat diartikan sebagai pasangan himpunan (V, E) yang disimbolkan

dengan G = (V, E), dimana : V adalah kumpulan titik, simpul, verteks atau nodes dari
G yaitu V = {v1, v2, v3, ......... vn} dan E adalah kumpulan rusuk, edges atau sisi dari G,
yaitu E = e1, e2, e3, ......... en) (Iryanto, 2003).
Banyaknya verteks pada suatu graph disebut order dan banyaknya edges
disebut size. Pada graf G jika terdapat dua verteks yang terhubung dengan satu edge,
maka edge seperti ini disebut multiple edges atau edges ganda. Dan jika suatu edge
berasal dari satu verteks dan kembali pada verteks awalnya, maka edge tersebut
disebut loop. Berikut graf G yang memuat himpunan titik V(G) dan himpunan sisi
E(G).


Universitas Sumatera Utara

8

Gambar 2.1 Graf G
(Iryanto, 2003)

Berdasarkan Gambar 2.1 graf G mempunyai 5 titik. Graf G dengan himpunan
titik dan sisi masing – masing dapat ditulis :
V(G) = { v1,v2, v3,v4,v5 }
E(G) = { e1, e2, e3, e4, e5}
yaitu :
e1 = (v1,v3)
e2 = (v2,v3)
e3 = (v2,v4)
e4 = (v1,v2)
e5 = (v3,v4)

2.2.2


Jenis – Jenis Graph
Graph terdiri atas beberapa jenis. Graph yang berdasarkan ada tidaknya gelang

atau sisi ganda pada suatu graf, maka dapat digolongkan menjadi dua jenis, yaitu :

1. Graf Sederhana (Simple Graph)
Graf yang tidak memiliki loop atau memiliki edges ganda. Contoh graf sederhana
adalah sebagai berikut :

Gambar 2.2: Graf Sederhana
(Iryanto, 2003)

Universitas Sumatera Utara

9

2. Graf Tak Sederhana
Graf yang memiliki edges ganda atau loop dinamakan graf tak sederhana. Pada graf
tak sederhana dapat dapat dibagi dua yaitu :

a. Graf Semu (Pseudograph)
Graf semu atau pseudograph adalah graf yang memiliki loop, termasuk
juga graf yang mempunyai loop dan edges ganda karena itu graf semu
lebih umum daripada Multiplegraph, graf semu edgesnya dapat
dihubungkan dengan dirinya sendiri.

Gambar 2.3 : Graf Semu (Pseudograph)
(Iryanto, 2003)

b. Graf Ganda (Multiplegraph)
Multiplegraph yaitu graf yang memiliki edge ganda. Edge tersebut dapat
menghubungkan sepasang verteks atau lebih dari dua.

Gambar 2.4 : Graf Ganda (Multiplegraph)
(Iryanto, 2003)
Berdasarkan jenis garis – garisnya, graf dibedakan dalam dua kategori yaitu :
1. Graf Tak Berarah (Undirect Graph)

Universitas Sumatera Utara


10

Graf tak berarah adalah graf yang edgenya tidak mempunyai arah atau
panah. Pada graph tak berarah elemen dari E disebut dengan edge.

Gambar 2.5: Graf Tak Berarah (Undirect Graph)
(Iryanto, 2003)

Graph pada Gambar 2.5 adalah graph tak berarah dengan himpunan verteksverteks V(G) = {v1, v2, v3, v4, v5} dan himpunan sisi E(G) = {e1, e2, e3, e4, e5, e6} yaitu
pasangan tak terurut dari {(v1, v2), (v2, v3), (v3, v4), (v4, v5), (v5, v2)}.

2. Graf Berarah (Direct Graph atau Digraph).
Jika pada suatu graf semua edgenya diberikan arah maka graf seperti ini dinamakan
Graf Berarah (Direct Graph) yang diberi notasi D. Suatu graf berarah D terdiri dari
suatu himpunan vertek – vertek V, dan himpunan arc – arc A yang terdiri dari
pasangan terurut dari vertek yang dinyatakan dengan (u, v) yang disebut dengan
sisi berarah (arc). Verteks u pada pada arc ini disebut verteks awal dan verteks v
disebut sebagai verteks akhir. Suatu graf berarah atau digraph ditulis dengan D =
(V, A).


Gambar 2.6 : Graf Berarah (Direct Graph)
(Iryanto, 2003)

Berdasarkan jumlah vertex pada suatu graf, maka secara umum graf dapat
digolongkan menjadi dua jenis:

Universitas Sumatera Utara

11

1. Graf Berhingga (Limited Graph)
Graf berhingga adalah graf yang jumlah verteksnya berhingga atau banyak dan
masih bisa dihitung n. Berikut merupakan salah satu contoh graf berhingga.

Gambar 2.7 : Graf Berhingga (Limited Graph)

2. Graf Tak Berhingga (Unlimited Graph)
Graf tak berhingga adalah graf yang jumlah verteksnya berhingga, n tidak
berhingga. Berikut merupakan salah satu contoh graf berhingga.


Gambar 2.8: Graf Tak Berhingga (Unlimited Graph)
(Iryanto, 2003)

Berdasarkan bobotnya, graf dibagi menjadi dua jenis, yaitu:
1. Graf tidak berbobot (Unweighted Graph)
Graf tidak berbobot atau graf tidak berlabel adalah graf yang setiap edgenya tidak
mempunyai nilai (bobot).

Universitas Sumatera Utara

12

Gambar 2.9: Graf Tidak Berbobot (Unweighted Graph)
(Iryanto, 2003)

2. Graf Berbobot (Weighted Graph)
Graf berbobot atau graf berlabel adalah graf yang setiap edgenya diberi sebuah
nilai (bobot), sehingga dapat dihitung nilai pada graf tersebut.

Gambar 2.10: Graf Berbobot (WeightedGraph)

(Iryanto, 2003)

2.3

Lintasan Terpendek (Shortest Path)

Persoalan mencari lintasan terpendek di dalam Graph merupakan salah satu persoalan
optimasi.Graph yang digunakan dalam pencarian lintasan terpendek adalah graph
yang bernilai atau berbobot. Bobot pada sisi graph dapat menyatakan jarak antar kota,
waktu pengiriman pesan, ongkos pembangunan, dan sebagainya.
Dalam hal ini bobot harus bernilai positif, pada lain hal terdapat bobot dengan
nilai negatif. Lintasan terpendek dengan verteks awal s dan verteks tujuan t
didefinisikan sebagai lintasan terpendek dari s ke t dengan bobot minimum dan berupa
lintasan sederhana (simple path). (Lubis, 2009)
Ada beberapa macam persoalan lintasan terpendek, antara lain :
a. Lintasan terpendek antara dua buah simpul tertentu.

Universitas Sumatera Utara

13


b. Lintasan terpendek antara semua pasangan simpul.
c. Lintasan terpendek dari simpul tertentu ke semua simpul yang lain.
d. Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu

2.4

Google Maps

Google Maps adalah layanan pemetaan berbasis web untuk menunjukkan jalan-jalan
di seluruh dunia sehingga dapat kita gunakan untuk melihat suatu jalan di lokasi
manapun. Dengan kata lain, Google Maps yaitu suatu peta yang dapat dilihat dengan
menggunakan suatu browser yang akan ditampilkan secara digital. Kegunaan Google
Maps adalah untuk membantu seseorang untuk mencari jalan ke lokasi yang ingin
dituju. Google Maps juga dilengkapi dengan fasilitas yang dapat menghitung jarak.
Sehingga memudahkan kita untuk mengetahui seberapa jauh jalan yang akan dituju.
Google Maps API merupakan aplikasi antarmuka yang dapat diakses lewat
javascript agar Google Maps dapat ditampilkan pada halaman web yang sedang
dibangun. Dengan menggunakan Google Maps API dapat menghemat waktu dan
biaya untuk membangun aplikasi peta digital yang handal, karena pengguna hanya

fokus pada data-data yang ingin dikostumisasi saja, untuk data peta sudah disediakan
oleh Google Maps. Ada 2 cara untuk mengakses data Google Maps, tergantung dari
data yang ingin diambil dan diuraikan dari Google Maps, yaitu:
1. Mengakses data Google Maps tanpa menggunakan API key.
2. Mengakses data Google Maps menggunakan API key.
3. Pendaftaran API key dilakukan dengan data pendaftaran berupa nama domain
web yang kita bangun. (Sirenden & Dachi, 2012)
Pada penelitian saya, google map digunakan untuk mencari lokasi atau node
dari lokasi apotek yang ada. Titik yang diambil dari google map yaitu titik latitude
dan titik lotitude. Titik tersebut akan disimpan pada database dan dan digunakan pada
saat pemograman. Titik tersebut nantinya akan menampilkan lokasi dari apotik
tersebut berdasarkan google map.

2.5

Android

2.5.1

Sejarah Android


Perjalanan Android dimulai sejak Oktober 2003 ketika 4 orang pakar IT, Andi Rubin,
Rich Minner, NickSears dan Chris White mendirikan Android.Inc, di California US.

Universitas Sumatera Utara

14

Visi Android untuk mewujudkan mobile device yang lebih peka dan mengerti
pemiliknya,kemudian menarik raksasa dunia maya Google. Google kemudian
mengakuisisi Android pada Agustus 2005. OSAndroid dibangun berbasis platform
Linux yang bersifat open source, senada dengan Linux, Android juga bersifat Open
Source. Dengan nama besar Google dan konsepopen source pada OS Android, tidak
membutuhkan waktu lama bagi android untuk bersaing dan menyisihkanMobile OS
lainnya seperti Symbian, Windos Mobile,Blackberry dan iOS. Kini siapa yang tak
kenal Androidyang telah menjelma menjadi penguasa Operating Systembagi
Smartphone. (Lengkong, Sinsuw, Lumenta, 2015)

2.5.2

Versi Android

Berikut merupakan versi android :
A)

Android versi 1.6 (Donut)

B)

Android V1.6, codename Donut, dirilis pada 15 September 2009. Pada versi ini
diperbaiki beberapa kesalahan reboot, perubahan fitur foto dan video dan
integrasi pencarian yang lebih baik. Donat merupakan panganan berbentuk
cincin. Bulat bolong tengah. Adonan donat dimasak dengan cara digoreng dan
biasanya disajikan dengan toping diatasnya.

C)

Android versi 2.0 (Eclair)

D)

Android versi 2.2 (Froyo: Frozen Yoghurt)

E)

Android versi 2.3 (Gingerbread)

F)

Android versi 3.0 (Honeycomb)

G)

Android versi 4.0 (Ice Cream Sandwich)

H)

Android versi 4.1 (Jelly Bean)

I)

Android versi 4.4 (KitKat)

J)

Android versi 5.0 (Lollipop) (Android,2016)

2.6

Algoritma Greedy

Sebuah algoritma Greedy adalah algoritma yang mengikuti pemecahan heuristik dari
masalah membuat pilihan lokal yang optimal pada setiap tahap dengan harapan
menemukan optimum global. Dalam banyak masalah , strategi Greedy umumnya tidak
menghasilkan

solusi

optimal,

tapi

perhitungan

heuristik

Greedy

mungkin

Universitas Sumatera Utara

15

menghasilkan solusi lokal optimal yang kira-kira bisa menjadi solusi optimal global
dalam waktu yang wajar.
Algoritma Greedy memecahkan masalah dengan membuat pilihan yang
tampaknya terbaik pada saat tertentu . Banyak masalah optimalisasi dapat diselesaikan
dengan menggunakan algoritma Greedy . Beberapa masalah tidak memiliki solusi
efisien, tetapi algoritma Greedy mungkin memberikan solusi efisien yang dekat
dengan optimal . Sebuah algoritma Greedy bekerja jika masalah menunjukkan dua
sifat berikut :
1. Pemilihan Greedy : Sebuah solusi global optimal dapat muncul dengan membuat
solusi lokal optimal. Dengan kata lain, solusi optimal dapat diperoleh dengan
membuat pilihan Greedy .
2. Substruktur optimal : Solusi optimal mengandung sub solusi optimal . Dengan kata
lain, solusi untuk sub masalah solusi optimal yang optimal (Malik et al, 2013).

Berikut adalah cara algoritma Greedy untuk mencari jalur terpendek :
1. Periksa semua edge yang berhubungan dengan verteks a. Pilih edge dengan bobot
terkecil.
2. Ganti verteks a menjadi verteks yang menjadi tujuan edge yang dipilih tadi.
3. Ulangi langkah 1.
Contoh pencarian path terpendek dengan algoritma Floyd – Warshall dengan
graf berarah berlabel pada gambar 8.4.2 adalah seperti berikut :

Gambar 2.11 : Graf Berarah Berlabel
(Siang, 2002)

1.

Misal kita berangkat dari v1 menuju ke v3. Algoritma Greedy akan memilih
edges dengan bobot terkecil yang terhubung dengan titik keberangkatan. Edges
yang berhubungan dengan v1 dengan arah keluar ada dua, dan yang paling kecil
bobotnya adalah edges yang menuju ke v4 dengan bobot 2 sehingga titik

Universitas Sumatera Utara

16

keberangkatan

dipindahkan

ke

v4.

Maka

jalur

dan

bobot

sekarang

direpresentasikan sebagai berikut :

2.

Jalur

: v1 → v4

Bobot

:0+2

Edges yang berhubungan dengan v2 dengan arah keluar ada satu, yaitu edges
yang menuju ke v2 dengan bobot 4 sehingga titik keberangkatan dipindahkan ke
v2. Maka jalur dan bobot sekarang direpresentasikan sebagai berikut :

3.

Jalur

: v1 → v4→v2

Bobot

:0+2+4

Edges yang berhubungan dengan v2 dengan arah keluar ada dua, dan yang
paling kecil bobotnya adalah edges yang menuju ke v5 dengan bobot 1 sehingga
titik keberangkatan dipindahkan ke v5. Maka jalur dan bobot sekarang
direpresentasikan sebagai berikut :

4.

Jalur

: v1 → v4 → v2 → v5

Bobot

:0+2+4+1

Edges yang berhubungan dengan v5 dengan arah keluar ada satu, yaitu edges
yang menuju ke v3 dengan bobot 2 sehingga titik keberangkatan dipindahkan ke
v3. Maka jalur dan bobot akhir sekarang direpresentasikan sebagai berikut :

2.7

Jalur

: v1 → v4 → v2 → v5 → v3

Bobot

:0+2+4+1+2=9

Algoritma Floyd - Warshall

Algoritma Floyd-Warshall ditemukan oleh Stephen Warshall dan Robert W.Floyd.
Stephen Warshall lahir di NewYork pada tahun 1935 dan meninggal pada tanggal
11 Desember 2006. Robert W. Floyd, lahir di New York pada tanggal 8 Juni 1936.
Algoritma ini digunakan untuk mencari path terpendek. Algoritma ini
merupakan algoritma yang sederhana dan mudah implementasinya. Dalam usaha
untuk mencari path terpendek, algoritma ini memulai iterasi dari titik awalnya
kemudian mengevaluasi titik demi titik hingga mencapai titik tujuan dengan jumlah
bobot yang seminimum mungkin.
Dalam iterasinya untuk mencari path terpendek, algoritma Floyd – Warshall
membentuk n matriks, sesuai dengan iterasi-k. Ini menyebabkan waktu prosesnya
lambat, terutama untuk n yang besar. Meskipun waktu prosesnya bukanlah yang

Universitas Sumatera Utara

17

tercepat, algoritma Floyd – Warshall sering dipergunakan untuk menghitung path
terpendek karena kesederhanaan algoritmanya. (Siang, 2002)
Contoh pencarian path terpendek dengan algoritma Floyd – Warshall dengan
graf berarah berlabel pada gambar 2.11 adalah seperti berikut :
1.

2.

Kita inisiasi graph tersebut dalam bentuk adjency matrix sebagai berikut :
V1

V2

V3

V4

V5

V6

V1

0

7



2





V2



0

4



1



V3





0





3

V4



4



0





V5

2



2



0



V6



1







0

Pada iterasi pertama, kita akan menandai elemen pada kolom pertama dan baris
pertama dengan warna kuning, kemudian baris dan kolom yang bersesuaian
dengan baris dan kolom yang ditandai dengan warna kuning dan memiliki
elemen ∞ juga ditandai dengan warna biru. Kemudian ganti nilai sel yang tidak
ditandai dengan menjumlahkan nilai baris dan kolom warna kuning yang
bersesuaian dengan sel tersebut, apabila nilai yang dijumlahkan lebih kecil dari
yang sebelumnya
V1

V2

V3

V4

V5

V6

V1

0

7



2





V2



0

4



1



V3





0





3

V4



4



0





V5

2

7+2

2

2+2

0



V6



1







0

Universitas Sumatera Utara

18

3.

Pada iterasi kedua, kita akan menandai elemen pada kolom kedua dan baris
kedua dengan warna kuning, dan melakukan hal yang sama pada iterasi
sebelumnya.

4.

V1

V2

V3

V4

V5

V6

V1

0

7

4+7

2

1+7



V2



0

4



1



V3





0





3

V4



4

4+4

0

1+4



V5

2

9

2, 4 + 9

4

0



V6



1

4+1



1+1

0

Pada iterasi ketiga, kita akan menandai elemen pada kolom ketiga dan baris
ketiga dengan warna kuning, dan melakukan hal yang sama pada iterasi
sebelumnya.

5.

V1

V2

V3

V4

V5

V6

V1

0

7

11

2

8

3 + 11

V2



0

4



1

3+4

V3





0





3

V4



4

8

0

5

3+8

V5

2

9

2

4

0

3+2

V6



1

5



2

0

Pada iterasi keempat, kita akan menandai elemen pada kolom keempat dan baris
ketempat dengan warna kuning, dan melakukan hal yang sama pada iterasi
sebelumnya.

Universitas Sumatera Utara

19

V1

V2

V3

V4

V5

V6

V1

0

7, 4 + 2

11, 8 + 2

2

8, 5 + 2

14, 11 + 2

V2



0

4



1

7

V3





0





3

V4



4

8

0

5

11

V5

2

9, 4 + 4

2, 8 + 4

4

0

5, 11 + 4

V6



1

5



2

0

6.

Pada iterasi kelima, kita akan menandai elemen pada kolom kelima dan baris
kelima dengan warna kuning, dan melakukan hal yang sama pada iterasi
sebelumnya.
V1

V2

V3

V4

V5

V6

V1

0

6, 8 + 7

10, 2 + 7

2, 4 + 7

7

13, 5 + 7

V2

2+1

0

2+1

4+1

1

7, 5 + 1

V3





0





3

V4

2+5

4, 8 + 5

8, 2 + 5

0

5

11, 5 + 5

V5

2

8

2

4

0

5

V6

2+2

1, 8 + 2

2+2

4+2

2

0

7.

Pada iterasi keenam, kita akan menandai elemen pada kolom keenam dan baris
keenam dengan warna kuning, dan melakukan hal yang sama pada iterasi
sebelumnya.

Universitas Sumatera Utara

20

V1

V2

V3

V4

V5

V6

V1

0

6

9

2

7

12

V2

3, 4 + 6

0

3, 4 + 6

5, 6 + 6

1, 2 + 6

6

V3

4+3

1+3

0

6+3

2+3

3

V4

7, 4 + 10

4, 1 + 10

7, 4 + 10

0

5, 2 + 10

10

V5

2, 4 + 5

8, 1 + 5

2, 4 + 5

4, 6 + 6

0

5

V6

4

1

4

6

2

0

8.

Hasil dari perhitungan Floyd – Warshall adalah sebagai berikut :
V1

V2

V3

V4

V5

V6

V1

0

6

9

2

7

12

V2

3

0

3

5

1

6

V3

7

4

0

9

5

3

V4

7

4

7

0

5

10

V5

2

6

2

4

0

5

V6

4

1

4

6

2

0

Universitas Sumatera Utara

21

2.8

Penelitian yang Relevan
Berikut ini table mengenai penelitian yang relevan dengan judul skripsi penulis
yaitu :
Tabel 2.1. Penelitian yang relevan

No
1

Judul

Peneliti

Metode

Keterangan

Implementasi

Rini

Floyd -

Sistem

ini

Algoritma Floyd -

Chairinani

Warshall

menunjukkan

Warshall Dalam

Harahap

dapat
jalur

terpendek, namun masih
dekstop.

Menentukan Jarak

berbasis

Terpendek (Medan

Sehingga sulit digunakan

- Bandara Kuala

saat waktu tertentu.

Namu)
2

Perbandingan

Henny

Algoritma

Pada

penelitian

Algoritma Greedy

Syahriza

Greedy dan

algoritma

Dengan Algoritma

Lubis

Djikstra

menghasilkan jarak yang
besar.

ini,
Greedy

Djikstra Untuk

lebih

Algoritma

Menemukan

Greedy tidak beroperasi

Lintasan

secara

Terpendek.

sehingga

menyeluruh,
lintasan

terpendek hanya diperoleh
dari verteks asal hingga
verteks tujuan. Sedangkan
algoritma
beroperasi
menyeluruh

Djikstra
secara
terhadap

semua alternatif fungsi
yang

ada,

sehingga

lintasan terpendek tidak
hanya diperoleh dari node
sumber ke node tujuan
saja, akan tetapi lintasan

Universitas Sumatera Utara

22

terpendek dapat diperoleh
dari semua node.
3

Sistem Pencarian

Zulfikri

Algoritma

Menggunakan

Jalur Terpendek

Putra

Floyd –

Browser

Warshall.

web

Di Kota Medan

Web

atau

berbasis
dalam

Menggunakan

pengimplementasian.

Algoritma Floyd –

Aplikasi yang dibangun

Warshall.

dapat

meyelesaikan

permasalahan

pencarian

jalur terpendek dengan
menunjukkan

lintasan

terkecil antara dua node.
4

Aplikasi Pencarian Naomi

Algoritma

Menggunakan

bahasa

Taksi Terdekat

Chrisentya Floyd-

pemograman

Menggunakan

Hutabarat

Android (Eclips), PHP,

Warshall

Java

dan MySQL. Algoritma

Algoritma Floyd-

Floyd - Warshall dapat

Warshall

menghitung jarak taksi
terdekat
taksi.

dari

Koneksi

memegang

pemesan
Internet
peranan

penting

dalam

penggunaan aplikasi demi
lancarnya

penggunaan

aplikasi. Sistem tersebut
sudah sangat bagus dilihat
dari design interface dan
juga cara kerja sistem.
5

Perbandingan

Simamora

Algoritma

Sistem

Algoritma Johnson Martha

Johnson Dan

menunjukkan

Dan Floyd -

Floyd -

terpendek, namun masih

Liquisa

ini

dapat
jalur

Universitas Sumatera Utara

23

Warshall Dalam

Warshall

berbasis

dekstop.

Penentuan

Algoritma

Lintasan

Warshall

Terpendek Studi

merupakan Alternatif lain

Kasus

yang

Kabupaten
Humbang
Hasundutan

Floyddan

digunakan

Dijkstra

dalam

menentukan
permasalahan Optimasasi.
Selain itu aplikasi tersebut
tidak bisa berjalan secara
real time, jadi sulit untuk
digunakan pada saat yang
dibutuhkan.

Universitas Sumatera Utara