2 LNDSN 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. ontohnya : 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)
8 1 e1 3 e3 e5 4 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}. da dua cara merepresentasikan sebuah graf (damchik, 2005) 1. djacency lists Representasi ini secara visual lebih mudah dimengerti, akan tetapi kurang bagus untuk dioperasikan bila vertex yang dimiliki terlalu banyak. iasanya 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. djacency matrix Representasi ini baik digunakan untuk representasi graf didalam komputer.
9 Kekurangan dari adjacency lists dapat ditutupi dengan adjacency matrix. djacency matrix adalah matriks dari v x v dimana, Mi,j 1, jika ada edge diantara i dan j 0, jika tidak ada edge diantara i dan j 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), erdasarkan ada atau tidaknya arah, graf digolongkan menjadi dua, yaitu : a. Graf berarah (directed graph) Graf yang memiliki orientasi arah pada sisinya. (v a,v b ) (v b,v a ) Pada simpul (v a,v b ), v a adalah simpul asal sedangkan v b adalah simpul tujuan. b. Graf tak berarah (undirected graph) Graf yang tidak memiliki orientasi arah pada sisinya. (v a,v b ) = (v b,v a )
10 Dalam hal ini tidak terdapat simpul asal maupun simpul tujuan karena bukan merupakan hal yang terlalu diperhatikan. erdasarkan 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 = v 0 e 1 v 1 e 2 v 2 e i v i e k v k : 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.
11 erdasarkan 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. ompleteness : 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 lind/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 lind/un- Informed Search, yaitu: a. readth First Search (FS) b. Uniform ost Search (US) c. Depth First Search (DFS) d. Depth-Limited Search (DLS) e. Iterative Deepening Search (IDS) f. i-directional Search (DS)
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 readth First Search yang harus menyimpan semua simpul yang pernah dibangkitkan. Pada kasus tersebut, readth 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. rtinya 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.
13 lgoritma 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. mbil simpul v dari kepala (head) antrian. 4. Jika kedalaman simpul v sama dengan batas kedalaman maksimum, kembali ke langkah 2. 5. angkitkan 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. Start with Discovered [,] Explore Discovered [D,E,] Explore D Discovered [H,I,E,] Explore H Finished H Discovered [I,E,] Explore I Finished I,D Discovered [E,] Gambar 2.6 proses algoritma DFS
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. ahasa 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 (lass diagram) b. Diagram Objek (Object diagram) c. Diagram komponen (omponent 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 :
15 a. Diagram use-case (Use case diagram) b. Diagram sekuen (Sequence diagram) c. Diagram kolaborasi (ollaboration diagram) d. Diagram statechart (Statechart diagram) e. Diagram aktivitas (ctivity diagram)