Anda di halaman 1dari 5

Gambar 2.5.

Algoritma menentukan pohon merentang dengan DFS

Breadth-First Search (BFS)


Penelusuran graf yang arah penelusurannya mendahulukan ke arah lebar graf tersebut. Ilustrasi
algoritma BFS dapat diamati pada Gambar 2.6. Angka menunjukkan urutan pemilihan simpul
berikutnya yang terpilih.

Gambar 2.6. Algoritma menentukan pohon merentang dengan BFS

2.3. Formula Cayleys


Untuk setiap bilangan bulat positif n, banyaknya kemungkinan pohon merentang yang dapat dibuat
pada graf berlabel dengan jumlah simpul n adalah nn -2 . Contoh penerapan formula Cayleys dapat
diamati pada Gambar 2.7. Gambar 2.7(a) kondisi ketika jumlah simpul n bernilai 2, kemungkinan
bentuk pohon merentang yang bisa dibentuk adalah (22-2) = 1. Gambar 2.7(b) kondisi ketika jumlah
simpul n bernilai 3, kemungkinan betuk pohon merentang yang bisa dibuat adalah (33-2) = 3. Gambar
2.7(c) kondisi ketika jumlah simpul n bernilai 4, kemungkinan betuk pohon merentang yang bisa
dibuat adalah (44-2) = 16.

(a)

(b)

15

(c)
Gambar 2.6. Penerapan formua Cayleys pada nila n yang berbeda-beda. (a)
nilai n=2. (b) nilai n=3. (c) nilai n=4.

2.4. Problem: Pohon Merentang Minimum


1. Algoritma Prims
Algoritma ini pertama kali diusulkan pertama kali oleh
Jarnik pada 1930, tetapi dinamai
Prims karena ditemukan kembali oleh Robert C. Prim pada 1957. Algoritma Prims dimulai dari
sebuah simpul sembarang yang kemudian dijadikan akar. Pada setiap tahap, ditambah busur baru yang
bernilai minimum dan tidak membentuk sirkuit dari setiap simpul yang telah terpilih. Algoritma
Prims merupakan jenis algoritma greedy karena pada setiap langkah ditambah dengan busur yang
minimum diantara semua busur kandidat yang tersedia.
Input: A non-empty connected weighted graph with vertices V and edges E (the weights can be negative).
Initialize: Vnew = {x}, where x is an arbitrary node (starting point) from V, Enew = {}
Repeat until Vnew = V:
Choose an edge (u, v) with minimal weight such that u is in Vnew and v is not (if there are
multiple edges with the same weight, any of them may be picked)
Add v to Vnew, and (u, v) to Enew
Output: Vnew and Enew describe a minimal spanning tree

Contoh:
Carilah pohon merentang minimum pada graf dibawah ini dengan algoritma Prims dimana simpul A
adalah simpul awal. Bobot pada busur menyatakan biaya untuk menghubungkan endpoint pada
masing-masing busur.

16

Jawab:
Step

Edge(u,v)

{}

{A}

V-U

Graf

{A, B, C, D, E, F}

(A-B) = 6
(A-C) = 3 V

{ B, C, D, E, F}

(A-B) = 6
2

{A, C}

(C-B) = 2 V
(C-D) = 6

{ B, D, E, F}

(C-E) = 4
(A-B)= 6 cycle
3

{A, C, B}

(B-D) = 5
(C-D) = 6

{D, E, F}

(C-E) = 4 V
(A-B)= 6 cycle
(B-D) = 5
4

{A, C, B, E}

(C-D) = 6

{D,F}

(E-D) = 1 V
(E-F) = 3
(A-B)= 6 cycle
(B-D) = 5 cycle
5

{A, C, B, E, D}

(C-D) = 6 cycle

{F}

(E-F) = 3 V
(D-F) = 7
(A-B)= 6 cycle
6

{A, C, B, E, D, F}

(B-D) = 5 cycle
(C-D) = 6 cycle

{}

(D-F) = 7 cycle

Total biaya minimum untuk membuat pohon merentang adalah 3+2+4+1+3 = 13.
2. Algoritma Kruskals
Algoritma Kruskals diusulkan oleh Joseph Kruskal pada tahun195.. Algoritma Kruskals dimulai
dengan mengurutkan seluruh busur dari bobot terkecil hingga terbesar. Bobot terkecil yang tidak
membuat sirkuit diambil hingga pohon merentang terbentuk. Algotritma Kruskals dapat dilihat pada
fungsi di bawah ini.

17

+
function Kruskal(G = <N, A>: graph; length: A
): set of edges
Define an elementary cluster C(v)
v}
Initialize a priority queue Q to contain all edges in G, using the weights as keys.
Define a forest T

//T will ultimately contain the edges of the MST


// n is total number of vertices
while T has fewer than n-1 edges do
// edge u,v is the minimum weighted route from u to v
(u,v)
Q.removeMin()
//prevent cycles in T. add u,v only if T doesnt already contain a path between u-v.
// the vertices has been added to the tree.
Let C(v) be the cluster containing v, and let C(u) be the cluster containing u.
if C(v) C(u) then
Add edge (v,u) to T.
Merge C(v) and C(u) into one cluster, that is, union C(v) and C(u).
return tree T

Contoh:
Carilah pohon merentang minimum pada graf dibawah ini dengan algoritma Kruskals. Bobot pada
busur menyatakan biaya untuk menghubungkan endpoint pada masing-masing busur.

Jawab:
Edge(u,v)

Bobot

Keterangan

(D,E)

Pilih

(B,C)

Pilih

(A,C)

Pilih

(E,F)

Pilih

(C,E)

Pilih

(B,D)

Cycle

(A,B)

Cycle

(C,D)

Cycle

(D,F)

Cycle

1
2
3
4
5

Total biaya minimum untuk membuat pohon merentang adalah 1+2+3+3+4 = 13.

18

2.5. Latihan Soal


1. Tentukan pohon merentang dari graf gambar 2 dimana simpul E sebagai akar dengan arah sesuai
prioritas yang ditunjukkan oleh gambar panah menggunakan metode :
a. BFS
b. DFS

2. Carilah pohon merentang minimum dengan algoritma Prims dan Kruskals dari graf di bawah ini:
a.
b.

19

Anda mungkin juga menyukai