Analisis Asimtotik Dan Real Time Menggunakan Algoritma L-Deque Dalam Menentukan Jarak Terpendek Antar Kantor Cabang Bank Mandiri Di Kota Medan

6

BAB 2
LANDASAN TEORI

2.1

Pengertian Algoritma

Menurut (Suarga, 2012 : 1) algoritma:
1. Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat
dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis.
2. Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan
menggunakan langkah-langkah tertentu dan terbatas jumlahnya.
3. Susunan langkah yang pasti, yang bila diikuti maka akan mentransformasi data
input menjadi output yang berupa informasi.

2.1.1

Sifat Algoritma


Menurut (Suarga, 2012 : 4) sifat utama suat algortima adalah sebagai berikut:
1. Input: suatu algoritma memiliki input atau kondisi awal sebelum dilaksanakan,
bisa berupa nilai-nilai peubah yang diambil dari himpunan khusus.
2. Output: suatu algoritma akan menghasilkan output setelah dilaksanakan, atau
algoritma akan mengubah kondisi awal menjadi kondisi akhir, di mana nilai
output diperoleh dari nilai input yang telah diperoses melalui algoritma.
3. Definiteness: langkah-langkah yang dituliskan dalam algoritma terdefinisi
dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma.
4. Finiteness: suatu algoritma harus memberi kondisi akhir atau output setelah
sejumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi
awal atau input yang diberikan.
5. Effectiveness: setiap langkah dalam algoritma bisa dilaksanakan dalam suatu
selang waktu tertentu sehingga pada akhirnya didapatkan solusi sesuai yang
diharapkan.

Universitas Sumatera Utara

7

6. Generality: langkah-langkah algoritma berlaku untuk setiap himpunan input

yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan
tertentu.

2.2

Teori Dasar Graf

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara
objek-objek tersebut. Representasi visual dari graf adalah dengan menyatakan objek
dinyatakan sebagai noktaf, bulatan, atau titik, sedangkan hubungan antara objek
dinyatakan dengan garis (Munir, Rinaldi. 2007 : 353).

2.2.1 Definisi Graf
Graf didefinisikan sebagai berikut:
1. Menurut (Suarga, 2012 : 224): Graf adalah struktur data yang terdiri atas kumpulan
vertex (V) dan edge (E), bisa ditulis sebagai G=(V, E), di mana vertex adalah simpul
pada graf, dan edge adalah rusuk/jaring yang menghubungkan dua simpul.
2. Menurut (Munir, Rinaldi. 2007 : 356): Graf G didefinisikan sebagai pasangan
himpunan (V, E), dituliskan 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.
3. Menurut (Fournier, Jean-Claude. 2009 : 23): Sebuah Graf G (tak berarah) adalah
definisi dari dua himpunan terbatas, himpunan X tidak kosong dari elemen-elemen
yang dinamakan (vertices), himpunan E (dimana boleh kosong) dari elemen-elemen
yang dinamakan (edge), dengan setiap edge e terhubungan dengan 2 vertices, x dan y,
berbeda atau tidak, yang dinamakan endvertices dari e.

Beberapa istilah yang sering digunakan dalam masalah graf antara lain:
1. Adjacent vertex: adalah dua node berdekatan, terhubung langsung oleh vertex.
2. Path: jalur melalui edge yang menghubungkan suatu vertex ke vertex yang lain,
panjang suatu jalur ditentukan oleh jumlah jaring (edge) yang menghubungkan dua
vertex.
3. Complete graph: adalah graf di mana semua vertex terhubung langsung satu
dengan yang lain.

Universitas Sumatera Utara


8

4. Weighted graph: graf yang setiap edge memiliki bobot/nilai.

5. Cycle: adalah jalur yang mulai dari suatu vertex dan berakhir pada vertex yang
sama (Suarga, 2012 : 225-226).

2.2.2 Jenis-Jenis Graf
Graf dapat dikelompokkan menjadi beberapa kategori (jenis) bergantung pada sudut
pandang pengelompokannya. Pengelompokan graf dapat dipandang berdasarkan ada
tidaknya sisi ganda atau sisi kalang (loop), berdasarkan jumlah simpul, atau
berdasarkan orientasi arah pada sisi. Berdasarkan ada tidaknya gelang atau sisi ganda
pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis (Munir,
Rinaldi. 2007 : 357).

1.

Graf sederhana (simple graph).

Graf yang tidak mengandung gelang maupun sisi-ganda dinamakan graf sederhana.

Pada graf sederhana, sisi adalah pasangan tak-terurut (unordered pairs). Jadi,
menuliskan sisi (u, v) sama saja dengan (v, u).

Gambar 2.1 Graf sederhana

Pada Gambar 2.1 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)}
2.

Graf tak-sederhana (unsimple-graph).

Graf yang mengandung sisi ganda atau gelang dinamakan graf tak-sederhana
(unsimple-graph). Ada dua macam graf tak-sederhana, yaitu graf ganda (multigraph)
dan graf semu (pseudograph). Graf ganda adalah graf yang mengandung sisi ganda.

Universitas Sumatera Utara

9


Sisi ganda yang menghubungkan sepasang simpul bisa lebih dari dua buah. Sisi ganda
dapat diasosisiasikan sebagai pasangan tak-terurut yang sama.

Gambar 2.2 Graf ganda

Pada Gambar 2.2 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

Pada sisi e3 = (1,3) dan sisi e4 = (1,3) dinamakan sisi-ganda (multiple edges
atau paralel edges) karena kedua sisi ini menghubungi dua buah simpul yang sama,
yaitu simpul 1 dan simpul 3.

Graf semu adalah graf yang mengandung gelang (loop). Graf semu lebih
umum daripada graf ganda, karena sisi pada graf semu dapat terhubung ke dirinya
sendiri.

Gambar 2.3 Graf semu

Graf semu 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),(3,3)}

Universitas Sumatera Utara

10

Pada sisi e8 = (3,3) dinamakan gelang atau kalang (loop) karena ia berawal dan
berakhir pada simpul yang sama.
Sisi pada graf dapat mempunyai orientasi arah. Berdasarkan orientasi arah pada sisi,
maka secara umum graf dibedakan menjadi 2 jenis (Munir, Rinaldi. 2007 : 358).

1.

Graf tak-berarah (undirected graph)

Graf yang sisinya tidak mempunyai orientasi arah disebut graf tak-berarah. Urutan
pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. Jadi, (u , v) = (v , u)
adalah sisi yang sama.
2.


Graf berarah (directed graph atau digraph)

Graf yang setiap sisinya diberikan orientasi arah disebut sebagai graf berarah. Pada
graf berarah, (u , v) dan (v , u) menyatakan dua buah busur yang berbeda, dengan kata
lain (u , v) ≠ (v , u). Untuk busur (u, v), simpul u dinamakan simpul asal (initial
vertex) dan simpul v dinamakan simpul terminal (terminal vertex). Pada graf berarah,
gelang diperbolehkan, tetapi sisi ganda tidak.

Gambar 2.4 Graf berarah
Defini graf dapat diperluas sehingga mencakup graf-ganda berarah (directed
multigraph) Pada graf berarah, gelang dan sisi ganda diperbolehkan ada.

Gambar 2.5 Graf-ganda berarah

Universitas Sumatera Utara

11

2.3


Lintasan Terpendek (Shortest Path)

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 (Munir, Rinaldi. 2007 : 412 ).

Ada beberapa macam persoalan lintasan terpendek, antara lain:
1. Lintasan terpendek antara dua buah simpul tertentu.
2. Lintasan terpendek antara semua pasangan simpul.
3. Lintasan terpendek dari simpul tertentu ke semua simpul yang lain.
4. Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu.

2.4

Algoritma L-Deque

Linked list merupakan struktur data dinamis yang paling sederhana yang berlawanan
dengan array, yang merupakan struktur statis. Masing-masing data dalam Linked list

disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan
biasanya berupa struktur (struct) yang terdiri dari beberapa field (Setyaningsih, E.
2012 : 47).

Stack (tumpukan) adalah sebuah list yang semua penambahan dan
penghapusan dilakukan pada bagian depan dari list. Algoritma jarak terpendek yang
mana Q telah diimplementasikan sebagai sebuah stack yang tidak dibatasi jumlahnya.
Deque (double-ended queue atau antrian ganda) adalah sebuah list dimana
penambahan dan penghapusan dapat dilakukan pada kedua sisi ujungnya. Deque
mungkin terlihat sebagai sebuah stack dan antrian (queue) yang terhubung dalam
rangkain yang sedemikian rupa pada bagian belakang (tail) dari stack hingga bagian
terdepan pada antrian. Metode ini disebut ldeque, penambahan sebuah simpul pada
bagian terdepan dari Q jika simpul tersebut sudah muncul dalam list sebelumnya,
dimana simpul ditambahkan pada bagian belakang (tail) jika perlu. Ketika semua
simpul mempunyai sebuah label terbatas, metode ini bereaksi seperti sebuah algoritma
yang digunakan sebagai struktur data (Mondou, J-F., 1991 : 4-5).

Universitas Sumatera Utara

12


FRONT (Q)

REAR (Q)

Keluar

Masuk

Masuk

Keluar
Gambar 2.6 Struktur Umum DEQUE

Deque menggunakan dua pointer petunjuk yaitu left petunjuk untuk elemen
pada posisi kiri dan right petunjuk untuk elemen pada posisi kanan. Ada dua jenis
deque:
1. Input-Restricted-Deque
Adalah deque yang operasi pemasukan elemen datanya hanya dapat dilakukan di satu
ujung kanannya (right), tetapi dapat menghapus dari kedua ujungnya (left dan right).

2. Output-Restricted-Deque
Adalah deque yang operasi pemasukan elemen datanya dapat dilakukan melalui kedua
ujungnya (left dan right), tetapi hanya dapat menghapus dari ujung kanannya (right).

2.5

Asimtotik

Notasi yang digunakan untuk menentukan waktu tempuh (running time) asimtotik dari
suatu algoritma didefinisikan dalam hal fungsi yang mana domainnya adalah
himpunan bilangan N = {0, 1, 2, . . .}. Notasi tersebut mudah untuk menggambarkan
keadaan terburuk (worst-case) waktu tempuh fungsi T(n) yang biasanya diartikan
hanya pada ukuran integer.

Fungsi yang diterapkan notasi asimtotik biasanya akan mencirikan waktu
tempuhnya algoritma. Tapi notasi asimtotik dapat berlaku pada fungsi yang menjadi
ciri beberapa aspek lain dari algortima (misalnya jumlah ruang yang digunakan)
bahkan untuk fungsi yang sama sekali tidak dapat dilakukan oleh algoritma (Cormen
et al., 2009 : 43-44).

Universitas Sumatera Utara

13

2.6

Kompleksitas Algoritma

Suatu masalah dapat mempunyai banyak algoritma penyelesaian. Algoritma yang
digunakan tidak saja harus benar, namun juga harus efisien. Efisiensi suatu algoritma
dapat diukur dari waktu eksekusi algoritma dan kebutuhan ruang memori. Algoritma
yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang.
Dengan menganalisis beberapa algoritma untuk suatu masalah, dapat diidentifikasi
sutu algoritma yang paling efisien. Besaran yang digunakan untuk menjelaskan waktu
dan ruang ini adalah kompleksitas algoritma.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak
komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara
informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang
singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan
waktu yang lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang
tinggi. (Azizah, U. N., 2013).

2.6.1

Kompleksitas Waktu dan Ruang

Kompleksitas algoritma terdiri dari dua macam yaitu kompleksitas waktu dan
kompleksitas ruang.
1. Kompleksitas waktu, dinyatakan oleh T(n), diukur dari jumlah tahapan komputasi
yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan
n, di mana ukuran masukan (n) merupakan jumlah data yang diproses oleh sebuah
algoritma.
2. Kompleksitas ruang, dinyatakan oleh S(n), diukur dari memori yang digunakan
oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari masukan n.

Dengan menggunakan kompleksitas waktu dan kompleksitas ruang, dapat
ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring
dengan meningkatnya ukuran masukan (n) (Munir, Rinaldi. 2007 : 499-500).

Untuk menentukan kompleksitas waktu suatu algoritma, diperlukan ukuran
masukan n serta waktu tempuh (running time) algoritma tersebut. Pada umumnya,

Universitas Sumatera Utara

14

running time algoritma meningkat seiring dengan dengan bertambahnya ukuran n.
Sehingga, running time suatu algoritma dapat dinyatakan sebagai fungsi dari n.

Running Time algoritma pada masukan n tertentu merupakan jumlah operasi
atau langkah yang dieksekusi. Selanjutnya, jumlah waktu yang konstan diperlukan
untuk mengeksekusi setiap baris pseudocode (kode semu). Satu baris dapat memiliki
jumlah waktu yang berbeda dari baris lain. Namun asumsikan bahwa setiap
pelaksanaan baris ke-i membutuhkan waktu sebesar c1, di mana c1 adalah konstanta.
Dalam menentukan running time suatu baris pada pseudocode (kode semu),
kalikan konstanta c1 dengan jumlah waktu yang diperlukan untuk mengeksekusi baris
tersebut. Untuk kasus di mana terdapat perintah loop while atau for dengan panjang n,
maka perintah tersebut dieksekusi dengan waktu n + 1. Sedangkan untuk baris berisi
komentar, dinyatakan sebagai baris yang tidak dieksekusi, sehingga jumlah waktu
untuk baris tersebut adalah nol (Azizah, U. N., 2013).

Universitas Sumatera Utara