download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 21
ADT Graph
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat merumuskan program
modular untuk mengimplementasikan ADT
graph
2
Outline Materi
•
•
•
•
•
•
•
pengertian dan kegunaan graph
Graph berarah dan tidak berarah
complete graph
representasi graph
Adjacency matrix & Adjacency list
weighted edge graph
contoh implementasi
3
GRAPH - Definisi
0
1
2
3
G=(V,E)
Himpunan dari node/vertex
(minimal satu) dan edge
edge
vertex
Tiap edge menghubungkan
2 vertex
4
Graph
Undirected Graph
V(G1) = { 0, 1, 2, 3 }
1
E(G1) = {(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)}
0
1
3
2
4
0
2
3
Undirected Graph
V(G2) = { 0, 1, 2, 3, 4, 5 }
E(G2) = {(0,1), (0,2), (1,3), (1,4), (2,5)}
5
0
1
Directed Graph
V(G3) = { 0, 1, 2}
E(G3) = {<0,1>, <1,0>, <1,2>}
2
5
Graph - COMPLETE GRAPH
COMPLETE GRAPH
Semua vertex saling berhubungan
• Undirected graph:
Jumlah edge = n(n-1)/2
• Directed graph:
Jumlah edge = n(n-1)
0
1
2
3
0
1
2
3
n: jumlah vertex
6
Graph - SUBGRAPH
0
1
2
3
SUBGRAPH : bagian dari graph
Contoh bbrp subgraph dari graph di atas :
0
0
0
1
1
2
2
3
1
2
3
7
Graph - PATH
• PATH : lintasan kunjungan (traversal) ke sejumlah
vertex melalui edge yang berurutan. Pada edge yang
berurutan, vertex akhir (terminal vertex) dari edge
sebelumnya akan menjadi vertex awal (initial vertex)
dari edge berikutnya.
Terminal vertex <Saskatoon,
Rosetown>
Initial vertex <Rosetown,
Kinderslay>
Panjang path = jumlah edge dalam path
Panjang path Saskatoon-Calgary = 5
8
Graph - PATH
•
0
Simple Path (1 x kunjungan/vertex)
Simple Directed Path (G3):
1
0 2: 0, 1, 2
1 0: 1, 0
2
Simple Path (G1):
0 2: 0, 1, 3, 2
1 2: 1, 3, 0, 2
G3
• Cycle (dari dan menuju satu vertex)
0
1
2
Directed Cycle: 0, 1, 0 (G3)
Cycle: 0, 1, 2, 0 (G1)
3
G1
9
Graph - CONNECTEDNESS
H1
0
1
2
3
H2
G1
0
1
3
2
4
G2
5
Undirected Graph
• Undiredted graph disebut
connected jika terdapat path
antara semua pasangan
vertex shg tiap vertex dalam
graph dapat dikunjungi dari
sembarang vertex dalam
graph
• H1, G2 connected graph
• G1 bukan connected graph
karena H1 dan H2 tidak
dihubungkan oleh edge
10
Graph - CONNECTEDNESS
Directed Graph
• Weakly : hanya ada satu
path ke setiap vertex
• Unilaterally : paling tidak ada
satu vertex yang dapat
dicapai dari semua vertex
• Strongly : jika setiap vertex
mempunyai directed path
dari semua vertex yang lain
11
Graph - DEGREE
• Undirected graph
0
1
2
3
G1
0
1
2
G3
Degree sebuah vertex = jumlah
edge yg menuju/ keluar dari
vertex
Degree 0 = 3
• Directed graph (digraph)
In-degree 1 = 1
Out-degree 1 = 2
Degree = 3
• Graph:
Jumlah edge = (jumlah degree
semua vertex) /2
12
REPRESENTASI
• Adjacency Matrix
Biasanya digunakan untuk merepresentasikan graph
yang berukuran besar
• Adjacency List
Biasanya digunakan untuk merepresentasikan graph
berukuran kecil hingga sedang
13
Graph – ADJACENCY MATRIX
• Jika G adalah graph yang mempunyai n
vertex v1 .. vn, maka diperlukan matriks
dengan orde nxn
• Komponen adjacency matrix
aij = 1 jika ada edge antara vi dan vj
aij = 0 lainnya
14
Graph – ADJACENCY MATRIX
0
1
0
1
2
3
Adjacency Matrix utk undirected graph
2
• Bersifat simetri diagonal
3
• Disimpan sebagai array
segitiga
0 1 2 3
• Degree vertex i = Jumlah
komponen matriks pd baris i
0 1 1 1
Jumlah baris 1 = 3 berarti
1 0 1 1
degree verteks 1 = 3
1 1 0 1
1 1 1 0
15
Graph – ADJACENCY MATRIX
v1 v2 v3 v4 v5
v1
0
1
0
1
1
v2
0
0
0
1
0
v3
0
0
0
0
1
v4
0
0
0
0
0
v5
0
1
0
0
0
Σ=3
Σ=2
Jumlah komponen pd 1 baris : jumlah edge yang berasal dari verteks
baris tsb / out-degree (Σ baris v1=3)
Jumlah komponen pd 1 kolom : jumlah edge yang menuju ke verteks
kolom tsb / in-degree (Σ kolom v4 =3)
16
Graph – ADJACENCY LIST
Head node vertex
link
0
1
2
3
1
0
2
3
2
0
1
3
3
0
1
2
0
1
2
3
• Jika ada n verteks dan e edge, maka ada n head node
dan 2e list node
17
Graph – ADJACENCY LIST
• Undirected graph
Degree node : banyak node dalam satu list
• Digraph
Out-degree node : banyak node dalam satu
list
In-degree node : ditentukan dari inverse
adjacency list
Inverse adjacency list :
Head list menyatakan terminal node
Node dlm list menyatakan initial node
18
Graph – ADJACENCY LIST
Deklarasi untuk Adjacency List
typedef struct node *nodepointer;
typedef struct node {
int
vertex;
struct node
*link;
};
nodepointer graph[MAX_VERTICES];
19
Representasi untuk Weighted Graph
• Adjacency Matrix
Komponen matriks adalah weight dari edge
Perhitungan degree, in/out-degree harus
dimodifikasi
• Adjacency List
Harus ditambahkan satu field pada struct
untuk menampung weight
20
21