Studi dan Implementasi Struktur Data Graf

dokumen-dokumen yang mirip
= himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = himpunan sisi (edges) yang menghubungkan sepasang simpul

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

BAB II LANDASAN TEORI

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

BAB II LANDASAN TEORI

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Aplikasi Pewarnaan Graf untuk Sistem Penjadwalan On-Air Stasiun Radio

G r a f. Pendahuluan. Oleh: Panca Mudjirahardjo. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.

PENERAPAN GRAF DAN POHON DALAM SISTEM PERTANDINGAN OLAHRAGA

Algoritma Penentuan Graf Bipartit

Pemanfaatan Algoritma Sequential Search dalam Pewarnaan Graf untuk Alokasi Memori Komputer

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Representasi Graf dalam Pola Strategi Permainan Futsal

Penggunaan Teori Graf Pada Aplikasi Biro Jodoh

Pewarnaan Simpul pada Graf dan Aplikasinya dalam Alokasi Memori Komputer

TEORI GRAF DALAM MEREPRESENTASIKAN DESAIN WEB

Graf dan Pengambilan Rencana Hidup

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

Aplikasi Teori Graf Pada Knight s Tour

Penggunaan Struktur Graf dalam Pengontrol Versi Git

Penggunaan Pohon Biner Sebagai Struktur Data untuk Pencarian

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Demak Semarang. Kend al. Salatiga.

Aplikasi Pewarnaan Graph pada Pembuatan Jadwal

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

APLIKASI PEWARNAAN SIMPUL GRAF UNTUK MENGATASI KONFLIK PENJADWALAN MATA KULIAH DI FMIPA UNY

PEWARNAAN GRAF SEBAGAI METODE PENJADWALAN KEGIATAN PERKULIAHAN

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

Aplikasi Graf Berarah dan Pohon Berakar pada Visual Novel Fate/Stay Night

Graph. Politeknik Elektronika Negeri Surabaya

Aplikasi Graf dan Pohon Pada Permainan Kantai Collection

BAB II LANDASAN TEORI

APLIKASI GRAF DALAM BISNIS TRAVEL BANDUNG-BOGOR

Aplikasi Aljabar Lanjar pada Teori Graf dalam Menentukan Dominasi Anggota UATM ITB

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

Penerapan Graf pada PageRank

Pendeteksian Deadlock dengan Algoritma Runut-balik

Graf. Matematika Diskrit. Materi ke-5

I. PENDAHULUAN. Gambar 1. Contoh-contoh graf

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

APLIKASI PEWARNAAN GRAPH PADA PEMBUATAN JADWAL

Dasar-Dasar Teori Graf. Sistem Informasi Universitas Gunadarma 2012/2013

Graf Sosial Aplikasi Graf dalam Pemetaan Sosial

Pencarian Lintasan Hamilton Terpendek untuk Taktik Safe Full Jungle Clear dalam Permainan League of Legends

BAB 2 LANDASAN TEORI

BAB III KONSEP DASAR TEORI GRAF. Teori graf adalah salah satu cabang matematika yang terus berkembang

I. PENDAHULUAN II. DASAR TEORI. Penggunaan Teori Graf banyak memberikan solusi untuk menyelesaikan permasalahan yang terjadi di dalam masyarakat.

I. PENDAHULUAN. Gambar 1: Graf sederhana (darkrabbitblog.blogspot.com )

Aplikasi Representasi Graf

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

Aplikasi Pohon dan Graf dalam Kaderisasi

Aplikasi Teori Graf dalam Permainan Instant Insanity

Analogi Pembunuhan Berantai Sebagai Graf Dalam Investigasi Kasus

Denny Setyo R. Masden18.wordpress.com

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI. Algoritma adalah urutan atau deskripsi langkah-langkah untuk memecahkan suatu masalah.

Aplikasi Pewarnaan Graf pada Penjadwalan Pertandingan Olahraga Sistem Setengah Kompetisi

IMPLEMENTASI ALGORITMA PRIM DENGAN TEORI GRAPH PADA APLIKASI WPF GRAPH

Aplikasi Teori Graf dalam Pencarian Jalan Tol Paling Efisien

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

Graf. Program Studi Teknik Informatika FTI-ITP

Penerapan Teori Graf Pada Algoritma Routing

Representasi Hierarki Kebutuhan Maslow Menggunakan Teori Graf

Algoritma Prim sebagai Maze Generation Algorithm

Kasus Perempatan Jalan

Representasi Graf dalam Jejaring Sosial Facebook

Aplikasi Teori Graf Pada Knight s Tour

Pencarian Jalur Terpendek dengan Algoritma Dijkstra

BAB 2 LANDASAN TEORI. Secara garis besar ilmu statistik dibagi menjadi dua bagian yaitu:

BAB II TINJAUAN PUSTAKA

Kode MK/ Pemrograman Terstruktur 2

R = {(Amir, IF251), (Amir, IF323), (Budi, IF221), (Budi, IF251), (Cecep, IF323) }

MATEMATIKA DISKRIT RELASI

POLINOMIAL KARAKTERISTIK PADA GRAF KINCIR ANGIN BERARAH

Kode MK/ Matematika Diskrit

Aplikasi Graf pada Fitur Friend Suggestion di Media Sosial

Penyelesaian Teka-Teki Sudoku dengan Didasarkan pada Teknik Pewarnaan Graf

Pengaplikasian Graf Planar pada Analisis Mesh

Penerapan Pewarnaan Graf dalam Pengaturan Penyimpanan Bahan Kimia

BAB 2 LANDASAN TEORI

Penerapan Pewarnaan Graf pada Permainan Real- Time Strategy

BAB 2 TINJAUAN PUSTAKA

Penerapan Graf Berupa Senarai Berkait serta Algoritma Dijkstra dalam Pemrosesan Data Struktur Bangunan

PEMAKAIAN GRAF UNTUK PENDETEKSIAN DAN PENCEGAHAN DEADLOCK PADA SISTEM OPERASI

BAB II LANDASAN TEORI

Art Gallery Problem II. POLIGON DAN VISIBILITAS. A. Poligon I. PENDAHULUAN. B. Visibilitas

LOGIKA DAN ALGORITMA

TEORI GRAF UNIVERSITAS MUHAMMADIYAH JEMBER ILHAM SAIFUDIN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK. Selasa, 13 Desember 2016

Aplikasi Pohon Merentang Minimum dalam Rute Jalur Kereta Api di Pulau Jawa

Pengaplikasian Graf dalam Pendewasaan Diri

Penggunaan Graf pada Pemetaan Genetik dan Integrasi Peta Genetik

Deteksi Wajah Menggunakan Program Dinamis

Pengaplikasian Graf dan Algoritma Dijkstra dalam Masalah Penentuan Pengemudi Ojek Daring

Penerapan Algoritma Backtracking pada Pewarnaan Graf

BAB 2 TINJAUAN PUSTAKA

Penerapan Pohon Keputusan pada Penerimaan Karyawan

BAB 2 LANDASAN TEORI. 2.1 Penugasan Sebagai Masalah Matching Bobot Maksimum Dalam Graf Bipartisi Lengkap Berlabel

STUDI BILANGAN PEWARNAAN λ-backbone PADA GRAF SPLIT DENGAN BACKBONE SEGITIGA

Transkripsi:

Studi dan Implementasi Struktur Data Graf Fajar Dwi Anggara Program Studi Informatika, Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung, Jalan Ganesha 10, Bandung email: if15039@students.if.itb.ac.id Abstract Makalah ini membahas tentang pokok bahasan dalam matematika diskrit yaitu Teori Graf dan implementasinya berupa Struktur Data Graf. Teori graf merupakan konsep yang sudah cukup lama dipakai dan diterapkan pada banyak bidang. Makalah ini menyajikan bagaimana tataran konseptual graf, yaitu tentang gambaran umum, definisi graf, hingga sampai pada tataran implementasi, yaitu bagaimana konsep tersebut diterapkan khususnya dalam bidang ilmu komputer. Untuk melengkapi sudut pandang tersebut, makalah ini juga menyertakan implementasi struktur data graf dalam potongan kode program Java. Kata Kunci: teori graf, struktur data graf, java berdasar orientasi arah pada sisi, karena definisi dari golongan graf ini diperlukan dalam pembahasan selanjutnya. Berdasarkan orientasi arah pada sisi, secara umum graf dapat dibedakan menjadi 2 jenis [1] : 1. Graf tak berarah (undirected graph) Graf yang sisinya tidak mempunyai orientasi arah disebut graf tak berarah. Pada graf tak-berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. Gambar 1: Graf tak berarah 1. PENDAHULUAN Dalam bidang matematika dan ilmu komputer, teori graf mempelajari tentang graf yaitu struktur yang menggambarkan relasi antar objek dari sebuah koleksi objek. Definisi dari suatu graf adalah himpunan bendabenda yang disebut verteks (atau node) yang terhubung oleh sisi (atau edge atau arc). Biasanya graf digambarkan sebagai kumpulan titik-titik (melambangkan verteks) yang dihubungkan oleh garis-garis (melambangkan sisi). Definisi tersebut dituangkan dalam notasi matematika sebagai berikut : G,dengan V E = (V,E) = himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = v1, v2,..., vn = himpunan sisi (edges) yang menghubungkan sepasang simpul = e1, e2,..., en Graf memiliki banyak jenis, di antaranya berdasarkan ada tidaknya gelang atau sisi ganda, kemudian ada juga yang dibedakan bedasar orientasi arah pada sisisisinya. Pembahasan akan dikhususkan pada jenis graf Graf di atas merupakan salah satu contoh graf tak berarah dimana sisi-sisi yang menghubungkan antar simpul dalam graf tersebut tidak memiliki orientasi arah. Sesuai apa yang telah disebutkan di atas, urutan pasangan simpul tidak diperhatikan, dalam contoh ini, (Anchorage,Corvallis) = (Corvallis,Achorage), menyatakan pasangan simpul yang sama. 2. Graf Berarah (directed graph) Graf yang setiap sisinya memiliki orientasi arah disebut sebagai graf berarah. Sisi berarah dalam graf ini dapat dinamakan sebagai busur (arc). Lain halnya dengan graf tak-berarah, urutan pasangan simpul disini sangat diperhatikan karena dapat menyatakan hal yang berbeda. Pada graf berarah, (v j,v k ) dan (v k,v j ) menyatakan dua buah busur yang berbeda.

matrix dimana baris dan kolom dari matriks (jika dalam konteks implementasi berupa senarai dua dimensi) tersebut merepresentasikan simpul awal dan simpul tujuan dan sebuah entri di dalam senarai yang menyatakan apakah terdapat sisi di antara kedua simpul tersebut. 2.1. Adjacency List Dalam teori graf, adjacency list merupakan bentuk representasi dari seluruh sisi atau busur dalam suatu graf sebagai suatu senarai. Simpul-simpul yang dihubungkan sisi atau busur tersebut dinyatakan sebagai simpul yang saling terkait. Dalam implementasinya, hash table digunakan untuk menghubungkan sebuah simpul dengan senarai berisi simpul-simpul yang saling terkait tersebut. Gambar 2 : Graf Berarah Graf di atas merupakan contoh dari graf berarah yang memiliki sisi-sisi dengan orientasi arah (busur). (Denver,Flagstaff) dan (Flagstaff,Denver) pada graf di atas menyatakan dua busur yang berbeda sebagaimana bisa dilihat dalam gambar, terdapat dua buah busur yang menghubungkan antara kota Denver dan Flagstaff. Untuk busur (Denver,Flagstaff), simpul Denver dinamakan sebagai simpul asal (initial vertex) dan simpul Flagstaff dinamakan simpul terminal (terminal vertex). 2. STRUKTUR DATA GRAF Dalam bidang ilmu komputer, sebuah graf dapat dinyatakan sebagai sebuah struktur data, atau secara spesifik dinamakan sebagai ADT(abstract data type) yang terdiri dari kumpulan simpul dan sisi yang membangun hubungan antar simpul. Konsep ADT graf ini merupakan turunan konsep graf dari bidang kajian matematika. Pokok bahasan sebelumnya menjelaskan bahwa graf menampilkan visualisasi data dan hubungannya. Sedangkan jika berbicara masalah implementasi struktur data graf itu sendiri, isu utama yang dihadapi adalah bagaimana informasi itu disimpan dan dapat diakses dengan baik, ini yang dapat disebut dengan representasi internal. Secara umum terdapat dua macam representasi dari struktur data graf yang dapat diimplementasi. Pertama, disebut adjacency list, dan diimplementasi dengan menampilkan masing-masing simpul sebagai sebuah struktur data yang mengandung senarai dari semua simpul yang saling berhubungan. Yang kedua adalah representasi berupa adjacency Gambar 3 : Undirected Cyclic Graph Graf pada gambar 3 dapat dideskripsikan sebagai senarai a,b,a,c,b,c. Dan representasi adjacency list dapat digambarkan melalui tabel di bawah ini. Tabel 1. Representasi Adjacency List Vertex Adjacency Array of Adjacent Vertices a adjacent to b,c b adjacent to a,c c adjacent to a,b Salah satu kekurangan dari teknik representasi ini adalah tidak adanya tempat untuk menyimpan nilai yang melekat pada sisi. Contoh nilai ini antara lain berupa jarak simpul, atau beban simpul. 2.2. Adjacency Matrix Adjacency Matrix merupakan representasi matriks nxn yang menyatakan hubungan antar simpul dalam suatu graf. Kolom dan baris dari matriks ini merepresentasikan simpul-simpul, dan nilai entri dalam matriks ini menyatakan hubungan antar simpul, apakah terdapat sisi yang menghubungkan kedua simpul tersebut. Pada sebuah matriks nxn, entri non-diagonal a ij merepresentasikan sisi dari simpul i dan simpul j. Sedangkan entri diagonal a ii menyatakan sisi

kalang(loop) pada simpul i. Sisi yang berawal dari setiap simpul disimpan sebagai senarai simpul yang berhubungan. Senarai ini disimpan sebagai nilai yang memiliki kaitan dengan kunci yang sesuai dalam adjacency map. Sebagai contoh digunakan graf pada gambar 2. Representasi dari graf di atas akan terdiri dari sebuah pemetaan dengan masukan sebagai berikut : Key Value : Anchorage : [ Billings, Corvallis, Edmonton ] Gambar 4: Graf tak berarah berlabel Gambar 5: Adjacency matrix Gambar 5 merupakan adjacency matrix yang berkorelasi dengan graf tak berarah pada gambar 4. Kolom dan baris pada matriks merupakan simpulsimpul berlabel 1-6. Kelebihan dari adjacency matrix ini adalah elemen matriksnya dapat diakses langsung melalui indeks, dengan begitu hubungan ketetanggan antara kedua simpul dapat ditentukan dengan langsung. Sedangkan kekurangan pada representasi ini adalah bila graf memiliki jumlah sisi atau busur yang relatif sedikit, karena matriksnya bersifat jarang yaitu hanya mengandung elemen bukan nol yang sedikit. Kasus seperti ini merugikan, karena kebutuhan ruang memori untuk matriks menjadi boros dan tidak efisien karena komputer menyimpan elemen 0 yang tidak perlu. 3. HASIL DAN PEMBAHASAN Representasi internal yang dipakai dalam struktur data graf ini merupakan implementasi dari representasi senarai ketetanggaan dengan menggunakan sebuah hashmap. Simpul disimpan sebagai kunci dalam sebuah Map structure (struktur pemetaan) dengan tujuan agar mempermudah pencarian sebuah simpul. Struktur pemetaan ini selanjutnya disebut sebagai adjacency map. Gambar 6: Adjacency Map Jika adjacency map tersebut adalah sebuah HashMap dan sisi dari masing-masing simpul disimpan dalam sebuah senarai ketetanggan maka gambar di representasi internal dari contoh graf di atas ditunjukkan melalui gambar 5. Implementasi struktur data graf dalam bahasa pemograman java adalah berupa kelas bernama graph sebagai berikut : / class Graph @author Jim @version 1.0 public class Graph protected HashMap adjacencymap; / insialisasi Graf, membuat adjacency map public Graph() adjacencymap = new HashMap();

/ Memeriksa apakah Graf mengandung simpul @return true jika tidak mengandung simpul kosong. public boolean isempty() return adjacencymap.isempty(); / Mengembalikan jumlah simpul induk dalam graf public int size() return adjacencymap.size(); / Mengembalikan jumlah sisi dalam graf public int getedgecount() int count = 0; for (int i=0;i<adjacencymap.capacity;i++) if (adjacencymap.keys[i]!= null) LinkedList edges = (LinkedList) adjacencymap.get(adjacencymap.keys[i]); count += edges.size(); return count; / Menambahkan sebuah objek sebagai simpul @param vertex - the specified object @return true jika berhasil ditambahkan public boolean addvertex (Object vertex) if (adjacencymap.containskey(vertex)) return false; adjacencymap.put (vertex, new LinkedList()); return true; / Menambahkan sisi, dan simpul jika belum ada dalam graf @param v1 simpul awal mula sisi @param v2 simpul akhir dari sisi @return true - jika sisi berhasil ditambahkan ke dalam graf public boolean addedge (Object v1, Object v2) addvertex (v1); addvertex (v2); LinkedList l = (LinkedList) adjacencymap.get(v1); l.add(v2); return true; Untuk memberikan gambaran singkat tentang struktur data graf ini, akan ditunjukan bagaimana membentuk graf seperti gambar 2 dengan menggunakan fungsi dalam struktur data graf di atas. / Contoh implementasi ADT graf new instance, bentuk objek graph1 sebagai graph Graph graph1 = new Graph(); / gunakan fungsi addedge untuk menambah simpul-simpul ke dalam graf sesuai dengan hubungan ketetanggaan antar simpul graph1.addedge( Achorage, Billings ); graph1.addedge( Achorage, Corvalis ); graph1.addedge( Achorage, Edmonton ); graph1.addedge( Billings, Denver ); graph1.addedge( Billings, Edmonton ); graph1.addedge( Corvalis, Denver ); graph1.addedge( Denver, Edmonton ); graph1.addedge( Denver, Flagstaff ); graph1.addedge( Flagstaff, Denver ); graph1.addedge( Flagstaff, Houston ); graph1.addedge( Grand Rapids, Houston ); Kelas Graph tersebut memerlukan struktur data yang lain agar bisa diimplementasi, yaitu kelas HashMap dan LinkedList. Namun makalah ini tidak akan membahas kedua struktur data tersebut karena di luar bahasan masalah. 4. KESIMPULAN Makalah ini telah menunjukan bagaiaman konsep graf diimplementasi dalam bahasa pemrograman Java. Setelah melalui pembahasan, dapat diambil kesimpulan sebagai berikut : 1. Teori Graf merupakan salah satu cabang dari bidang Matematika Diskrit yang mempunyai banyak terapan di berbagai bidang.

2. Struktur data graf merupakan bentuk implementasi dari teori graf yang mencakup definisi, dan hukum-hukum yang menyertainya. 3. Struktur data graf menggunakan representasi internal senarai ketetanggaan dengan alasan efisiensi penggunaan untuk komputasi, karena penggunaan matriks ketetanggan kurang efisisen dan cenderung boros untuk kasus jumlah sisi sedikit sedangkan matriks ketetanggaan yang dibentuk berupa matriks jarang (sparse) DAFTAR REFERENSI [1] Munir, Rinaldi. 2003. Diktat Kuliah IF2153 Matematika Diskrit Edisi Keempat. Agustus 2003. Bandung : Penerbit ITB. [2] Joe Celko. 2004. Trees and Hierarchies in SQL for Smarties. Morgan Kaufmann. [3] Java Software Development 2. Scotland : Bell College. http://hamilton.bell.ac.uk/swdev2/notes/ Tanggal Akses : 3 Januari 2009 pukul 09.00 [4] http://en.wikipedia.org Tanggal Akses : 2 Januari 2009 pukul 14.00