• Tidak ada hasil yang ditemukan

1 Bab I Pendahuluan. 1.1 Latar Belakang. 1.2 Perumusan Masalah

N/A
N/A
Protected

Academic year: 2021

Membagikan "1 Bab I Pendahuluan. 1.1 Latar Belakang. 1.2 Perumusan Masalah"

Copied!
16
0
0

Teks penuh

(1)

xv

10

Daftar Istilah

Vertex Vertex sebuah objek yang mepresentasikan informasi tertentu,

tergantung konteks yang ingin dijadikan informasi

Edge Edge merupakan penghubung antar vertex dalam Graf

Graf Graf merupakan kumpulan dari vertex dan edge

Graph pattern Graph Pattern merupakan penggambaran pola dari graf Query Query merupakan perintah yang dikirimkan oleh pengguna

(2)

1

1

Bab I

Pendahuluan

1.1 Latar Belakang

Perkembangan dari analisis pola saat ini tidak lepas dari peran graf. Data yang memiliki lebih dari banyak domain direpresentasikan ke dalam graf untuk mempermudah proses manipulasi data [5]. Senyawa kimia, peta geografik, jaringan komputer, dan database adalah beberapa contoh data yang telah direpresentasikan ke dalam bentuk graf. Graf merupakan kumpulan dari vertex dan edge. Vertex digambarkan sebagai sebuah titik atau objek. Sedangkan edge digambarkan sebagai sebuah sisi yang menghubungkan suatu vertex dengan vertex lain.

Dari sudut pandang analisis pola pada graf, salah satu masalah yang penting adalah pencocokan subgraph atau pencocokan graph pattern pada graf untuk membandingkan keduanya[2]. Pertumbuhan keragaman dan ukuran data yang semakin mengacu pada data graf membuat model data, query language dan sistem

database yang ada saat ini tidak mendukung pemodelan dan manajemen data

tersebut[5]. Berbagai penelitian telah dilakukan untuk mengatasi masalah pencarian

graph pattern pada graf yang besar dengan jumlah vertex diatas 100[2].

Kompleksitas komputasi algoritma menjadi pertimbangan dalam pencarian graph

pattern pada graf. Pada graf yang besar memerlukan kompleksitas komputasi yang

rendah untuk mempercepat proses pencarian graph pattern. Salah satu teknik yang digunakan adalah dengan melakukan pemangkasan vertex dan edge yang tidak memiliki keterkaitan dengan pola yang dicari. Pencarian juga tidak sebatas pada pencarian informasi vertex dan edge saja. Informasi struktural dari vertex dan edge pada objek yang dicari sangat diperlukan agar informasi yang didapatkan tidak ada yang hilang[5]. Oleh karena itu, diperlukan suatu metode pencarian graph pattern dalam graf yang memiliki kemampuan untuk memberikan hasil berupa graf atau kumpulan dari beberapa graf.

Graph Query Language(GraphQL) merupakan salah satu metode yang dapat

digunakan untuk mencari graph pattern dalam suatu graf. GraphQL dapat digunakan pada graf yang berukuran besar. Teknik yang digunakan dalam pencarian pola adalah melakukan pemangkasan terhadap vertex dan edge pada graf, yang tidak memiliki keterkaitan dengan pola yang terdapat pada graph pattern. Kelebihan dari pemangkasan yang dilakukan oleh algoritma ini adalah pemangkasan yang dilakukan dua kali yaitu pemangkasan lokal dan pemangkasan global[7]. Hasil yang didapatkan dari pencarian dengan algoritma GraphQL adalah kumpulan dari beberapa graf.

1.2 Perumusan Masalah

Permasalahan yang diangkat dalam Tugas Akhir ini adalah:

1. Bagaimana menerapkan algoritma GraphQL (Graph Query language) dalam pencocokan graph database pada dataset?

2. Bagaimana performansi running time dan reduction ratio algoritma GraphQL (Graph Query Language)?

(3)

2

1.3 Tujuan

Tujuan yang ingin dicapai dari Tugas Akhir ini adalah:

1. Melakukan penerapan algoritma GraphQL(Graph Query Language) dalam pencocokan graph database pada dataset

2. Melakukan analisis untuk mengetahui performansi running time dan

reduction ratio algoritma GraphQL (Graph Query Language)

1.4 Batasan Masalah

Adapun batasan masalah dalam Tugas Akhir ini adalah: 1. Data graph database sebagai data uji lebih dari satu label 2. Graf yang dibangun berupa graf tidak berarah yang sederhana 3. Graph pattern yang digunakan berupa lintasan dan clique 4. Menggunakan bahasa pemrograman java.

1.5 Metodologi Penyelesaian Masalah

Metodologi penyelesesaian masalah terbagi dalam beberapa tahapan, yaitu: 1. Studi Literatur

Melakukan pengumpulan dan mempelajari data, informasi serta berbagai referensi yang berkaitan dengan pencocokan graf serta algoritma GraphQL sebagai konsep pengerjaan tugas akhir.

2. Pengumpulan dan Pengolahan Data

Mencari studi kasus berupa dataset graph database yang digunakan untuk mengimplementasikan algoritma GraphQL dalam pencocokan graph pattern pada graph database.

3. Desain Sistem

Melakukan perancangan serta pendefinisian masalah dan solusi yang diterapkan ke dalam implementasi sistem.

4. Implementasi

Melakukan implementasi algoritma GraphQL untuk melakukan pencocokan

graph pattern pada graph database.

5. Kesimpulan dan Laporan Hasil Analisis

Dalam pengambilan kesimpulan, yang dianalisis adalah data yang didapat dari pengujian performansi running time dan reduction ratio dari algoritma GraphQL. Pengambilan kesimpulan menggunakan langkah-langkah seperti pada gambar 1-1.

Gambar 1-1: Alur Pengambilan Keputusan

c. analisis performansi reduction ratio b. analisis performansi running time d. hasil analisis a. Implementasi algoritma GraphQL

(4)

3 Pada gambar 1-1, implementasi terhadap algoritma GraphQL pada graph

database dilakukan terlebih dahulu. Dalam proses implementasi tersebut

dilakukan pengamatan terhadap performansi performansi reduction ratio pada tahapan pemangkasan dan running time setiap tahapan algoritma GraphQL. Analisis running time untuk mengetahui lama waktu setiap proses dari algoritma GraphQL dan analisis reduction ratio untuk mengetahui keefektifan setiap tahap pemangkasan algoritma GraphQL.

6. Dokumentasi

Dari setiap tahapan yang dilakukan, dibuatkan dokumentasi agar setiap kegiatan dapat dipertanggungjawabkan secara jelas.

(5)

4

2

Bab II

Tinjauan Pustaka

2.1 Graph query Language

Graph quey language memiliki beragam definisi. Berikut ini adalah beberapa

contoh definisi tentang graph query language[5]: 1. Data Model

Data model pada GraphQL dapat digambarkan sebagai graf motif yang

mempunyai atribut pada vertex atau edge. Contoh : Graph G{ Vertex v1 <year=2006>; Vertex v2 <name=”A”>; } 2. Graph pattern

Graph pattern merupakan graf motif yang disertai dengan predikat pada

atribut. Graph pattern dapat disebut juga sebagai graph query yang bertujuan untuk mencari pola tertentu pada graf. Graph pattern direpresentasikan sebagai berikut:

= ( , ) M adalah graf motif dan F adalah predikat. Contoh 1 :

Graph P {

Vertex v1 where name =”A”; Vertex v2 where year>2000;

}; Contoh 2:

Graph P {

Vertex v1; Vertex v2;

} where v1.nama=”A” and v2.year>2000; 3. Graph pattern matching

P (M,F) dikatakan sama dengan graf G jika terdapat pemetaan injektif 1 ke 1, ∅ :V(M)  V(G) untuk ∀ e(u,v) ∈ E(M),( ∅(u), ∅(v)) merupakan edge dari G dan predikat F∅(G).Contoh pemetaan dari graph pattern pada graf G

Mapping ∅: ∅( . 1) → . 2 ∅( . 2) → . 1

2.2 Graf

Graf terbentuk atas dua komponen yaitu vertex dan edge yang direpresentasikan sebagai G=(V,E) dengan V adalah vertex sedangkan E adalah

(6)

5 dibagi menjadi dua jenis yaitu graf berarah dan graf tidak berarah. Graf berarah merupakan graf yang mempunyai arah sehingga keterhubungan antar vertex hanya satu arah, sedangkan pada graf tidak berarah keterhubungan antar vertex dapat dua arah. Contoh : E = {{x,y}} dalam graf berarah menunjukkan bahwa relasi dari

vertex tersebut hanya berasal dari vertex x ke y, dengan x adalah predecessor dan y

adalah successor. Jika graf tidak berarah, maka kedua vertex tersebut saling berhubungan. Vertex x berelasi ke vertex y dan vertex y berelasi ke x. Berikut ini adalah macam-macam graf [6]:

1. Mixed Graph

Mixed graph atau graf campuran merupakan gabungan dari graf berarah

dan graf tidak berarah yang ditulis sebagai G = (V,E,A) dimana A adalah arah dari edge.

2. Multi Graph

Multi graph memperbolehkan adanya loop. Loop adalah suatu edge yang

mengarahkan vertex pada vertex yang sama. Dalam orientasi arah, multi

graph dapat berupa graf berarah maupun graf tidak berarah.

3. Simple Graph

Simple graph merupakan graf tidak berarah yang tidak mempunyai loop.

Graph motif merupakan dasar dari stuktur data berbentuk graf. Berikut ini

adalah beberapa jenis graph motif beserta representasi graf dalam bentuk gambar: 1. Simple graph motif

Terdiri dari vertex dan edge

Graph G1{ Vertex v1,v2,v3; Edge e1 (v1,v2); Edge e2 ( v2,v3); Edge e3 (v3,v1); } 2. Concatenation

a. Concatenation berdasarkan edge

Graph G2{ Graph G1 as X; Graph G1 as Y; Edge e4 (X.v1,Y.v1); Edge e5 (X.v3, Y.v2); }

b. Concatenation dari proses penggabungan

Graph G3{ Graph G1 as X; Graph G1 as Y; Unify X.v1, Y.v1; Unify X.v3, Y.v2; } V1 V2 V3 E1 E2 E3 V1 V2 V3 E1 E2 E3 E4 E5 V V2 E1 E2 E3 E1 V3 E2 E3 V1(V1) V3(V2)

Gambar 2-1: Simple Graph Motif[5]

Gambar 2-2: Concatenation berdasarkan Edge[5]

Gambar 2-3: Concatenation dari Proses Penggabungan[5] V1 V2 V3 E E2 E3

(7)

6 3. Disjunction Graph G4{ Vertex v1,v2; Edge e1(v1,v2); { Vertex v3; Edge e2(v1,v3); Edge e3(v2,v3); } |{ Vertex v3,v4; Edge e2(v1,v3); Edge e3(v2,v4); Edge e4(v3,v4); }; }

4. Path dan cycle

Graph Path{ Graph path; Vertex v1;

Edge e1(v1, Path.v1); Export Path.v2 as v2; }|{ Vertex v1,v2; Edge e1(v`,v2; } Graph cycle{ graph Path; Edge e1(Path.v1,Path.v2); } 5. Repetition Graph G5{ Graph G5; Graph G1;

Export G5.vo as vo; Edge e1(vo,G1,v1);

}|{vertex vo};

Graf Berbobot

Graf dikatakan mempunyai bobot bila edge mempunyai atribut nilai seperti jarak atau kapasitas, dengan nilai tergantung dari masalah yang diangkat. Berikut ini merupakan contoh graf yang tidak berarah.

V1 V2 V3 E1 E2 E3 V1 V2 V3 E1 E2 E3 G V0 Gambar 2-7: Repetition[5] V1 V2 V3 E E E2 V1 V2 V3 E1 E3 E2 V4 V1 E1 V1 V2 E1 Path Gambar 2-4: Disjuction(1)[5] Gambar 2-5: Disjuction(2)[5]

(8)

7

Gambar 2-8: Multigraph Tidak Berarah

Gambar 2-8 merupakan contoh graf tidak berarah dengan

V={A,B,C,D,E} dan E={{A,B},{B,C},{A,C},{C,D},{D,D}}. Vertex A dan vertex C merupakan tetangga dari vertex B, sehingga vertex B berderajat 2. Vertex D memiliki derajat 3 akibat dari adanya edge e6 yang merupakan

sebuah loop yang dibaca dua arah. Vertex E adalah vertex terpencil karena

vertex tersebut tidak memiliki tetangga ataupun derajat.

Salah satu masalah dalam graf adalah pencocokan graf dengan subgraph atau graph subgraph isomorfis. Pencocokan graph subgraph merupakan proses menemukan korespondensi antara vertex dan edge suatu graf yang memastikan bahwa sub struktur serupa dapat dipetakkan ke sub struktur serupa yang lain[4].

Dalam proses tersebut bila G1 = (N1,B1) dan G2=(N2,B2), maka harus dilakukan penentuan pemetaan M yang berasosiasi vertex dari G1 ke

vertex G2 begitu juga sebaliknya. Pemetaan M ⊂ N1 x N2 dikatakan isomorfis jika M merupakan fungsi bijektid yang mempertahankan struktur cabang dari kedua graf. Begitu juga untuk pemetaan M ⊂ N1 x N2 merupakan graph subgraph isomorfis jika M isomorfis antara graf G2 dan

subgraph dari G1[2].

Subgraph (Graf Bagian)

Sebuah graf g merupakan subgraph dari graf G jika semua sisi dan titik yang berhubungan dari graf g merupakan bagian dari graf G. Sifat-sifat hubungan graf dengan subgraph :

1. Setiap graf merupakan subgraph dari dirinya sendiri

2. Subgraph dari suatu subgraph dari G adalah subgraph dari G 3. Sebuah titik di graf G merupakan subgraph dari G

4. Sebuah sisi dengan kesamaan titik dari graf G merupakan subgraph dari

G.

Gambar 2-10 merupakan subgraph dari graf G pada gambar 2-9 karena

subgraph g memiliki vertex dan edge yang merupakan bagian dari graf G. Gambar 2-10: Subgraph g Gambar 2-9: graf G A B C E1 E2 E3 E E4 E6 D

(9)

8 Graf Bipartit

Sebuah graf dikatakan bipartit jika vertex dalam graf dapat dibagi menjadi dua himpunan bagian, sedemikian hingga tidak ada vertex yang saling berhubungan dalam himpunan yang sama. Jika semua vertex pada suatu himpunan terhubung dengan vertex pada himpunan lain maka dapat disebut graph bipatit lengkap. Berikut ini merupakan graf bipartit lengkap.

Gambar 2-11: Graf Bipartit Lengkap

Pada gambar 2-11, graf terbagi menjadi dua himpunan, yaitu himpunan {a,b} dan himpunan{c,d,e,f}. semua vertex pada himpunan {a,b} memiliki

vertex yang terhubung ke vertex pada himpunan yang lain sehingga

membentuk graf bipartit lengkap. Graph Matching

Matching dalam suatu graf merupakan kumpulan dari edge dengan

setiap vertex yang hanya terhubung dengan satu edge. Graph Matching ini dapat berupa maximum matching, maximal matching, perfect matching, dan

semi perfect matching. Maximum matching merupakan kemungkinan edge

terbanyak pada matching M suatu graf. Maximal matching merupakan suatu

matching M dalam suatu graf yang jika ditambahkan edge yang bukan matching, maka tidak dapat disebut sebagai matching lagi. Perfect Matching

merupakan matching dengan semua vertex yang memiliki edge matching.

Semi perfect Matching merupakan graf yang mendekati perfect matching

dikarenakan adanya satu vertex yang tidak matching dan hanya terjadi jika graf mempunyai jumlah vertex yang ganjil.

2.3 Representasi Graf

Graf dapat direpresentasikan dengan dua cara yaitu matrik ketetanggaan dan

multi linked list. Berikut ini adalah contoh graf G.

Gambar 2-12: Graf G

Pada gambar 2-12, graf G terdiri dari empat buat vertex yaitu A, B,C, dan D dengan

vertex A,B,C yang saling terhubung, dan vertex C yang mempunyai edge terhubung

(10)

9 Matrik Ketetanggaan

Matrik ketetangaan dalam bahasa pemrograman berupa array dua dimensi. Isi dari matrik tersebut dapat berupa bobot yang menandakan keterhubungan antar vertex. Tabel 2-1 berikut ini adalah contoh representasi graf G pada gambar 2-12 dengan matrik ketetanggaan.

Tabel 2-1: Representasi Matrix Graf G

A B C D A 0 1 1 0 B 1 0 1 0 C 1 1 0 1 D 0 0 1 0 Multi Linked List

List memiliki sifat yang dinamis, sehingga data dapat diolah secara

dinamis juga. Gambar 2-13: merupakan representasi graf menggunakan multi

linked list.

Gambar 2-13: Representasi List Graf

Pada gambar 2-13, representasi vertex terdiri dari vertex id yang merupakan info dari vertex, first edge digunakan untuk menambahkan vertex asal dengan edge yang menghubungkan vertex tersebut dengan vertex lain, dan next merupakan index

vertex pada array. Edge terdiri dari vertex yang menunjuk pada vertex tujuan dan next sebagai index edge pada array.

2.4 Metode Penelusuran Graf

Metode penelusuran graph dapat menggunakan metode Breadth-First

Search (BFS) dan Depth-First Search (DFS).

Graph first first edge Next Vertex Id n ext Vertex first edge Next Vertex Id n ext Vertex n ext Vertex Vertex Vertex Edge Edge Edge

(11)

10 Breadth-First Search

Metode pencarian BFS melakukan pencarian mulai dari awal vertex

(root) di kedalaman 0 hingga kedalaman terakhir. Dalam implementasinya

BFS menggunakan Queue atau antrian untuk mengunjungi semua vertex yang ada. Dari graf pada gambar 2-12, urutan pencarian algoritma BFS dengan vertex A sebagai root adalah A,B,C,D.

Depth-First Search

Metode pencarian DFS melakukan pencarian mulai dari awal vertex kemudian menelusuri subtree terlebih dahulu, hingga semua vertex selesai ditelusuri. Implementasi DFS menggunakan stack atau tumpukan untuk mempermudah pengecekan vertex yang dikunjungi. Dari graf pada gambar 2-12, urutan pencarian algoritma DFS dengan vertex A sebagai root adalah

A,B ,C,D.

2.5 Graph Database

Graph database merupakan salah satu kategori dari NoSQL yang

memodelkan suatu database ke dalam bentuk graf. Sama seperti konsep graf, vertex merupakan data atau entitas sedangkan edge merupakan relasi atau hubungan antar

vertex. Dalam memodelkan ke graph database menggunakan fungsi Create,Read, Update, dan Delete. Graph database dapat direpresentasikan menggunakan adjacency list atau mengimplementasikan ke bentuk array.

Graph database terdiri dari [8]: 1. Graph Storage

Graph storage merupakan tempat penyimpanan graph database. Untuk

menyimpan graph database digunakan native graph storage, serialisasi data graf kedalam basisdata relasional, basisdata berbasis objek, dan lain-lain.

2. Graph Processing Engine

Digunakan untuk membentuk suatu graph database dan mengatur pemrosesan data.

Gambar 2-14 Graph Database have have records data organize records data in Graph Relationship Vertexs Properties

(12)

11 Ilustrasi pada gambar 2-14 menggambarkan konsep graph database yang terdiri atas vertex, relasi, dan edge. Vertex merupakan data sedangkan relasi untuk menghubungkan antar vertex. Setiap vertex dan relasi tersebut dapat memiliki

property atau atribut.

2.6 Algoritma GraphQL

Algoritma GraphQL merupakan salah satu algoritma pencocokan graph

pattern pada graf yang mampu menangani graf berukuran kecil hingga besar. Inti

dari algoritma GraphQL adalah persamaan dalam graf aljabar untuk proses seleksi dan komposisi. Operator seleksi untuk proses pemangkasan ruang pencarian graf, dan operator komposisi untuk membentuk graf baru dari ruang pencarian.

Algoritma ini menggunakan 4 teknik untuk mencocokan graph pattern pada graf. Pertama, mencari jangkauan pencarian dengan cara pemangkasan berdasarkan profil. Kedua, mengurangi jangkauan pencarian secara keseluruhan menggunakan konsep pseudo isomorphism test. Ketiga, mengoptimalkan urutan pencarian berdasarkan model biaya. Terakhir, melakukan kombinasi seluruh anggota dari ruang pencarian dan mencari kombinasi vertex yang sesuai dengan graph pattern. Berikut ini adalah tahap-tahap yang dilakukan algoritma GraphQL:

1. Pasangan Kelayakan

Pasangan kelayakan merupakan sekumpulan vertex dari graf G yang memenuhi predikat pada graph pattern.

Φ ( ) = { | ∈ ( ), ( ) = } 2. Ruang Pencarian

Ruang pencarian dari graph pattern matching merupakan sekumpulan dari pasangan kelayakan.

Ruang Pencarian = Φ ( ) Φ ( ) Φ ( ) Φ ( )

Banyaknya ruang ruang pencarian didapatkan dari jumlah vertex pada graph

pattern dikalikan hasil pasangan kelayakan tiap vertex.

3. Pemangkasan Lokal

Hasil dari pasangan kelayakan perlu dilakukan pemangkasan untuk mendapatkan ruang pencarian yang sedikit dan sesuai dengan graph

pattern. Ruang pencarian mempengaruhi waktu pencarian dari graph pattern matching. Semakin sedikit ruang pencarian mempercepat waktu

pencarian graph pattern. Berikut ini adalah contoh dari graf G dan graph

pattern P. A D B C A1 B1 A2 B3 B2 D2 C1 D1

Gambar 2-15: Graph Pattern P Gambar 2-16: Graf G

(13)

12 Terdapat dua cara dalam pemangkasan lokal ruang pencarian, yaitu: a. Pemangkasan berdasarkan tetangga

Pemangkasan berdasarkan tetangga melihat langsung segala informasi vertex v pada graph pattern P yang memiliki kesamaan dengan vertex u pada graf G. Hasil dari pasangan kelayakan merupakan hasil yang paling tepat dan hasil dari pemangkasan ini memangkas vertex lebih banyak. Namun untuk pemangkasan dengan cara ini membuat biaya komputasi menjadi tinggi[5]. Hasil pemangkasan graph pattern P dan graf G seperti yang terdapat pada gambar 2-15 dan gambar 2-16 adalah {A1}x{B1}x{C1}x{D1}. b. Pemangkasan berdasarkan profil

Pemangkasan bedasarkan profil dilakukan dengan cara melihat adanya tetangga dari vertex v pada vertex u. Dengan cara ini ruang pencarian yang dihasilkan lebih banyak daripada pemangkasan berdasarkan tetangga, namun secara komputasi biaya yang digunakan lebih kecil daripada pemangkasan berdasarkan tetangga [5]. Hasil pemangkasan : {A1}x{B1}x{B1}x{C1}x{D1}

4. Pemangkasan global

Pemangkasan ini dapat dapat disebut juga join reduction of search space. Pada tahap ini dilakukan pemangkasan menggunakan konsep pseudo

isomorphism test. Teknik ini mengecek setiap vertex dan pasangan

kelayakan dari Φ ( ) apakah subtree dari vertex di ( )

sub-isomorphic dengan vertex di ( ). Pengecekan dilakukan dengan menggunakan algoritma BFS untuk setiap dan pada kedalaman = 1. Jika pada tidak terdapat di , maka dihapus dari ruang pencarian. Langkah ini dilakukan sampai iterasi dari kedalaman sama dengan

refinement level . Tiap level dari dibuat graf bipartit , dari vertex dan vertex beserta tetangga-tetangganya. Graf , dilakukan pengecekan

semi-perfect matching untuk menentukan vertex yang tidak dipangkas. Graf

, semi-perfect matching jika vertex yang terbentuk dari memiliki tetangga, atau terhubung dengan vertex v yang memiliki kesamaan predikat. Untuk mengecek apakah graf semi-perfect matching dapat menggunakan algoritma Hopcroft and Karp’s dengan kompleksitas (O(n2.5) .Untuk lebih jelasnya dapat dilihat contoh berikut :

Gambar 2-17: Subtree yang Terbentuk dari u atau Vertex A

Gambar 17 merupakan subtree dari vertex A yang diambil dari gambar 2-16. Vertex A tersebut hanya memiliki tetangga B dan D.

A

(14)

13

Gambar 2-18: Subtree yang Terbentuk dari atau Vertex A2.

Gambar 2-18 merupakan subtree dari vertex A2 yang diambil dari gambar 2-15. Vertex A2 tersebut hanya memiliki tetangga C1 dan B3. Dari kedua subgraf pada gambar 2-17 dan 2-18 dibuat graf bipartite , dari tiap

subtree dan . Kemudian cek apakah ada vertex dari yang memiliki persamaan predikat dengan vertex di , jika sama hubungkan kedua vertex tersebut. Berikut ini adalah graf bipartit yang terbentuk.

Gambar 2-19: Graf B(A,A2)

Dari graf bipartit pada gambar 2-19, cek apakah vertex dan semi-perfect

matching. Jika semi-perfect matching maka vertex tetap disimpan, sedangkan jika tidak, dihapus dari ruang pencarian. Dari contoh diatas, dihapus karena vertex D tidak memiliki hubungan dengan vertex di . Berikut ini adalah contoh lain pada iterasi r kedua dengan cara pembentukan yang sama dengan iterasi sebelumnya.

Gambar 2-20: Subtree yang Terbentuk Dari atau Vertex B

Gambar 2-21: Subtree yang Terbentuk Dari atau Vertex B3

A2 C1 B3 B D A B3 C1 A2

(15)

14

Gambar 2-22: Graf BB,B3

Pada graf bipartite , , vertex A tidak dihubungakan dengan vertex A2 karena vertex A2 telah dihapus dari ruang pencarian Φ ( ) saat iterasi pertama dilakukan. Sehingga graf bipartite , tidak semi-perfect

matching, dan B3 dihapus dari ruang pencarian.

5. Optimasi ruang pencarian

Optimasi ruang pencarian menggunakan konsep model biaya dan urutan pencarian. Untuk mendapatkan biaya dapat dicari dengan rumus berikut

( ) = ( . ) ( . ) Υ(i)

i.kiri merupakan vertex sebelah kiri dan i.kanan adalah vertex sebelah kanan pada struktur tree yang telah dibangun. Bobot tiap vertex kiri atau kanan didapatkan dari jumlah anggota yang dimiliki pada ruang pencarian. Sedangkan Υ merupakan faktor reduksi. Faktor reduksi ini dapat menggunakan faktor reduksi konstan atau mencari faktor reduksi Υ(i) dengan cara mencari probilitas dari edge pada proses gabungan[5].

Υ(i) = ∏ ( , ) ( ) ( ( , )) (2.1)

P(e(u, v)) merupakan probilitas dari edge ( , ), yang dicari dengan rumus berikut:

( , ) = ( , )

( ). ( ) (2.2) Freq menandakan frekuensi dari edge pada graf.

Biaya dari gabungan I dicari menggunakan rumus berikut

( ) = ( . ) ( . ) (2.3)

Total Biaya dari urutan pencarian Γ adalah (Γ) = Biaya(i)

∈ (2.4)

2.7 Algoritma Greedy

Algoritma Greedy merupakan algoritma pencarian yang menggunakan pendekatan pencarian nilai maksimum di setiap langkahnya. Algoritma ini tidak akan memberikan hasil yang optimal namun dapat memberikan solusi yang mendekati optimal dengan pencarian yang cepat. Algoritma Greedy disusun oleh elemen-elemen seperti :

1. Himpunan kandidat sebagai elemen-elemen pembentuk solusi 2. Himpunan solusi, yaitu kadidat yang terpilih sebagai solusi persoalan 3. Fungsi seleksi, yaitu pemilihan kandidat yang paling memberikan solusi

optimal

4. Fungsi Kelayakan, yaitu pemeriksaan terhadap kadidat yang dipilih tepat atau tidak

B A D A2 B3 C1

(16)

15 5. Fungsi Obyektif, yaitu memaksimumkan nilai solusi

Secara umum, algoritma Greedy dapat mengikuti langkah-langkah berikut: 1. Mengunjungi salah satu titik awal, lalu mengambil seluruh titik yang

dapat dikunjungi oleh titik sekarang

2. Mencari lokal maksimum ke titik selanjutnya

3. Tandai titik yang telah dikunjungi, lalu pindahkan ke lokal maksimum yang telah ditentukan

4. Kembali ke langkah 1 sampai titik tujuan ditemukan.

2.8 Algoritma Dijkstra

Algoritma Dijkstra merupakan algoritma yang ditemukan oleh Edsger Wybe

Dijkstra pada tahun 1959. Algoritma ini dapat memecahkan masalah pencarian

lintasan terpendek pada graf berbobot. Langkah-langkah penentuan lintasan terpendek pada algoritma Dijkstra yaitu :

1. inisialisasi jarak semua vertex dengan nilai tidak terhingga dan melakukan inisialisasi jarak vertex sumber dengan nilai 0.

2. Tandai jarak vertex sumber sebagai jarak permanen dan jarak dari vertex lain sebagai jarak sementara

3. Set vertex sumber sebagai vertex terpilih.

4. Menghitung jarak sementara semua vertex dari tetangga vertex terpilih dengan menjumlahkan jarak vertex terpilih dengan jarak vertex tujuan. 5. Dari hasil perhitungan, ambil jarak terkecil dan jadikan vertex tujuan

sebagai vertex terpilih berikutnya

6. Ulangi langkah 4 sampai 6 sampai tidak ada vertex lagi yang dapat diset sebagai jarak permanen dengan tetangga yang masih memiliki jarak sementara.

Berdasarkan langkah-langkah tersebut, berikut ini adalah pseudocode dari algoritma Dijkstra.

1. function Dijkstra(Graph, source): 2. for each vertex v in Graph: 3. dist[v] := infinity 4. previous[v] := undefined 5. dist[source] := 0

6. Q := the set of all nodes in Graph 7. while Q is not empty:

8. u := node in Q with smallest dist[ ] 9. remove u from Q

10. for each neighbor v of u:

11. alt := dist[u] + dist_between(u, v) 12. if alt < dist[v]

13. dist[v] := alt 14. previous[v] := u 15. return previous[ ]

Gambar

Gambar 1-1: Alur Pengambilan Keputusan c. analisis performansi reduction ratiob. analisis performansi running time d
Gambar 2-1: Simple Graph Motif[5]
Gambar 2-6: Path dan Cycle[5]
Gambar  2-10  merupakan  subgraph  dari  graf  G  pada  gambar  2-9  karena  subgraph g memiliki vertex dan edge yang merupakan bagian dari graf G
+4

Referensi

Dokumen terkait

Kenaikan indeks harga terjadi pada subkelompok tembakau dan minuman beralkohol sebesar 1,04 persen, minuman yang tidak beralkohol sebesar 0,09 persen, serta makanan

value Teks default yang akan dimunculkan jika user hendak mengisi input maxlength Panjang teks maksimum yang dapat dimasukkan. emptyok Bernilai true jika user dapat tidak

Sebelumnya dikatakan bahwa Kecamatan Reok lolos untuk menjadi Pusat Kegiatan Lokal dikarenakan memiliki pelabuhan kelas III dan jalan areteri yang mendukung

Lokasi tersebut dipilih secara purposif dengan alasan (a) ja- lan lintas Papua merupakan jalan yang mengikuti garis perbatasan antara Indonesia dan Papua New Guinea

1.1 PERSIAPAN YANG PERLU DIPERHATIKAN Ada beberapa hal yang mungkin perlu diperhatikan sebagai seorang pengajar sebelum mengakses E-learning UPU diantaranya yaitu

Rencana ini menggambarkan arah, tujuan, sasaran, strategi, kebijakan, program dan kegiatan penyelenggaraan pembangunan lingkungan hidup dan kehutanan yang sesuai dengan tugas

The species is a member of a taxon of which most of the species are The species is a member of a taxon of which most of the species are included in Appendix II under the

Untuk menentukan adanya perbedaan antar perlakuan digunakan uji F, selanjutnya beda nyata antar sampel ditentukan dengan Duncan’s Multiples Range Test (DMRT).