BAB 2 LANDASAN TEORI 2.1 Graph - Implementasi Metode Generate And Test Pada Pemilihan Angkutan Umum Bertrayek Dengan Jarak Terpendek

BAB 2
LANDASAN TEORI

2.1 Graph

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objekobjek tersebut. Gambar 2.1 merupakan sebuah graf yang menyatakan peta jaringan jalan raya
yang menghubungkan sejumlah kota di Provinsi Jawa Tengah (Rinaldi Munir : 2007).

Gambar 2.1 Jaringan jalan raya di Provinsi Jawa Tengah

Sesungguhnya peta tersebut adalah sebuah graf, yang dalam hal ini kota dinyatakan
sebagai bulatan (simpul) sedangkan jalan dinyatakan sabagai garis (sisi). Dengan
diberikannya peta tersebut, kita dapat mengetahui apakah ada lintasan jalan antara dua buah
kota.

2.1.1 Definisi Graph

Graf G didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini V = himpunan
tidak-kosong dari simpul-simpul (vertices) = { v1 , v2 , ... , vn } dan E = himpunan sisi (edges)
yang menghubungkan sepasang simpul = {e1 , e2 , ... , en }. Jadi, sebuah graf dimungkinkan
tidak mempunyai sisi satu buah pun, tetapi simpulnya harus ada, minimal satu. Graf yang

hanya mempunyai satu buah simpul tanpa sebuah sisi pun dinamakan graf trivial (Rinaldi
Munir : 2007).

2.1.2 Jenis-jenis Graph

Pengelompokan graf dapat dipandang berdasarkan ada tidaknya sisi ganda, berdasarkan
jumlah simpul atau berdasarkan orientasi arah pada sisi. Berdasarkan ada tidaknya gelang
atau sisi ganda pada suatu graf, maka graf digolongkan menjadi dua jenis yaitu (Rinaldi
Munir : 2007) :
1. Graf sederhana (simple graph).
Merupakan graf yang tidak mengandung gelang maupun sisi – ganda. Pada graf
sederhana, sisi adalah pasangan tak-terurut ( unordered pairs ). Jadi, menuliskan sisi (u,v)
sama saja dengan (v,u)

Gambar 2.2 Graf sederhana

Gambar 2.2 adalah graf dengan himpunan simpul V dan himpunan sisi E adalah V = {
1,2,3,4 } dan E = { (1,2), (1,3), (2,3), (2,4), (3,4) }.
2. Graf tak - sederhana (unsimple-graph).
Merupakan graf yang mengandung sisi ganda atau gelang dinamakan graf taksederhana (unsimple graph). Ada dua macam graf tak-sederhana, yaitu graf ganda

(multigraph) dan graf semu (pseudograph). Graf ganda adalah graf yang mengandung sisi
ganda yang menghubungkan sepasang simpul lebih dari dua buah. Dapat diasosisiaikan
sebagai pasangan tak-terurut yang sama.

Gambar 2.3 Graf ganda
Gambar 2.3 merupakan graf ganda dengan 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}. Sisi e3 = (1, 3) dan sisi e4 = (1, 3)
dinamakan sisi-ganda (multiple edges atau pararel edges) karena kedua sisi ini
menghubungkan 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.4 Graf semu

Gambar 2.4 adalah graf dengan 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 sisi e8 = (3, 3) dinamakan gelang
(loop) karena berawal dan berakhir pada simpul yang sama.
Berdasarkan jumlah simpul pada suatu graf, maka secara umum graf dapat
digolongkan menjadi dua jenis:
1. Graf berhingga (limited graph).

Graf berhingga adalah graf yang jumlah simpulnya berhingga.
2. Graf tak-berhingga (unlimited graph)
Graf yang jumlah simpulnya tidak berhingga banyaknya disebut graf tak berhingga.
Berdasarkan orientasi arah pada sisi, maka secara umum graf dibedakan atas 2 jenis :
1.

Graf tak-berarah (undirected graph).

Merupakan graf yang sisinya tidak mempunyai orientasi arah. 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). Simpul (u) dinamakan simpul asal dan simpul (v) dinamakan simpul terminal.
Pada graf berarah, gelang diperbolehkan, tetapi sisi ganda tidak.


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

Gambar 2.6 Graf-ganda berarah

2.2 Metode Pencarian

Ada banyak metode yang dapat digunakan untuk pencarian jalur terdekat pada suatu graf.
Metode pencarian tersebut dapat dikelompokkan ke dalam dua jenis, yaitu pencarian

buta/tanpa informasi (blind atau un-informed search) dan pencarian heuristik/dengan
informasi (heuristic atau informed search) (Dewi Yusra Aini : 2010).

2.2.1 Pencarian Heuristik

Heuristik adalah teknik yang digunakan untuk meningkatkan efisiensi dari proses pencarian.
Teknik ini baik diterapkan dalam tujuan yang umum, tapi tidak untuk tujuan yang
khusus.Heuristik yang baik, dapat memecahkan permasalahan yang berat, seperti pada

masalah perjalanan salesman. Sebuah fungsi heuristik mengevaluasi keadaan permasalahan
tersendiri dan menentukan bagaimana diperlukan fungsi ini dalam memecahkan suatu
permasalahan. Sebuah fungsi heuristik adalah sebuah fungsi yang memetakan keadaan
permasalaan, yang mendeskripsikan daya tarik dan digambarkan dalam sebuah angka (Andri
Kristanto : 2004).

Beberapa metode pencarian yang menggunakan fungsi heuristik dalam mencari
solusi, yaitu Generate and test, Hill climbing, dan Best First Search (greedy best first search
dan A*) (Dewi Yusra Aini : 2010).

2.2.1.1 Generate and Test (Bangkitkan dan Uji)

Generate and Test merupakan penggabungan antara Depth - First Search dengan
backtracking. Metode ini hanya melibatkan setiap node dalam ruang pencarian dan pengujian
untuk melihat apakah itu simpul tujuan atau bukan. Jika ya, pencarian telah berhasil dan tidak
perlu

dilanjutkan,

jika


tidak

pindah

ke

node

berikutnya.

Metode ini merupakan bentuk sederhana dari brute force search (pencarian lengkap), disebut
demikian karena pecarian dilakukan dengan cara hanya melintasi pohon pencarian dan
bagaimana mengidentifikasi node awal dan node tujuan, dan pada akhirnya akan memeriksa
setiap node di pohon sampai menemukan tujuan (Coppin Ben : 2004 ).
Generate-and-Test merupakan prosedur Depth – First Search karena solusi harus
dibangkitkan secara lengkap sebelum dilakukan test dan juga disebut prosedur backtracking

karena ketika tidak ada lagi simpul yang bisa dibangkitkan pada satu lintasan maka dilakukan
backtracking terhadap simpul terdekatnya.


Generate and Test memiliki tiga sifat :
1. Bangkitkan suatu solusi yang mungkin. Untuk beberapa permasalahan, pembangkitan
ini berarti membangkitkan suatu simpul tertentu atau lintasan tertentu dari keadaan
awal.
2. Uji untuk melihat apakah simpul tersebut benar-benar merupakan solusinya dengan
cara membandingkan simpul yang dipilih atau simpul akhir suatu lintasan yang dipilih
dengan kumpulan tujuan yang dapat diterima atau diharapkan.
3. Jika solusi telah diperoleh maka keluar. Jika tidak maka ulangi kembali langkah
pertama.
Generate and Test dapat diterapkan pada sejumlah masalah di mana orang
memecahkan masalah ketika tidak ada informasi tambahan untuk mencapai solusi. Generate
and test juga sering disebut sebagai teknik pencarian buta (Coppin Ben : 2004).

Contoh kasus penyelesaian dengan menggunakan Generate and Test yaitu seorang
salesman ingin mengunjungi sejumlah n kota. Akan dicari rute terpendek di mana setiap kota
hanya boleh dikunjungi tepat 1 kali dan jarak setiap kota sudah diketahui. Misalkan ada 4
kota dengan jarak antara setiap kota seperti terlihat pada gambar berikut:

Gambar 2.7 Lintasan Generate and Test


Penyelesaian

dengan

menggunakan

Generate

and

Test

dilakukan

dengan

membangkitkan solusi-solusi yang mungkin dengan menyusun kota-kota dalam urutan abjad
dan membuat pohon pencarian :
1. A-B-C-D

2. A-B-D-C
3. A-C-B-D
4. A-C-D-B , dan seterusnya.

Gambar 2.8 Pohon pencarian Generate and Test
Misalkan kita mulai dari node A. Kita pilih sebagai keadaan awal adalah lintasan
ABCD dengan panjang lintasan = 18. Kemudian kita lakukan backtracking untuk
mendapatkan lintasan ABDC dengan panjang lintasan = 19. Lintasan ini kita bandingkan
dengan lintasan ABCD, ternyata ABDC > ABCD, sehingga lintasan terpilih adalah ABCD.
Kita lakukan lagi backtracking untuk mendapatkan lintasan ACBD =16, ternyata ACBD <
ABCD, maka lintasan terpilih sekarang adalah ACBD. Demikian seterusnya hingga
ditemukan solusi yang sebenarnya.

2.2.2 Pencarian Buta (Blind Search/Un-informed Search)

Dikatakan pencarian buta, karena pada pencarian ini tidak ada informasi awal. Disini hanya
akan dibahas dua metode pencarian, yaitu Breadth First Search dan Depth First Search
(Dewi Yusra Aini : 2010).

2.2.2.1 Breadth First Search (BFS)

Dalam hal ini, simpul – simpul yang terdekat dengan simpul awal ( start node ) akan dicari
paling awal sehingga urutan pencarianya mempunyai sifat yang horizontal. Algoritma ini
tidak akan terperangkap untuk menksplorasi sebuah jalan yang salah. Hal ini berlawanan
dengan algoritma depth first search yang mungkin mengikuti jalan tunggal yaitu jalan yang
salah dan waktu yang lama (Andri Kristanto : 2004).
S

A

C

B

E

D
H

F
G


Gambar 2.9 Tree untuk Breadth First Search

2.2.2.2 Depth First Search (DFS)
Depth – First Search (DFS) menggunakan struktur data Stack untuk mengingat kemana
seharusnya DFS pergi saat ia mencapai suatu simpul tertentu. DFS memiliki aturan tertentu,
aturan untuk DFS adalah (Nugroho Adi. 2009).:
1. Jika mungkin, lakukan kunjungan pada simpul-simpul pendamping (adjacent vertex)
yang belum pernah dikunjungi, tandai dan masukkan (push) ke Stack. Ketika tidak
ada lagi simpul pendamping yang belum dikunjungi. Masuk ke aturan 2.

2. Jika saat melakukan aturan diatas mengalami kesulitan, keluarkan (popped off) simpul
dari Stack maka akan sampai ke simpul di bawahnya. Jika simpul dibawahnya bukan
simpul pendamping yang belum dikunjungi, keluarkan lagi. Demikian selanjutnya
hingga tidak dapat melakukannya lagi dan masuk ke aturan 3.

3. Jika tidak dapat lagi mengikuti aturan 1 dan aturan 2, berarti algoritma DFS telah
selesai

B

F

H

G

I

C

A

D

E
Gambar 2.10 Lintasan Depth First Seacrh

Tabel 2.1 Isi Stack dalam DFS
Event

Isi Stack

Visit A

A

Visit B

AB

Visit F

ABF

Visit H

ABFH

Pop H

ABF

Pop F

AB

Pop B

A

Visit C

AC

Pop C

A

Visit D

AD

Visit G

ADG

Visit I

ADGI

Pop I

ADG

Pop G

AD

Pop D

A

Visit E

AE

Pop E

A

Pop A

FINISH

2.2.3 Backtracking

Backtracking adalah cara yang metodologis mencoba beberapa sekuens keputusan, sampai
menemukan sekuens yang bekerja. Algoritma backtracking banyak diterapkan untuk program
games seperti permainan tic-tac-toe, menemukan jalan keluar dalam sebuah labirin, catur,
crossword puzzle, sudoku¸dan masalah – masalah pada bidang kecerdasan buatan (artificial
intelligence).

Penyelesaian dengan backtracking :

1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan yang dipakai
adalah mengikuti Depth - First Search. Simpul – simpul yang sudah dilahirkan
dinamakan simpul hidup dan simpul hidup yang sedang diperluas dinamakan simpulE. Simpul dinomori dari atas kebawah sesuai dengan kelahirannya.

2. Jika lintasan yang diperluas yang sedang dibentuk tidak mengarah ke solusi, maka
simpul-E tersebut dibunuh sehingga menjadi simpul mati (dead node). Simpul yang
sudah mati ini tidak akan diperluas lagi.

3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian
diteruskan dengan membangkitkan simpul anak lainnya. Bila tidak ada lagi simpul
anak yang dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan
backtracking ke simpul hidup terdekat. Selanjutnya simpul ini menjadi simpul-E yang
terbaru.
4. Pencarian dihentikan bila telah ditemukan solusi atau tidak ada lagi simpul hidup
untuk backtracking.

Lintasan Terpendek (Shortest Path)

2.3

Lintasan terpendek (Shortest Path) merupakan lintasan minimum yang diperlukan untuk
mencapai suatu titik dari titik tertentu. Dalam pencarian lintasan terpendek, masalah yang
dihadapi adalah mancari lintasan mana yang akan dilalui, sehingga didapat lintasan yang
paling pendek dari satu verteks ke verteks yang lain.

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

Pada persoalan lintasan terpendek, yang menjadi masalah adalah lintasan terpendek
antara dua buah verteks, dimana bobot pada setiap edge graph digunakan untuk menyatakan
jarak antar kota dalam satuan kilometer (km) (Dewi Yusra Aini : 2010).

2.4

Pengertian Database

Kumpulan file – file yang mempunyai kaitan antara satu file dengan file yang lain sehingga
membentuk satu bangunan data untuk menginformasikan satu perusahaan, instansi dalam
batasan terntentu. Bila terdapat file yang tidak dapat dipadukan atau diubungkan dengan file
yang lainnya berarti file tersebut bukanla kelompok dari satu database, ia akan dapat
membentuk satu database sendiri (Ir. Harianto Kristanto).
Beberapa istilah yang digunakan dalam Sistem Basis Data (Database):
1. Entity : merupakan orang,tempat, kejadian tau konsep yang informasinya direkam.
Pada bidang Administrasi Siswa misalnya, entity adalah siswa, buku, pembayaran,
nilai test. Pada bidang kesehatan, entity adalah pasien,dokter,obat,kamar,diet.
2.

Atribute : setiap entity mempunyai atribute atau sebutan untuk mewakili suatu entity.
Seorang siswa dapat diliat dari atributenya, misalnya nama, nomor siswa, alamat,

nama orang tua, hobby. Atribute juga disebut sebagai data elemen, data field, data
item.
3. Data value (nilai atau isi data) : merupakan data aktual atau informasi yang disimpan
pada tiap data elemen atau atribute. Atribute nama karyawan menunjukan tempat
dimana informasi nama karyawan disimpan, sedangkan data valuenya adalah
Sutrisno, Budiman, merupakan isi data nama karyawan tersebut
4. Record / Tuple : merupakan kumpulan elemen - elemen yang saling berkaitan
menginformasikan tentang suatu entity secara lengkap. Satu record mewakili satu
data atau informasi tentang seseorang misalnya, nomor karyawan, nama karyawan,
alamat, kota, tanggal masuk.
5. File : merupakan kumpulan record-record sejenis yang mempunyai panjang elemen
yang sama, atribut yang sama, namun berbeda-beda data valuenya.

6. Database Management System (DBMS) : merupakan kumpulan file yang saling
berkaitan bersama dengan program untuk pengelolaannya. Database adalah kumpulan
datanya, sedang program pengelolaannya berdiri sendiri dalam satu paket program
yang komersial untuk membaca data, mengisi data, menghapus data, melaporkan data
dalam database.

Flow Chart

2.5

Flowchart adalah bagan yang menggambarkan urutan logika dari suatu prosedur pemecaan
masalah. Simbol yang digunkan pada flowcart dapat dilihat pada tabel berikut (Heri Sismoro :
2005).
Tabel 2.2 Simbol-simbol Flowchart Program
Simbol

Fungsi
Terminator
Menunjukkan awal dan akhir suatu proses.
Preparation
Memberikan nilai awal pada suatu variabel atau counter

Processing
Menunjukan pengolahan aritmatika dan pemindahan data
Input/output
Menunjukan proses input dan output
Decision
Mewakili operasi perbandingan logika
Predefined Process
Proses yang ditulis sebagai subprogram, yaitu prosedur /
fungsi
Connector
Penghubung pada halaman yang sama
Off page connector
Penghubung pada halaman yang berbeda
Flow Lines
Arah proses

2.6 UML (Unified Modeling Language)

Unified Modeling Language adalah sebuah bahasa graphis yang telah menjadi standar dalam
industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML
merupakan dasar fundamental dari teknik analisis berorientasi objek, berbentuk diagramdiagram yang digunakan untuk menampilkan konstruksi dari sistem berorientasi objek,
seperti cetak biru (blue print) suatu pembangunan gedung yang menggambarkan konstruksi
bangunan tersebut (Mardiansyah Matondang : 2012).

2.6.1 Use-case Diagram
Use-case diagram menggambarkan secara graphis perilaku perangkat lunak. Diagram ini
memberikan gambaran menurut perspektif pengguna perangkat lunak. Sebuah use-case
diagram mengandung actor, use-case dan interaksi antara actor dengan use-case.

2.6.1.1 Actor

Actor merupakan segala sesuatu yang perlu berinteraksi dengan sistem untuk pertukaran
informasi. Actor memberikan suatu gambaran jelas tentang apa yang harus dilakukan
perangkat lunak. Actor dinotasikan seperti pada Gambar 2.11.

Gambar 2.11 Actor

2.6.1.2 Use case

Use case merupakan hasil penyusunan kembali lingkup fungsionalitas sistem menjadi banyak
pernyataaan fungsionalitas sistem yang lebih kecil. Sebuah use case merepresentasikan satu
tujuan tunggal dari sistem dan menggambarkan satu rangkaian kegiatan dan interaksi
pengguna untuk mencapai tujuan. Use case menggambarkan fungsi-fungsi sistem dari sudut
pandang pengguna eksternal. Diagram ini juga dapat diartikan sebagai urutan transaksi
berkaitan yang dilakukan satu actor dengan perangkat lunak.Use case dinotasikan seperti
pada Gambar 2.12 berikut:

Gambar 2.12 Use case

2.6.1.3 Interaksi Actor dengan Use-case

Interaksi Actor dengan Use case dinotasikan seperti pada Gambar 2.13.

Gambar 2.13 Use-case Diagram

2.6.2 Activity Diagram

Activity diagram memodelkan alur kerja (workflow) sebuah proses bisnis dan urutan aktifitas
dalam suatu proses. Diagram ini sangat mirip dengan sebuah flowchart karena kita dapat
memodelkan sebuah alur kerja dari satu aktifitas ke aktifitas lainnya atau dari satu aktifitas ke
dalam keadaan sesaat (state).

Activity diagram menggambarkan aliran aktifitas dari sistem yang sedang dirancang,
bagaimana masing-masing aliran berawal, decision yang mungkin terjadi, dan bagaimana
mereka berakhir. Diagram ini juga dapat menggambarkan proses paralel yang mungkin
terjadi pada beberapa eksekusi. Contoh activity diagram diperlihatkan pada Gambar 2.14.

User Memilih tombol Menu

Sistem Menampilkan sub Menu

User dapat memilih sub Menu

User Memilih sub Menu Peta

Sistem Menampilkan Peta

User dapat melihat peta

Gambar 2.14 Activity Diagram

Gambar 2.14 Activity Diagram

2.6.3 Sequence Diagram

Sequence diagram menjelaskan interaksi objek yang disusun dalam suatu urutan waktu.
Diagram ini memperlihatkan tahap demi tahap apa yang harus terjadi untuk menghasilkan
sesuatu di dalam use-case. Sequence diagram secara khusus berinteraksi dengan use-case
(Mardiansyah Matondang : 2012).

Masing-masing sequence diagram menggambarkan aliran pada suatu use case.
Sequence diagram dapat dibaca dengan melihat pada objek-objek dan pesan-pesan
(message). Objek-objek yang berperan dalam aliran diperlihatkan pada kotak empat persegi
panjang yang melintas pada bagian atas diagram. Setiap objek memiliki garis hidup (lifeline),
yang digambarkan sebagai garis vertikal di bawah nama suatu objek.Notasi sequence diagram
dijelaskan seperti Gambar 2.15.

Gambar 2.15 Sequence Diagram

2.6.4 Analisis Persyaratan dengan UML

Analisis persyaratan meliputi usaha untuk mengetahui apa kemampuan sebuah sistem yang
diinginkan pengguna dan pelanggan dari sebuah pembuat perangkat lunak. Analisis ini

dilakukan untuk mendapatkan informasi atau persyaratan cukup untuk mempersiapkan model
yang menggambarkan apa yang diperlukan dari perspektif pengguna (Mardiansyah
Matondang : 2012).

Diagram yang digunakan dalam analisis persyaratan yaitu:
1. Use case diagram yang digunakan untuk menunjukkan fungsionalitas suatu sistem
dan bagaimana sistem berinterakasi dengan dunia luar.
2. Activity diagram yang menunjukkan alur kerja (work flow) sebuah proses bisnis dan
urutan aktivitas dalam suatu proses.
3. Class

diagram

yang

membantu

dalam

visualisasi

struktur

sistem

yang

mendeskripsikan jenis-jenis objek dalam suatu sistem dan hubungan yang terdapat
diantara objek tersebut.
4. Package diagram yang digunakan untuk mengelompokkan elemen-elemen model
atau kelas.

2.6.5 Desain dengan UML

Saat membuat desain adalah saat untuk berpikir secara teknis dalam menggambarkan
diagram-diagram UML. Diagram yang digunakan dalam mendesain sistem yaitu:
1. Class diagram dalam sudut pandang perangkat lunak, untuk menunjukkan class yang
terdapat di dalam perangkat lunak dan bagaimana mereka saling berhubungan.
2. Sequence diagram untuk menjelaskan interaksi objek yang disusun dalam suatu
urutan waktu.
3. Package diagram yang digunakan untuk mengelompokkan elemen-elemen model
atau kelas.
Deployment diagram yang menunjukkan arsitektur fisik sebuah system (Mardiansyah
Matondang : 2012).