Anda di halaman 1dari 13

BAB IV

TREES

1. INTRODUCTION
DEFINISI 1.1 :
Suatu (free) tree T adalah suatu graf sederhana yang memenuhi : jika v dan w vertex-vertex
dalam T, maka terdapat dengan tunggal simple path dari v ke w.
Suatu rooted tree adalah suatu tree dimana vertex tertentu dijadikan sebagai akar.
Tree adalah acyclic dan connected graph.
Level dari suatu tree adalah panjang dari simple path dari root v.
Height dari suatu tree adalah maksimum level dari tree.

CONTOH 1.1 :

v1
root Level 0

v2 v3 Level 1

v4 v5 v7 Level 2
v6

Height = 2 (maksimum level)

2. CHARACTERISATION OF TREES
TEOREMA 1.1 :
Misal T adalah suatu graf dengan n vertex. Pernyataan berikut adalah ekuivalen :
a. T adalah suatu tree
b. T connected dan acyclic
c. T connected dan mempunyai (n – 1) edge
d. T acyclic dan mempunyai (n – 1) edge
3. SPANNING TREES
DEFINISI 1.2 :
Suatu tree T adalah spanning tree dari suatu graf G jika T adalah subgraf dari G yang memuat
semua vertex dari G.
CONTOH 1.2 :

TEOREMA 1.2 :
Suatu graf G mempunyai spanning tree jika dan hanya jika G connected.

Algoritma untuk mencari spanning tree :


1. Breadth-FIRST SEARCH (BFS) for a spanning tree
2. Depth-FIRST SEARCH (DFS) for a spanning tree

DEFINISI 1.3 :
Misal T adalah suatu tree dengan root v0. Andaikan bahwa x, y dan z adalah vertex-vertex dalam
T dan (v0, v1, …, vn) adalah simple path dalam T. Maka
a. vn-1 adalah parent (orang tua) dari vn
b. v0, v1, …, vn-1 adalah ancestors (nenek moyang) dari vn
c. vn adalah child (anak) dari vn-1
1. BFS - ALGORITHM
Input : connected graph G dengan vertex-vertex diurutkan v1, v2, …, vn
Output : spanning tree T
(1). [Initialisation.] Misal S adalah (v1) dan missal T adalah graf yang terdiri dari vertex v1 dan
tidak ada edge. Tetapkan v1 sebagai root.
(2). [Add edges.] Untuk tiap x ∈ S secara urut, tambahkan edge (x, y) dan vertex y ke T ∀y ∈
V(G) secara urut, asalkan (x, y) tidak menghasilkan suatu cycle ju\ika
ditambahkan ke T. Jika tidak ada edge yang bias ditambahkan, STOP. (T
adalah spanning tree)
(3). [Update S.] Ganti S dengan children (dalam T) dari S yang durutkan secara konsisten
dengan urutan semula. Go to Line 2.

CONTOH 1.3 :

Urutan : a, b, c, d, e, f, g, h
Level 0 : a
T = {a} dan tidak ada edge. Tambahkan semua edge (a, x) ke T dan vertex-vertex yang
adjacent ke a asal tidak menghasilkan cycle jika ditambahkan.
Edge-edge dalam T : (a, b), (a, c) dan (a, g).
Level 1 :
b : masukkan edge (b, d)
c : masukkan edge (c, e)
g : tidak ada
Level 2 :
d : masukkan edge (d, f)
e : tidak ada
Level 3 :
f : masukkan edge (f, h)
Karena tidak ada edge yang bisa ditambahkan lagi ke single vertex h pada Level 4, maka
prosedur berhenti. Diperoleh spanning tree :

2. DFS-ALGORITHM
Input : connected graph G dengan vertex-vertex diurutkan v1, v2, …, vn
Output : spanning tree T
(1). [Inisialisation] Eksekusi w : = v1 dan missal T adalah graf yang terdiri dari vertex v1 dan
tidak ada edge. Tetapkan v1 sebagai root.
(2). [Add an edge.] Pilih edge (w, vk), dengan minimum k, dimana penambahan
(w, vk) ke T tidak menghasilkan cycle. Jika tidak ada edge semacam itu
yang ada, Go to Line 3; otherwise, tambahkan edge (w, vk) dan vertex vk
ke T; eksekusi w := vk; dan Go to Line 2
(3). [Done ?] Jika w = v1, STOP. (T adalah spanning tree)
(4). [Backtrack.] Misal x adalah parent dari w (dalam T). Eksekusi w := x. Go to
Line 2
CONTOH 1.4 :

• Urutan : a, b, c, d, e, f, g, h
• Pilih vertex a sebagai root.
• Tambahkan edge (a, x), dengan minimal x, ke tree  tambahkan (a, b)
• Ulangi proses
• Tambahkan (b, d), (d, c), (c, e), (e, f) dan (f, h). Sampai tahap ini tidak bisa menambah
edge dengan bentuk (h, x), sehingga kita backtrack ke parent f dari h dan mencoba
menambah edge berbentuk (f, x). Ternyata tidak bisa lagi menambah edge berbentuk (f,
x). Backtrack ke parent e dari f. Kali ini bisa menambah edge (e, g). Pada tahap ini sudah
tidak ada lagi edge yang bisa ditambahkan, akhirnya backtrack ke root dan procedure
berhenti. Diperoleh spanning tree seperti gambar di atas.

4. MINIMUM SPANNING TREE (MST)


a 4 b

2 5
3 1
c d

6 3
6

e 2 f

GAMBAR 1 : Graf G

Gambar graf berbobot G di atas menunjukkan enam kota dan biaya pembangunan jalan yang
menghubungkan di antara pasangan kota tertentu.
PROBLEM : Membangun sistem jalan dengan beaya terendah yang menghubungkan enam kota
tersebut.
Solusi : Dinyatakan dengan subgraf berupa suatu spanning tree karena harus memuat semua
vertex (sehingga bahwa tiap kota termuat dalam sistem jalan itu) dan terhubung ( sehingga bahwa
sebarang kota bisa dicapai dari kota yang lain), serta harus mempunyai path yang tunggal di
antara sepasang vertex (karena suatu graf yang memuat multiple path di antara sepasang vertex
tidak mungkin menyatakan sistem beaya minimum). Sehingga yang diperlukan adalah suatu
spanning tree dengan jumlah bobot yang dimilikinya minimum. Tree semacam ini disebut dengan
MST.

DEFINISI 1.1 : Misal G adalah suatu graf berbobot. Suatu MST dari G adalah suatu spanning
tree dari G dengan bobot minimum.
CONTOH 1.1 :
Tree T’ adalah suatu spanning tree dari graf G di atas. Bobot dari T’ adalah 20. Tree T’ ini MST
karena spanning tree T pada gambar di bawah mempunyai bobot 12.
a 4 b

2 5
c d

6 3

e f

GAMBAR 2 : Spanning tree T’

a 4 b

2
3 1
c d

e 2 f

GAMBAR 3 : Spanning Tree T

Algoritma untuk mencari MST :


a. Prim’s Algorithm (1957) dibicarakan
b. Kruskal’s Algorithm (1956) dibicarakan

PRIM’S ALGORITHM
Algoritma ini mencari MST dalam connected, weighted graph G.
Input : Connected, weighted graph G with vertices v1, v2, ..., vn
Output : MST T
1). [Initialisation.] Let T be the graph consisting of the vertex v1 and no edges.
2). [Done?] If T has n – 1 edges, STOP. (T is a MST.)
3. [Add edge.] Among all the edges not in T that are incident on a vertex in T and do not
complete a cycle if added to T, select one having minimum weight and add it and the vertices on
which it is incident to T. If more than one edge has the same minimum weight, select (vi, vj) with
the smallest i, say vi0. If two or more edges
(vi0, vj) have the same minimum weight, select the edge with the smallest j. Go to
line 2.

CONTOH 1.2 :
Gunakan Algoritma Prim pada graf G dari Gambar 1 dengan urutan vertex a, b, c, d, e, f untuk
menemukan suatu MST.
Pada Line 1, dipilih vertex a. Pada tahap ini, T terdiri dari vertex a dan tidak ada edge.
Karena T tidak mempunyai lima edge, lanjutkan ke Line 3. Dipilih edge (a, c) yang incident
dengan a dan mempunyai bobot minimum, tambahkan ke T. Lagi, T tidak mempunyai lima edge,
sehingga loncat ke Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge {(a, b), (a, e), (c, d), (c, e), (c, f)} yang tidak dalam T dan incident pada
suatu vertex dalam T serta tidak membentuk suatu cycle jika ditambahkan ke T terdiri dari dari
edge (a, c) dan (c, d). Karena T tidak mempunyai lima edge, lanjutkan ke Line 3.
a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge {(a, b), (a, e), (c, e), (c, f), (d, b, (d, f)} yang tidak dalam T dan incident
pada suatu vertex dalam T serta tidak membentuk suatu cycle jika ditambahkan ke T, baik (a, e)
dan (c, f) mempunyai bobot minimum 3. Dalam hal ini dipilih (a, e) karena a mendahului c dalam
urutan vertex yang diberikan. Pada tahap ini T terdiri dari edge (a, c), (c, d) dan (a, e). Karena T
tidak mempunyai lima edge, lanjutkan ke Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge {(a, b), (c, f), (d, b), (d, f), (e, f)} yang tidak dalam T dan incident pada
suatu vertex dalam T serta tidak membentuk suatu cycle jika ditambahkan ke T, dipilih (e, f)
yang mempunyai bobot minimum, dan tambahkan ke T. Pada tahap ini T terdiri dari edge (a, c),
(c, d), (a, e) dan (e, f). Karena T tidak mempunyai lima edge, lanjutkan ke Line 3.
a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge {(a, b), (d, b)} yang tidak dalam T dan incident pada suatu vertex dalam T
serta tidak membentuk suatu cycle jika ditambahkan ke T, dipilih (a, b) yang mempunyai bobot
minimum, tambahkan ke T. Pada tahap ini T terdiri dari a, c), (c, d),
(a, e), (e, f) dan (a, b). Karena T mempunyai lima edge, algoritma berhenti. Minimal spanning T
ditunjukkan pada GAMBAR 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

KRUSKAL’S ALGORITHM
Algoritma ini mencari MST dalam connected, weighted graph G.
Input : Connected, weighted graph G with vertices v1, v2, ..., vn
Output : MST T
1). [Initialisation.] Let T be the graph consisting of no vertevertices and no edges.
2). [Done?] If T has n – 1 edges, STOP. (T is a MST.)
3. [Add edge.] Among all the edges that if added to would not complete a cycle, choose one of
minimum weight. If more than one edge has the same minimum weight, select
(vi, vj) with the smallest i, say vi0. If two or more edges (vi0, vj) have the same minimum weight,
select the edge with the smallest j. Add the edge and the vertices on which it is incident to T. Go
to Line 2.

CONTOH 1.3 :
Gunakan Kruskal’s Algorithm untuk mencari MST pada graf GAMBAR 1 di atas dengan urutan
vertex a, b, c, d, e, f.
Pada Line 1, T tidak mempunyai vertex dan edge. Karena T tidak mempunyai lima edge,
lanjutkan ke Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge-edge yang ada, yang mempunyai bobot terkecil adalah edge (c, d),
tambahkan edge ini ke T. Karena T tidak mempunyai lima edge, maka lanjutkan ke
Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge-edge sisa yang ada, ada dua edge yang mempunyai bobot terkecil 2
berikutnya, yaitu, edge (a, c) dan (e, f). Pilih edge (a, c) sesuai urutan yang diberikan dan tidak
membentuk cycle jika ditambahkan ke T. Tambahkan edge itu ke T. Sehingga T mempunyai
edge (c, d) dan (a, c). Karena T tidak mempunyai lima edge, lanjutkan ke Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge-edge sisa yang ada, ada dua edge yang mempunyai bobot terkecil 3
berikutnya, yaitu edge (a, e) dan (c, f). Pilih edge (a, e) sesuai urutan yang diberikan dan tidak
membentuk cycle jika ditambahkan ke T. Tambahkan edge itu ke T. Sehingga T mempunyai
edge (c, d), (a, c) dan (a, e). Karena T tidak mempunyai lima edge, lanjutkan ke Line 3.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge-edge sisa yang ada, ada satu edge yang mempunyai bobot terkecil 3
berikutnya, yaitu edge (c, f). Pilih edge (c, f) sesuai urutan yang diberikan dan tidak membentuk
cycle jika ditambahkan ke T. Tambahkan edge itu ke T. Sehingga T mempunyai edge (c, d), (a,
c), (a, e) dan (c, f). Karena T tidak mempunyai lima edge, lanjutkan ke Line 3.
a 4 b

2 5
3 1
c d

6 3
6

e 2 f

Di antara edge-edge sisa yang ada, ada satu edge yang mempunyai bobot terkecil 4
berikutnya, yaitu edge (a, b). Pilih edge (a, b) sesuai urutan yang diberikan dan tidak membentuk
cycle jika ditambahkan ke T. Tambahkan edge itu ke T. Sehingga T mempunyai edge (c, d), (a,
c), (a, e), (c, f) dan (a, b). Karena T mempunyai lima edge, STOP. Diperoleh MST T.

a 4 b

2 5
3 1
c d

6 3
6

e 2 f

NOTE : MST T yang diperoleh dengan Prim’s Algorithm dan Kruskal’s Algorithm adalah sama,
perbedaannya terletak pada edge-edge yang ditambahkan ke T dalam urutan yang beda.