P O H O N
Definisi Pohon didefinisikan sebagai graf terhubung sederhana tak berarah yang tidak mempunyai sirkuit. G1 G2 G3 G4 a b a b a b a b c d c d c d c d e f e f e f e f Gambar 1 Graf G1 dan G2 pohon. Graf G3 dan G4 bukan pohon.
Graf G3 buka pohon karena terdapat sirkuit a-b-e-d-a Graf G4 bukan pohon karena terdapat sirkuit tidak terhubung. Hutan Hutan didefinisikan sebagai kumpulan pohon yang saling lepas. Gambar 2 adalah contoh hutan. Gambar 2 Hutan yang terdiri dari 3 pohon
2. Sifat-sifat pohon Teorema 1. Jika G = (V, E) adalah graf tak berarah sederhana dengan jumlah simpul = n, maka semua pernyataan berikut ekivalen: G adalah pohon b. Setiap pasang simpul di dalam G terhubung dengan lintasan tunggal. c. G terhubung dan memiliki m = n – 1 buah sisi
d. G tidak mengandung sirkuit dan memiliki m = n – 1 buah sisi e. G tidak mengandung sirkuit dan penambahan satu sisi pada graf akan menyebabkan terbentuk hanya satu sirkuit Terhubung dan semua sisinya adalah jembatan (jembatan adalah sisi yang bila dihapus menyebabkan graf terpecah menjadi dua komponen)
Contoh 1 Sebuah pohon mempunyai 2n buah simpul berderajat 1, 3n buah simpul berderajat 2, dan n buah simpul berderajat 3. Tentukan banyaknya banyaknya simpul dan sisi di dalam pohon itu! Penyelesaian Menurut lemma jabat tangan, jumlah derajat semua simpul di dalam sebuah graf = 2 kali jumlah sisinya. 2n 1 + 3n 2 + n 3 = 2 |E| 11n = 2|E| 11n / 2 Jumlah sisi sebuah pohon (|E|) = jumlah simpul – 1 = 2n + 3n + n = 6n – 1 11n/2 = 6n – 1 11n = 12n – 2 n = 2 Jumlah simpul = 6n – 1 = 6(2) – 1 = 11
3. Pohon merentang Misal G = (V, E) adalah graf tak-berarah terhubung yang bukan pohon, yang berarti di G terdapat beberapa sirkuit. G dapat diubah menjadi pohon T = (V1 , E1) dengan cara memutuskan sirkuit-sirkuit yang ada. Mula-mula pilih sebuah sirkuit, lalu hapus sebuah sisi pada sirkuit tersebut. G tetap terhubung dan jumlah sirkuitnya berkurang satu.
Jika proses ini dilakukan berulang-ulang samapi semua srkuit di G hilang, maka G menjadi sebuah pohon T yang dinamakan pohon merentang (spanning tree). Disebut pohon merentang karena semua simpul pada pohon T = simpul pada graf G dan sisi-sisi pada pohon T sisi-sisi pada graf.
Graf G dengan 4 pohon merentangnya Gambar 3 Graf G dengan 4 pohon merentangnya
Teorema 2 Setiap graf terhubung mempunyai paling sedikit satu buah pohon merentang. Sisi pada pohon merentang, disebut cabang (branch), adalah sisi dari graf semula. Tali hubung (chord atau link) dari pohon adalah sisi dari graf yang tidak terdapat di dalam pohon merentang. Pada graf terhubung dengan m buah sisi dan n buah simpul terdapat n – 1 buah cabang dan m – n + 1 tali hubung
Himpunan tali hubung beserta simpul yang bersisian dengannya disebut komplemen pohon. Untuk graf terhubung G dengan n buah simpul dan m buah sisi , maka: Jumlah cabang = n – 1 Jumlah tali hubung = m – n + 1 Untuk graf tak-terhubung dengan k komponen, m buah sisi dan n buah simpul, maka: Jumlah cabang = n – k Jumlah tali hubung = m – n + k
Jumlah cabang pada pohon merentang dari sebuah graf G disebut rank graf G. Jumlah tali hubung pada graf G disebut nullity graf G rank + nullity = jumlah sisi graf G Nullity sering diacu sebagai bilangan siklomatik, atau bilangan Betti pertama. Pada sebuah pohon, jika kita tambahkan sebuah sisi antara dua buah simpul maka akan terbentuk sirkuit. Sirkuit yang terbentu dengan penambahan sebuah tali hubung pada pohon merentang disebut sirkuit fundamental.
4. Pohon merentang minimum Jika G adalah graf berbobot, maka bobot pohon merentang T dari G didefinisikan sebagai jumlah bobot semua sisi di T. Pohon merentang yang berbeda mempunyai bobot yang berbeda pula. Diantara pohon merentang dari graf G, pohon merentang yang mempunyai bobot minimum disebut pohon merentang minimum (minimum spanning tree). Algoritma untuk mencari pohon merentang minimum: 1. Algoritma Prim 2. Algoritma Kruskal
Algoritma Prim Ambil sisi dari graf G yang berbobot minimum, masukkan ke dalam T 2. Pilih sisi e yang mempunyai bobot minimum dan bersisian dengan simpul di T, tetapi e tidak membentuk sirkuit di T. Masukkan e ke dalam T. Ulangi langkah 2 sebanyak (n – 2) kali Jumlah seluruh langkah di dalam algoritma Prim adalah 1 + (n – 2) = n – 1, yaitu sebanyak jumlah sisi di dalam pohon merentang dengan n buah simpul.
Contoh 2 Cari pohon merentang minimum dari graf berikut Dengan menggunakan algoritma Prim! 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 25 15 3 35 4 5 20 6 Langkah Sisi Bobot
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 25 15 3 35 4 5 20 6 Langkah Sisi Bobot 1 (1, 2) 10
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 6 25 15 3 35 4 5 20 Langkah Sisi Bobot 2 (2, 6) 25
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 6 25 3 15 35 4 5 20 Langkah Sisi Bobot 3 (3, 6) 15
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 6 25 3 15 35 4 20 5 Langkah Sisi Bobot 4 (4, 6) 20
Pembentukan pohon merentang minimum dengan algoritma Prim 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20 2 1 10 6 25 3 15 5 35 4 20 Langkah Sisi Bobot 5 (3, 5) 35
Tentukan graf merentang minimum dengan menggunakan algoritma Prim. Latihan 1 Tentukan graf merentang minimum dengan menggunakan algoritma Prim. 20 40 55 60 25 35 21 23 10 30 12 80 70 45 B A D C I E F G H K J
Langkah Sisi Bobot 1 A, B 10 2 B, C 21 3 B, D 23 4 D, E 20 5 E, I 6 I, J 12 7 E, F 35 8 F, G 25 9 J, K 45 F, H 55 25 G 55 H 35 F 23 D 21 C 20 E 20 I 10 B A 12 J 45 K
Algoritma Kruskal Urutkan sisi pada graf dari kecil ke besar. 2. Pilih sisi e yang mempunyai bobot minimum dan e tidak membentuk sirkuit di T. Masukkan e ke dalam T. Ulangi langkah 2 sebanyak (n – 2) kali
Contoh 3 Cari pohon merentang minimum dari graf berikut Dengan menggunakan algoritma Kruskal! 2 1 4 3 5 6 10 50 45 30 25 40 35 55 15 20
1 2 3 4 5 6 Langkah Sisi Bobot 1 1, 2 10 2 3, 6 15 3 4, 6 20 4 2, 6 25 5 1, 4 30 6 3, 5 35 2 1 10 25 3 6 15 5 35 4 20
Tentukan graf merentang minimum dengan menggunakan algoritma Kruskal. Latihan 2 Tentukan graf merentang minimum dengan menggunakan algoritma Kruskal. 20 40 55 60 25 35 21 23 10 30 12 80 70 45 B A D C I E F G H K J
G 25 H 55 F 35 D 20 C E 23 20 21 I B 12 10 A 45 J K Langkah Sisi Bobot A, B 10 2 I, J 12 3 D, E 20 4 E, I 5 B, C 21 6 B, D 23 7 C, D 25 8 B, I 9 F, G A, J 30 11 E, F 35 D, F 40 13 J, K 45 14 F, H 55 Langkah Sisi Bobot 15 G, H 60 16 E, K 70 17 C, G 80 F 25 G 55 H 35 D 20 E 21 C 23 20 I 12 J 10 B A 45 K
5. Pohon Berakar Pohon yang sebuah simpulnya diperlakukan sebagai akar dan sisinya diberi arah menjauh dari akar dinamakan pohon berakar. Akar mempunyai derajat masuk = 0. Simpul-simpul lainnya mempunyai derajat masuk = 1. Simpul-simpul yang mempunyai derajat keluar = 0 disebut simpul dalam atau simpul cabang. Setiap simpul pada sebuah pohon dapat dicapai dari akar dengan sebuah lintasan tunggal (unik).
Gambar 4 Pohon berakar, (B) Arah panah dapat dibuang b a d c h j f e
Sebuah pohon tak berakar dapat diubah menjadi pohon berakar dengan memilih salah satu simpul sebagai akar. Pemilihan simpul yang berbeda untuk dijadikan akar akan menghasilkan pohon berakar yang berbeda pula. Perhatikan Gambar 5 berikut.
Pemilihan akar untuk membentuk pohon berakar c d h g f b e d a c f g h e a f d b c g h e sebagai akar b sebagai akar Gambar 5 Pemilihan akar untuk membentuk pohon berakar
6. Terminologi pada Pohon Berakar Anak (child atau children) dan Orangtua (parent) Misal x adalah sebuah simpul di dalam pohon berakar. Simpul y dikatakan anak simpul x jika ada sisi dari simpul x ke simpul y. Sedangkan x disebut orangtua (parent) y. Perhatikan gambar 6 berikut.
Gambar 6 a adalah orang tua dari b, c, d b, c, d adalah anak-anak dari a b adalah orang tua e, f e, f adalah anak-anak dari b e adalah orang tua dari h, i, j. h, i, j adalah anak-anak dari e. d adalah orang tua g g adalah anak-anak dari d g adalah orang tua dari k. l, m adalah anak-anak dari k. k adalah orang tua dari l, m. e a f d b c g h i j m l k Gambar 6
Gambar 6 Lintasan (Path) Lintasan dari simpul v1 ke simpul f d b c g h i j m l k Gambar 6 Lintasan (Path) Lintasan dari simpul v1 ke simpul vk adalah runtunan simpul-simpul v1, v2, v3, … , vk sedemikian, sehingga vi adalah orangtua dari vi + 1 untuk 1 i k. Lintasan a ke j adalah a, b, e, j. Panjang lintasan = jumlah sisi yang dilalui dalam suatu lintasan, yaitu k – 1. Panjang lintasan dari a ke j adalah 3
Gambar 6 Keturunan (descendant) atau leluhur (ancestor) f d b c g h i j m l k Gambar 6 Keturunan (descendant) atau leluhur (ancestor) Jika terdapat lintasan dari simpul x ke simpul y di dalam pohon, maka x disebut leluhur dari simpul y. Sedang y adalah keturunan simpul x. Pada gambar 6, b adalah leluhur simpul h. Berarti h adalah keturunan simpul b.
Gambar 6 Saudara Kandung (sibling) e a f d b c g h i j m l k Gambar 6 Saudara Kandung (sibling) Simpul-simpul yang mempunyai orangtua yang sama disebut saudara kandung (sibling). Pada gambar 6, f adalah saudara kandung e. tertapi g bukan saudara kandung e, karena orangtua mereka berbeda.
Gambar 6 Upapohon (subtree) f d b c g h i j m l k Gambar 6 Upapohon (subtree) Misal x adalah simpul di dalam pohon T. Yang dimaksud dengan upapohon dengan x sebagai akarnya adalah upagraf T = (V , E ) sedemikian , sehingga V mengandung x dan semua keturunannya dan E mengandung sisi-sisi dalam semua lintasan yang berasal dari x.
Gambar 7 Upapohon (subtree) f d b c g h i j m l k Gambar 7 Upapohon (subtree) Sebagai contoh T = (V , E ) adalah upapohon dari pohon pada Gambar 7, dengan V = {b, e, f, h, i, j} dan E = {(b, e), (b, f), (e, h), (e, i), (e, j)}. Sedangkan b adalah simpul akarnya. Terdapat banyak pohon di dalam pohon T. Dengan pengertian diatas, jika x adalah simpul, maka akar dari tiap-tiap upapohon dari x disebut anak, dan x adalah orangtua setiap akar upapohon.
Gambar 6 Derajat (degree) Derajat sebuah simpul pada pohon berakar adalah jumlah upapohon (atau jumlah anak) pada simpul tsb. Pada gambar 6, derajat a = 3, derajat b = 2, derajat d = 1 dan derajat c = 0. Jadi derejat sebuah simpul adalah derajat keluar. Derajat maksimum dari semua simpul merupakan derajat pohon itu sendiri. Pohon pada Gambar 6 berderajat 3 karena derajat tertinggi dari seluruh simpulnya adalah 3. e a f d b c g h i j m l k Gambar 6
Daun (leaf) Simpul yang berderajat nol (atau tidak mempunyai anak) disebut daun. Pada gambar 6, simpul h, i, j, f, c, l, dan m adalah daun. Simpul dalam (internal nodes) Simpul yang mempunyai anak disebut simpul dalam. Simpul d, e, g, dan k pada Gambar 6 adalah simpul dalam. e a f d b c g h i j m l k Gambar 6
Gambar 8 Atas (level) atau tingkat f d b c g h i j m l k Gambar 8 3 2 1 4 Aras Atas (level) atau tingkat Akar mempunyai aras = 0 Aras simpul lainnya = 1 + panjang lintasan dari akar ke simpul tersebut.
Gambar 8 Tinggi (height) atau kedalaman (depth) f d b c g h i j m l k Gambar 8 3 2 1 4 Aras Tinggi (height) atau kedalaman (depth) Aras maksimum dari suatu pohon disebut tinggi atau kedalaman pohon tersebut. Dapat juga dikatakan tinggi pohon adalah panjang maksimum lintasan dari akar ke daun. Tinggi pohon pada Gambar 8 = 4.
7. Pohon berakar terurut Pohon berakar yang urutan anak-anaknya penting disebut pohon terurut ( ordered tree)