BAB 2 LANDASAN TEORI
2.1
Teori graf
2.1.1 Definisi graf Graf adalah kumpulan dari minimal satu atau lebih simpul (vertex) yang dihubungkan oleh sisi atau busur (edge). Dalam kehidupan sehari-hari, graf banyak diaplikasikan (Suryanaga, 2003) seperti untuk pengaturan arus lalu lintas, jaringan komputer, pembuatan chip, jaringan sosial dan sebagainya.
Simpul didalam graf biasanya dilambangkan dengan titik sedangkan busur dilambangkan dengan garis. Contohnya : kota-kota di lambangkan dengan titik dan garis melambangkan jalan yang menghubungkan antar kota.
Gambar 2.1 Gambar graf dimana setiap titik mewakili kota-kota dan garis mewakili jalan.
Menurut Diestel (2000), sebuah graf G dapat diartikan sebagai himpunan berhingga dan tak kosong dari v
dan e yang merupakan
himpunan pasangan tak berurut dari unsur-unsur di v, dimana v=Vertex dan e=edge. G=(v,e)
Universitas Sumatera Utara
8
3 e1
e5
1 4
e3 e2
e4
2 Gambar 2.2 Gambar graf sederhana (G)
pada gambar 2.2, G memiliki v={1,2,3,4} dan e={(1,3), (1,2), (1,4), (2,4), (3,4)} atau {e1,e2,e3,e4,e5}.
Ada dua cara merepresentasikan sebuah graf (Adamchik, 2005) 1. Adjacency lists Representasi ini secara visual lebih mudah dimengerti, akan tetapi kurang bagus untuk dioperasikan bila vertex yang dimiliki terlalu banyak. Biasanya adjacency lists direpresentasikan seperti bentuk array.
Gambar 2.3 Gambar kiri merupakan graf (G), gambar kanan merupakan adjacency lists.
Kerugian potensial dari representasi adjacency-daftar adalah bahwa tidak ada cara cepat untuk menentukan apakah ada edge diantara dua simpul. 2. Adjacency matrix Representasi ini baik digunakan untuk representasi graf didalam komputer.
Universitas Sumatera Utara
9
Kekurangan dari adjacency lists dapat ditutupi dengan adjacency matrix. Adjacency matrix adalah matriks dari v x v dimana, Mi,j
1, jika ada 𝑒𝑑𝑔𝑒 diantara 𝑖 dan 𝑗 0, jika tidak ada 𝑒𝑑𝑔𝑒 diantara 𝑖 dan 𝑗
Gambar 2.4 gambar kiri merupakan graf (G), gambar kanan merupakan matriks dari graf(G)
2.1.2 Jenis-jenis graf Menurut Scheinerman dan Ullman (2008), berdasarkan ada atau tidaknya gelang (loop), graf digolongkan menjadi dua, yaitu : a. Graf sederhana (simple graph) Graf yang tidak memiliki loops dan sisi paralel. b. Graf tak-sederhana (unsimple graph/multigraph) Graf yang memiliki loops dan sisi paralel.
Menurut Munir (2008), Berdasarkan ada atau tidaknya arah, graf digolongkan menjadi dua, yaitu : a. Graf berarah (directed graph) Graf yang memiliki orientasi arah pada sisinya. (va,vb) ≠ (vb,va) Pada simpul (va,vb), va adalah simpul asal sedangkan vb adalah simpul tujuan. b. Graf tak berarah (undirected graph) Graf yang tidak memiliki orientasi arah pada sisinya. (va,vb) = (vb,va)
Universitas Sumatera Utara
10
Dalam hal ini tidak terdapat simpul asal maupun simpul tujuan karena bukan merupakan hal yang terlalu diperhatikan.
Berdasarkan bobotnya, graf juga terbagi menjadi dua, yaitu : a. Graf berbobot Graf yang setiap sisinya memiliki nilai atau harga. Misalnya sisi melambangkan jalan, bobot bisa merupakan panjang jalan dan sebagainya tergantung kebutuhan. b. Graf tak berbobot Graf yang setiap sisinya tidak memiliki nilai atau harga.
2.1.3 Walk dan path Menurut Yulianti (2008), walk dalam graf G adalah sebuah urutan tak nol yang suku-sukunya bergantian antara simpul dan sisi. dimana w = v0e1v1e2v2…eivi…ek vk
: 1≤
i≤k
Panjang dari sebuah walk adalah banyaknya sisi yang dilalui dalam walk tersebut.
Sebuah path atau jalur adalah walk dengan semua simpul dalam barisan berbeda.
Gambar 2.5 gambar graf (G) e – c – d – b – c – d – b – a adalah sebuah walk dengan panjang 7. e – c – d – b – a adalah sebuah path dengan panjang 4.
Universitas Sumatera Utara
11
Berdasarkan hasil diatas maka dapat dinyatakan bahwa setiap simpul walk pasti mengandung simpul path.
2.2
Searching (pencarian) Metode pencarian dapat dibedakan ke dalam dua jenis, yaitu: 1. pecarian buta/tanpa informasi (blind atau un-informed search) 2. pencarian heuristik/dengan informasi (heuristic atau informed search) Menurut Russel dan Norvig (1995), untuk mengukur performansi metode pencarian, terdapat 4 kriteria yang dapat digunakan, yaitu : a. Completeness : apakah metode tersebut menjamin penemuan solusi jika solusinya memang ada? b. Time complexity : berapa lama waktu yang diperlukan? c. Space complexity : berapa banyak memori yang diperlukan? d. Optimality : apakah metode tersebut menjamin menemukan solusi yang terbaik jika terdapat beberapa solusi berbeda?
2.2.1 Metode Pencarian Blind/Un-Informed Search
Metode pencarian blind/un-informed search merupakan metode pencarian tanpa adanya informasi awal yang digunakan dalam proses pencarian
Metode-metode yang termasuk kedalam teknik pencarian Blind/UnInformed Search , yaitu: a. Breadth First Search (BFS) b. Uniform Cost Search (UCS) c. Depth First Search (DFS) d. Depth-Limited Search (DLS) e. Iterative Deepening Search (IDS) f. Bi-Directional Search (BDS)
Universitas Sumatera Utara
12
2.2.2 Depth First Search (DFS) Pada metode DFS, pencarian dilakukan pada suatu simpul dalam setiap level dari paling kiri, jika pada level terdalam solusi belum ditemukan, maka pencarian dilanjutkan pada simbul sebelah kanan dan simpul yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi. Menurut Suyanto (2007), Kelebihan DFS adalah pemakaian memori yang lebih sedikit. DFS hanya menyimpan sekitar bd simpul, di mana b adalah faktor percabangan dan d adalah kedalaman solusi. Jika b = 10 dan d = 3, maka jumlah simpul yang disimpan di memori adalah 1 + 10 + 10 + 10 = 31. Hal ini berbeda jauh dengan Breadth First Search yang harus menyimpan semua simpul yang pernah dibangkitkan. Pada kasus tersebut, Breadth First Search harus menyimpan 1 + 10 + 100 + 1000 = 1111 simpul. Kelebihan lainnya adalah jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya dengan cepat. Sedangkan kelemahan DFS adalah jika pohon yang dibangkitkan mempunyai level yang sangat dalam (tak terhingga), maka tidak ada jaminan menemukan solusi. Artinya DFS tidak complete. Kelemahan lainnya adalah jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka DFS tidak menjamin untuk menemukan solusi yang paling baik artinya DFS tidak optimal.
Universitas Sumatera Utara
13
Algoritma DFS: 1. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar = simpul solusi, maka Stop. 2. Jika Q kosong, tidak ada solusi. Stop. 3. Ambil simpul v dari kepala (head) antrian. 4. Jika kedalaman simpul v sama dengan batas kedalaman maksimum, kembali ke langkah 2. 5. Bangkitkan semua anak dari simpul v. Jika v tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan semua anak dari v di antrian Q. 6. Jika anak dari simpul v adalah simpul tujuan, berarti solusi telah ditemukan, kalau tidak, kembali lagi ke langkah 2. A
A
B
C
D
E
H
I
J
B
F
K
L
G
M
N
O
H
E
I
J
F
K
F
E
K
N
O
H
F
E
I
J
K
L
G
M
N
H
N
Explore D
B
C
J
F
K
O
A
E
I
M
Explore B
D
O
L
G
Discovered [D,E,C]
B
C
J
M
D
A
B
I
L
G
C
Discovered [B,C]
A
H
B
C
D
Start with A
D
A
L
G
M
N
C
D
O
H
F
E
I
J
K
L
G
M
Discovered [H,I,E,C]
Finished H
Finished I,D
Explore H
Discovered [I,E,C]
Discovered [E,C]
Explore I
Gambar 2.6 proses algoritma DFS
Universitas Sumatera Utara
N
O
14
2.3 Unified Modeling Language (UML)
Unified Modeling Language (UML) adalah sebuah “bahasa” yang sudah menjadi standard industri untuk visualisasi, merancang dan mendokumentasikan sistem perangkat lunak (Dharwiyanti, S dan Wahono, S.R., 2003). Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML
juga menggunakan class dan operation dalam
konsep dasarnya, maka UML lebih cocok untuk penulisan piranti lunak dalam bahasa berorientasi objek. Unified Modeling Language (UML) bukanlah : 1. Bahasa pemrograman visual, tapi bahasa pemodelan visual. 2. Spesifikasi kakas, tetapi spesifikasi bahasa pemodelan. 3. Proses, tetapi yang memungkinkan proses-proses. UML membagi diagram menjadi dua tipe yaitu :
1. Diagram Struktur Diagram
ini untuk memvisualisasi,
menspesifikasi,
membangun dan
mendokumentasikan aspek statik dari sistem. Diagram struktur di UML terdiri dari : a. Diagram Kelas (Class diagram) b. Diagram Objek (Object diagram) c. Diagram komponen (Component Diagram) d. Diagram deployment (Deployment Diagram)
2. Diagram perilaku Diagram
ini untuk memvisualisasi,
menspesifikasi,
membangun dan
mendokumentasikan aspek dinamis dari sistem. Diagram struktur di UML terdiri dari :
Universitas Sumatera Utara
15
a. Diagram use-case (Use case diagram) b. Diagram sekuen (Sequence diagram) c. Diagram kolaborasi (Collaboration diagram) d. Diagram statechart (Statechart diagram) e. Diagram aktivitas (Activity diagram)
Universitas Sumatera Utara