0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan53 halaman

TM10 BasicGraph

Diunggah oleh

hendry ming
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
15 tayangan53 halaman

TM10 BasicGraph

Diunggah oleh

hendry ming
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 53

Struktur Data

TK13024
Pertemuan 10
Struktur Data Graph
Objektif
• Mempelajari karakteristik struktur
data Graph dan macam-macamnya
• Mengimplementasikan struktur data
Graph
• Mempelajari aplikasi struktur data
graph
Pendahuluan
• Graph: kumpulan dari node-node yang disebut vertex dan
edge yang menghubungkan vertex. Vertex dan edge dapat
menyimpan informasi.
• Hubungan antar node: many to many
• Dibanding struktur data tree, graph lebih umum, lebih banyak
mengandung komponen yang terhubung dan boleh
mengandung cycle

• Contoh graph dalam kehidupan sehari-hari:


(a) Peta: nama kota adalah vertex dan jalan yang
menghubungkan antar 2 kota adalah edge
(b) Jaringan komputer: komputer, printer, atau hub adalah
vertex, dan kabel yang menghubungkan antar komputer,
printer atau hub adalah edge
Contoh Graph:

Pontianak Menado
Medan

Palembang
Makasar
Surabaya
Padang

Jakarta

Jogjakarta Denpasar
Konsep Dasar dan Terminologi
• Graph G(V,E) adalah graph yang mengandung
himpunan vertex V dan himpunan edge E. Edge E
adalah pasangan vertex (v1, v2) dengan v1 dan v2
adalah anggota V.
• Pada graph tidak berarah (undirected graph atau disebut
graph saja) maka e(v1, v2) = e(v2, v1)
• Pada graph berarah (directed graph – digraph), jika ada
e(v1,v2) maka belum tentu ada e(v2,v1).

v1 v2 v1 v2

v3 v4 v3 v4
Graph Digraph
Konsep Dasar dan Terminologi (2)
• Unweighted graph: graph yang edge-nya tidak
menyimpan bobot/informasi (lihat graph dan
digraph di slide 5)
• Weighted graph: graph yang edge-nya menyimpan
bobot/ informasi, seperti jarak, biaya, kapasitas, dan
lainnya.

• (weighted digraph)
Konsep Dasar dan Terminologi (3)
• Adjacent (tetangga): dua vertex yang berbeda, v1
dan v2 yang dihubungkan dengan edge atau disebut
v1 adalah neighbor (tetangga) dari v2
• Adjacency set: himpunan vertex yang merupakan
tetangga dari suatu vertex atau v1 v2
Vx = { y | (x,y) ε E }
Contoh:
• Untuk Graph pada slide 5: v3 v4

Adjacency set dari v1 adalah v2,v3 dan v4


• Untuk Digraph pada slide 5: v1 v2
Adjacency set dari v1 adalah v2 dan v4

v3 v4
Konsep Dasar dan Terminologi (4)
• Path (jalur): deretan dari vertex-vertex yang tiap
vertexnya adalah tetangga dari vertex yang lainnya
atau p = v1 v2 ... vn, (n > 2)
• Path length: banyaknya edge pada path. Untuk
unweighted graph maka path length = n – 1. Untuk
weighted graph maka path length = jumlah dari
bobot edge dalam path.
• Simple path: path yang vertex –vertex nya hanya
muncul 1 kali (tidak berulang)
• Contoh untuk Digraph pada slide 6:
Path length dari v2 ke v6:
➔ Path = v2, v0, v3, v6
➔ Path length = 4 + 1 + 4 = 9
Konsep Dasar dan Terminologi (5)
• Cycle (siklus): path yang panjangnya lebih dari 2
vertex, yang dimulai dan diakhiri oleh vertex yang
sama.
• Simple cycle: path yang melewati 3 atau lebih vertex
yang berbeda dan menghubungkan vertex-vertex
tersebut menjadi sebuah loop.
• Non simple cycle: cycle yang tidak termasuk dalam
simple cycle.
• Acyclic: graph/digraph yang tidak mempunyai cycle

• Contoh : lihat digraph di slide 6


→ Simple cycle: v2, v0, v3, v2
Konsep Dasar dan Terminologi (6)
• Connected (terhubung): graph G(V,E) disebut
connected graph jika ada edge dari setiap vertex ke
vertex yang lain
• Connected component: subset dari vertex dalam
graph G yang semuanya terhubung antara satu
dengan lainnya
Konsep Dasar dan Terminologi (7)
• Complete graph: setiap vertex dalam graph
mempunyai edge ke vertex yang lain.
• Disconnected graph: ada satu atau lebih vertex yang
tidak terhubung dengan vertex yang lain.
Konsep Dasar dan Terminologi (8)
• Dense graph: selalu ada edge yang menghubungkan
semua vertex dalam graph atau |E| ≈ |V2|
• Sparse graph: tidak semua vertex mempunyai edge
ke vertex yang lain atau |E| ≈ |V|

v1 v2

v3 v4
Konsep Dasar dan Terminologi (9)
• Strongly connected: jika untuk setiap pasang vertex
(vi, vj) dalam digraph maka vi terhubung ke vj dan vj
terhubung ke vi.
• Weakly connected: jika untuk setiap pasang vertex
(vi, vj) dalam digraph maka vi terhubung ke vj atau vj
terhubung ke vi.

Connected digraph Weakly connected digraph


Konsep Dasar dan Terminologi (10)
• Degree: banyaknya edge yang
terhubung ke suatu vertex dalam
graph.
• Indegree: dalam digraph, banyaknya
predecessor dari suatu vertex
• Outdegree: dalam digraph,
banyaknya succcessor dari suatu
vertex
• Contoh:
→ Graph pada slide 12: tiap vertex
mempunyai degree = 5
→ Digraph pada slide 13:
➔ vertex A mempunyai:
indegree = 2 dan outdegree = 2
Konsep Dasar dan Terminologi (11)
• Directed Acyclic Graph (DAG): digraph yang tidak
mempunyai cycle
Contoh: pengambilan matakuliah dengan prasyaratnya
Konsep Dasar dan Terminologi (12)

• Maze (labirin) dapat direpresentasikan


dengan graph:
Hubungan Tree dengan Graph
• Struktur data Tree termasuk struktur data
Graph yang bersifat khusus, yaitu hubungan
antar node adalah parent-child atau bersifat
hirarki
• Tree dapat dikatakan adalah connected graph
without cycles
• Semua Tree termasuk dalam Graph, tetapi
tidak berlaku sebaliknya
Representasi Graph
Ada 2 cara, yaitu:
(1) Adjacency matrix: matriks T[i,j] yang berisi 1
jika ada edge dari vertex vi ke vertex vj dan 0
jika tidak ada edge dari vertex vi ke vertex vj
Contoh: v1 v2 v1 v2
1 2 3 4 1 2 3 4
1 0 1 1 1 1 0 1 0 1
2 1 0 0 1 v3 v4 2 0 0 0 1
3 1 0 0 1 3 1 0 0 1 v3 v4

4 1 1 1 0 4 0 0 0 0
adjacency matrix adjacency matrix
dari graph slide 5 dari digraph slide 5
Representasi Graph (2)
• Adjacency matrix dari graph selalu
menghasilkan matriks simetris atau
T[i,j] == T[j,i] sehingga dapat digunakan
representasi matriks triangular.
• Adjacency matrix dari digraph belum
tentu menghasilkan matriks simetris
• Pada weighted graph maka angka 1
diganti dengan bobot pada edge.
• Contoh: Weighted Digraph di Slide 6:

Vertex V0 V1 V2 V3 V4 V5 V6
V0 0 2 0 1 0 0 0
V1 0 0 0 3 10 0 0
V2 4 0 0 0 0 5 0
V3 0 0 2 0 2 8 4
V4 0 0 0 0 0 0 6
V5 0 0 0 0 0 0 0
V6 0 0 0 0 0 1 0
Representasi Graph (3)
(2) Adjacency List:
Menggunakan array dari vertex sebagai awal list. Ada
dua cara:
v1 v2
(a) Sequential adjacency list
(b) Linked adjacency list
Contoh representasi digraph slide 5: v3 v4
Vertex
Vertex Degree Adjacency list vertex link
V1 2 V2 V4 V1: V2 V4 •
V2 1 V4 V2: V4 •
V3 2 V1 V4 V3: V1 V4 •
V4 0
V4: •
(a) (b)
Representasi Graph (3)
• Adjacency list sebaiknya digunakan untuk
merepresentasikan sparse graph dan digraph
• Contoh adjacency list untuk weighted Digraph di slide 6
Graph Traversals
• Definisi: mengunjungi (visit) semua vertex dalam
graph G, dalam urutan tertentu mulai dari suatu
vertex.
• Dalam beberapa buku, disebut juga Graph
Searching
• Dalam graph, setiap vertex dapat dipilih sebagai
vertex awal untuk memulai traversal. Tetapi untuk
tree, harus selalu dimulai dari root node
• Untuk masalah ini pada definisi vertex ditambah
satu field, v.visited, yang berjenis boolean. Pada
inisialisasi dibuat bernilai false, jika vertex telah
dikunjungi, dibuat bernilai true.
Graph Traversals (2)
• Algoritma umum:
(1) Tentukan vertex awal, misal V1, ubah field v.visited
menjadi true.
(2) Masukkan tetangga V1 ke container
(3) Ambil satu vertex dari container, misal V2, ubah
field v.visited menjadi true.
(4) Masukkan tetangga V2 yang belum ada di
container ke container dan belum dikunjungi.
(5) Lakukan langkah 3 dan 4 sampai semua vertex
dikunjungi
Graph Traversals(3)
Ada 2 jenis container:
(A) Stack:
Algoritmanya menjadi:
(1) Tentukan vertex awal, misal V1, ubah field v.visited menjadi
true.
(2) Push vertex tetangga dari V1
(3) Pop (vertex dari) stack, misal V2, ubah field v.visited
menjadi true.
(4) Push vertex tetangga V2 yang belum ada di stack dan belum
dikunjungi.
(5) Lakukan langkah 3 dan 4 sampai semua vertex dikunjungi

➔ kunjungi satu tetangga, lalu kunjungi satu tetangga dari


tetangga yang telah dikunjungi, dan seterusnya
➔ Depth First Search (DFS)
Graph Traversals (4)
• Ilustrasi kunjungan vertex secara DFS untuk
graph yang berbentuk tree:
Graph Traversals (5)
• Sebagai contoh, diketahui digraph berikut:

DFS

Stack:

Hasil:
ABEFCHIDG

BFS

Queue:

Hasil:
ABDEGFHCI
Tabel hasil penelusuran secara DFS yang dimulai dari vertex A:
Graph Traversals (6)
(B) Queue:
Algoritmanya menjadi:
(1) Tentukan vertex awal, misal V1, ubah field v.visited menjadi
true.
(2) Insert semua vertex tetangga dari V1
(3) Remove (vertex dari) queue, misal V2, ubah field v.visited
menjadi true.
(4) Insert semua vertex tetangga V2 yang belum ada di queue
dan belum dikunjungi.
(5) Lakukan langkah 3 dan 4 sampai semua vertex dikunjungi
➔ mengunjungi semua tetangga V1, lalu semua tetangga dari
tetangganya V1 dan seterusnya.
➔ Breadth First Search (BFS)
Graph Traversals (7)
• Ilustrasi kunjungan vertex secara BFS untuk
graph yang berbentuk tree:
Graph Traversals (8)
• Sebagai contoh, untuk digraph di slide 27,
maka hasil penelurusan secara BFS dapat
dilihat pada slide berikut.
Tabel hasil penelusuran secara BFS yang dimulai dari vertex A:
Graph Traversals (9 .1)
Contoh: start dari node 1
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

Hasil: 1 3 6 7 4 2 5 8 9 Hasil: 1 3 4 6 7 2 8 5 9
Graph Traversals (9 .1)
Contoh: start dari node 1
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

3 1 3 4
Hasil: 1 Hasil: 1
Graph Traversals (9 .2)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

6 3 4 6 7
Hasil: 1 3 Hasil: 1 3
Graph Traversals (9 .3)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

7 3 6 7 2 8
Hasil: 1 3 6 Hasil: 1 3 4
Graph Traversals (9 .4)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

4 7 3 7 2 8
Hasil: 1 3 6 7 Hasil: 1 3 4 6
Graph Traversals (9 .5)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

2 4 7 3 2 8
Hasil: 1 3 6 7 4 Hasil: 1 3 4 6 7
Graph Traversals (9 .6)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

5 2 4 7 3 8 5
Hasil: 1 3 6 7 4 2 Hasil: 1 3 4 6 7 2
Graph Traversals (9 .7)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

8 5 2 4 7 3 5
Hasil: 1 3 6 7 4 2 5 Hasil: 1 3 4 6 7 2 8
Graph Traversals (9 .8)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

9 5 2 4 7 3 9
Hasil: 1 3 6 7 4 2 5 8 Hasil: 1 3 4 6 7 2 8 5
Graph Traversals (9 .9)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search: Breadth first search:


Stack: Queue:
TOS Front Rear

9 5 2 4 7 3
Hasil: 1 3 6 7 4 2 5 8 9 Hasil: 1 3 4 6 7 2 8 5 9
Graph Traversals (9 .10)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

5 2 4 7 3
Hasil: 1 3 6 7 4 2 5 8 9
Graph Traversals (9 .11)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

2 4 7 3
Hasil: 1 3 6 7 4 2 5 8 9
Graph Traversals (9 .12)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

4 7 3
Hasil: 1 3 6 7 4 2 5 8 9
Graph Traversals (9 .13)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

7 3
Hasil: 1 3 6 7 4 2 5 8 9
Graph Traversals (9 .14)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

3
Hasil: 1 3 6 7 4 2 5 8 9
Graph Traversals (9 .15)
Contoh:
1 2

3 4 5

6 7 8 9

Depth first search:


Stack:
TOS

Hasil: 1 3 6 7 4 2 5 8 9
Implementasi Graph (3)
• Performansi untuk operasi dasar
struktur data Graph adalah:
Latihan soal
Untuk digraph A dan B di slide berikut, tentukanlah:
1. Adjacency matrix dan adjacency list
2. Pilih vertex A, lalu kunjungi semua vertex dengan cara DFS
dan BFS, buat tabel hasil penelusuran untuk masing-masing
cara.
3. Ubahlah digraph A dan B menjadi graph, lalu tentukan
adjacency matrix dan adjacency list dari graph ini.
4. Pilih vertex A, lalu kunjungi semua vertex dengan cara DFS
dan BFS untuk graph pada no 3 di atas. Buat tabel hasil
penelusuran untuk masing-masing cara
Latihan soal
A. Diketahui digraph berikut:
Latihan soal
B. Diketahui Digraph berikut ini:

16 8
6

6
5
PR 10 Teori
• Kelompok no ganjil: Latihan Soal dan
gunakan digraph pada no A
• Kelompok no genap: Latihan soal dan
gunakan digraph pada no B
PR Praktikum 10
• Buat progam Java untuk
mengimplementasikan struktur data graph
• Buat method untuk BFS dan DFS lalu uji
dengan dua graph di latihan soal

Anda mungkin juga menyukai