My first Magazine pemrograman-kompetitif-dasar | Page 104

9 Perkenalan Graf 1 A B C D A ∞ 3 2 5 B 1 ∞ ∞ ∞ C ∞ ∞ ∞ 8 D ∞ ∞ ∞ ∞ A 3 B 2 5 8 D C Gambar 9.13: Graph berbobot beserta adjacency matrix -nya. Sifat-sifat adjacency matrix adalah: • • • • Pada graf tak berarah, adjacency matrix selalu simetris terhadap diagonalnya. Menambah atau menghapus edge dapat dilakukan dalam O(1). Memeriksa apakah dua node terhubung dapat dilakukan dalam O(1). Mendapatkan daftar tetangga dari suatu node dapat dilakukan iterasi O(V ), dengan V adalah banyaknya node . Meskipun mudah diimplementasikan, representasi ini cenderung boros dalam penggunaan memori. Memori yang dibutuhkan selalu O(V 2 ), sehingga tidak dapat digunakan untuk graf dengan node mencapai ratusan ribu. Jika banyaknya edge jauh lebih sedikit dari O(V 2 ), maka banyak memori yang terbuang. 9.3.2 Adjacency List Alternatif lain untuk representasi graf adalah adjacency list . Untuk setiap node , buat sebuah penampung yang berisi keterangan mengenai tetangganya. Penampung ini berupa struktur data yang dapat mendukung operasi simpan, cari, dan hapus data. Pada pembahasan ini, kita akan menggunakan struktur data linier yang telah dipelajari sebelumnya seperti array atau dynamic array . Untuk graf tidak berbobot, kita cukup menyimpan node -node tetangga untuk setiap node . Sementara untuk graf berbobot, kita dapat menyimpan node -node tetangga beserta bobotnya. A B C D A D B C [B,C, D] [A] [D] [] Gambar 9.14: Graf tidak berbobot beserta adjacency list -nya. 1 B A 3 2 C 5 8 D A B C D [hB, 3i, hC, 2i, hD, 5i] [hA, 1i] [hD, 8i] [] Gambar 9.15: Graf berbobot beserta adjacency list -nya. Informasi yang disimpan untuk suatu tetangga adalah pasangan data yang menyatakan node dan bobotnya. 94