My first Magazine pemrograman-kompetitif-dasar | Page 105

9.3 Representasi Graf pada Pemrograman Untuk implementasi adjacency list , kita dapat menggunakan struktur data array of dynamic array . Tiap dynamic array berisi keterangan mengenai tetangga suatu node . Ukuran dari array merupakan V , yang mana V merupakan banyaknya node . Dengan menggunakan dynamic array , banyaknya memori yang digunakan untuk setiap node hanya sebatas banyak tetangganya. Secara keseluruhan jika graf memiliki E edge , maka total memori yang dibutuhkan adalah O(E). Jika diimplementasikan dengan array of dynamic array , maka sifat-sifat adjacency list adalah: • Kompleksitas menambah edge adalah O(1), dan menghapus adalah O(K) dengan K adalah banyaknya tetangga dari node yang edge -nya dihapus. • Memeriksa apakah dua node terhubung oleh edge juga dilakukan dalam O(K). • Demikian juga untuk mendapatkan daftar tetangga dari node , kompleksitasnya adalah O(K). Perhatikan bahwa pencarian daftar tetangga ini adalah cara paling efisien yang mungkin. 9.3.3 Edge List Pada edge list , seluruh informasi edge disimpan pada sebuah penampung. Penampung ini berupa struktur data yang juga dapat mendukung operasi simpan, cari, dan hapus data. Untuk pembahasan kali ini, kita akan menggunakan struktur data array sebagai penampungnya. Dengan menggunakan array , simpan informasi pasangan node yang terhubung oleh suatu edge . Pada graf yang berbobot, kita juga perlu menyimpan bobot dari edge yang bersangkutan. Jelas bahwa memori yang dibutuhkan adalah O(E), dengan E adalah banyaknya edge pada keseluruhan graf. A D B C hA, Bi, hA,Ci, hA, Di, hB, Ai, hC, Di Gambar 9.16: Graf tidak berbobot beserta edge list -ya . Untuk graf berbobot, kita juga menyimpan bobot dari setiap edge . 1 B A 3 2 5 8 D C hA, B, 3i, hA,C, 2i, hA, D, 5i, hB, A, 1i, hC, D, 8i Gambar 9.17: Graf berbobot beserta edge list -ya. Jika diimplementasikan dengan array , maka sifat-sifat edge list adalah: • Kompleksitas menambah edge adalah O(1). 95