My first Magazine pemrograman-kompetitif-dasar | Page 103
9.3 Representasi Graf pada Pemrograman
9.2.2 Directed Acyclic Graph
Directed acyclic graph (DAG) merupakan bentuk khusus dari directed graf, yang tepatnya
bersifat tidak memiliki cycle. Berbeda dengan tree yang mana setiap node harus dapat dikunjungi
dari node lainnya, sifat tersebut tidak berlaku pada DAG.
F
B
C
G
A
D
A
B
E
C
(a)
F
D
E
(b)
Gambar 9.11: Gambar (a) merupakan DAG, sedangkan gambar (b) bukan karena memiliki cycle,
yaitu [B,C, E, D].
9.3
Representasi Graf pada Pemrograman
Dalam pemrograman, dibutuhkan sebuah struktur agar data mengenai graf dapat disimpan
dan diolah secara efisien. Representasi yang akan kita pelajari adalah adjacency matrix , adja-
cency list , dan edge list . Masing-masing representasi ini memiliki keuntungan dan kerugiannya.
Pemilihan representasi mana yang perlu digunakan bergantung dengan masalah yang dihadapi.
9.3.1 Adjacency Matrix
Kita akan menggunakan matriks dengan ukuran V ×V dengan V merupakan banyaknya node .
Misalnya matriks ini bernama matrix.
Pada graf tidak berbobot:
• Jika terdapat edge dari A ke B, maka matrix[A][B] = 1.
• Jika tidak ada, maka matrix[A][B] = 0.
A
D
B
C
A
B
C
D
A
0
1
0
0
B
1
0
0
0
C D
1 1
0 0
0 1
0 0
Gambar 9.12: Graph tidak berbobot beserta adjacency matrix -nya.
Untuk graf berbobot, terdapat sedikit perbedaan:
• Jika terdapat edge dari A ke B dengan bobot w, maka matrix[A][B] = w.
• Jika tidak ada, maka dapat ditulis matrix[A][B] = ∞.
93