POHON (TREE)
Syafiul Muzid, ST., M.Cs.
Definisi
Pohon adalah graf tak-berarah terhubung
yang tidak mengandung sirkuit
a b a b a b a b
c d c d c d c d
e f e f e f e f
Hutan (Forest)
adalah :
kumpulan pohon yang saling lepas, atau
graf tidak terhubung yang tidak mengandung sirkuit.
Setiap komponen di dalam graf terhubung tersebut
adalah pohon.
G T1 T2 T3 T4
Graf lengkap G dengan 4 buah pohon merentangnya, T 1, T2, T3 dan T4
Tree)
Jika n buah simpul dan m buah sisi maka :
Untuk graf terhubung :
Jumlah cabang : n 1
Jumlah tali hubung : m n + 1
Untuk graf tak-terhubung dengan k komponen :
Jumlah cabang : n k
Jumlah tali-hubung : m n + k
Rank graf G adalah :
Jumlah cabang pada pohon merentang dari sebuah graf G
Nullity graf G adalah :
Jumlah tali hubung pada graf G
Sehingga :
jumlah sisi graf G = rank + nullity
Nullity graf sering diacu sebagai bilangan siklomatik atau
bilangan Betti pertama
Sirkuit fundamental (fundamental circuit) adalah :
Sirkuit yang terbentuk dengan penambahan sebuah tali-hubung
pada pohon merentang
Router Subnetwork
Contoh
a 10 b a 10 b
30 50
d 45 d
c c
35 35
25 25
20 20
e e
55 15 15
f f
Graf G Pohon merentang minimum dari graf G
25
f
3 (c,f) 15 a 10 b
25
15
f
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
Lanjutan Tabel
Langkah Sisi Bobot Pohon merentang
4 (d,f) 20 a 10 b
d c
25
20
15
f
a 10 b
5 (c,e) 35
d c
35
25
20
e
15
Algoritma Kruskal
Algoritma Kruskal :
(Asumsi : sisi-sisi dari
graf sudah diurut
menaik berdasarkan
bobotnya)
1. T masih kosong
2. Pilih sisi e yang
mempunyai bobot
minimum yang tidak
membentuk sirkuit di
T. Masukkan e ke
dalam T
3. Ulangi langkah-2
sebanyak n 1 kali
Contoh
Selesaikan dengan menggunakan algoritma Kruskal
a 10 b a 10 b
30 50
d 45 d
c c
35 35
25 25
20 20
e e
55 15 15
f f
Graf G Pohon merentang minimum dari graf G
Sisi (a,b) (c,f) (d,f) (b,f) (a,d) (c,e) (b,e) (a,e) (b,c) (e,f)
Bobot 10 15 20 25 30 35 40 45 50 55
a b c d e f
1 (a,b) 10
a b c d e
2 (c,f) 15
3 (d,f) 20 a b c e
f
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
Lanjutan Tabel
Langkah Sisi Bobot Pohon merentang
a b c e
4 (b,f) 25
d
f
5 (a,d) 30 ditolak
a b
6 (c,e) 35 c
d e
f
UNIVERSITAS MURIA KUDUS
b
c d
e
f g
k
h i j
l m
2. Lintasan (path)
Lintasan dari a ke j adalah a, b, e, j. a
Panjang lintasan dari a ke j adalah 3.
l m
b
c d
e
f g
k
h i j
l m
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
5. Derajat (degree)
Derajat sebuah simpul adalah jumlah
upapohon (atau jumlah anak) pada simpul a
tersebut.
Derajat a adalah 3, derajat b adalah 2,
Derajat d adalah satu dan b
derajat c adalah 0. c d
6. Daun (leaf)
Simpul yang berderajat nol (atau tidak mempunyai
anak) disebut daun. a
Simpul h, i, j, f, c, l, dan m adalah daun.
b
c d
7. Simpul Dalam (internal nodes)
Simpul yang mempunyai anak e
disebutsimpul dalam. f g
Simpul b, d, e, g,
dan k adalah simpul dalam. h i j
k
l m
a
0
b 1
c d
e 2
f g
k 3
h i j
4
l m
1 2 3
2.2.1 2.2.2
Pohon n-ary
a a
b c b c
d d
Gambar Dua buah pohon biner yang berbeda
a a
b b
d c
c d
(a) (b)
Gambar (a) Pohon condong-kiri, dan (b) pohon condong kanan
1. Pohon Ekspresi
Adalah pohon biner dengan daun menyatakan
operand dan simpul dalam (termasuk akar)
menyatakan operator
Tanda kurung tidak lagi diperlukan bila suatu *
ekspresi aritmetik direpresentasikan sebagai
pohon biner
Pohon ekspresi digunakan oleh compiler bahasa + /
tingkat tinggi untuk mengevaluasi ekspresi
yang ditulis dalam notasi :
Infix
Operator berada di antara 2 buah operand +
Prefix (polish notation)
Operator mendahului 2 buah operand-nya a b c
Postfix (inverse polish notation)
Kedua operand mendahului operatornya
d e
Contoh :
(a + b)*(c/(d + e)) Pohon ekspresi dari
infix
(a + b)*(c/(d + e))
* + a b / c + d e prefix
a b + c d e + / * postfix
Contoh
Pembentukan pohon ekspresi (a + b)*(c/(d + e))
*
/
+ + /
+ +
c +
a b a b c
d e d e
(i) d e
(ii) (iii) (iv)
Pn
1 2 3 4 5 6 7 8 n=9
a b + c d e + / *
Contoh (1)
Terapkan algoritma BangunPohonEkspresiDariPostfix untuk
membangun pohon ekspresi dari notasi postfix a b + c d e + / *
1. Mulai dari elemen postfix pertama, P1 , karena P1= a = operand,
buat simpul untuk P1, push pointer-nya ke dalam tumpukan S
a
2. Baca P2 , karena P2 = b = operand, buat simpul untuk P2 ,
push pointer-nya ke tunpukan S
a b
3. Baca P3 , karena P3 = + = operator, buat pohon T dengan a
dan b sebagai child (anak)
+
c d e
a b
5. Baca P7 , karena P7 = + = operator, buat pohon T dengan d
dan e sebagai child (anak)
+ +
c
a b d e
6. Baca P8 , karena P8 = / = operator, buat pohon T dengan c
dan + sebagai child (anak)
+ /
+
a b c
+ /
+
a b c
d e
+ /
+
3 4 24
4 8
Penyelesaian :
Pohon ekspresi dievaluasi mulai dari bawah, tahapan
evaluasi sbb :
*
* *
14
+ / + /
7 2
+
3 24 3 4 24 12
4
8 4
2. Pohon Keputusan
a : b
a > b b > a
a : c b : c
a >c c > a b > c c > b
Diketahui 8 buah koin uang logam. Satu dari delapan koin ternyata
palsu. Koin yang palsu mungkin lebih ringan atau lebih berat daripada
koin yang asli. Misalkan tersedia sebuah timbangan neraca yang sangat
teliti. Buatlah pohon keputusan untuk mencari uang palsu dengan cara
menimbang paling banyak hanya 3 kali saja
Penyelesaian :
Misalkan 8 koin itu dinamai a,b,c,d,e,f,g,h. Daun menyatakan koin yang
palsu. Pohon keputusan untuk mencari koin yang palsu ditunjukkan sbb :
ab : cd
ab = cd ab cd
{abcd asli} {efgh asli, palsu ada diantara abcd}
ab : ef ab : ef
ab = ef ab ef
ab = ef ab ef {cd palsu} {ab palsu}
{gh palsu} {ef palsu}
a:g c:e a:e
a:e
a=g c=e ce a=e ae
a ga = e ae
d c b a
{h palsu}h g f e
{d palsu}
{e palsu} {a palsu}
{c palsu}{b palsu}
{g palsu}
{f palsu}
4. Kode Huffman
Pemampatan data dilakukan dengan mengkodekan setiap
karakter di dalam pesan atau di dalam arsip dikodekan
dengan kode yang lebih pendek
Sistem kode yang banyak digunakan adalah kode ASCII
(setiap karakter dikodekan dalam 8 bit biner)
Cara pembentuka kode Huffman dengan membentuk pohon
biner (dinamakan dengan pohon Huffman) yaitu :
1. Pilih 2 simbol dengan peluang (probability) paling kecil
sebagai child kemudian kedua simbol tersebut
dikombinasikan sebagai parent peluang penjumlahan dari
kedua simbol tersebut
2. Pilih 2 simbol berikutnya termasuk simbol baru yang
mempunyai peluang kecil sebagai child kemudian kedua
simbol tersebut dikombinasikan sebagai parent peluang
penjumlahan dari kedua simbol tersebut
3. Prosedur yang sama dilakukan pada 2 simbol berikutnya
yang mempunyai peluang terkecil sebagai child kemudian
kedua simbol tersebut dikombinasikan sebagai parent
peluang penjumlahan dari kedua simbol tersebut
Contoh (1)
Representasikan string ABACCDA dalam kode ASCII dan kode
Huffman
Kode ASCII
Simbol Kode ASCII
A 01000001
B 01000010
C 01000011
D 01000100
A 3 3/7
B 1 1/7
C 2 2/7
D 1 1/7
B (1/7) D (1/7)
A 3 3/7 0
B 1 1/7 110
C 2 2/7 10
D 1 1/7 111
R
Key T1 < key R
Key T2 > key R
T1 T2
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
Contoh
Gambarkan ke dalam pohon biner pencarian untuk data masukan
dengan urutan sbb :
50, 32, 18, 40, 60, 52, 5, 25, 70
Simpul di subpohon kiri 50 mempunyai
50 key lebih kecil dari 50 dan simpul di
subpohon kanan mempunyai key lebih
besar dari 50
Pencarian selalu dimulai dari simpul
32 60
akar
Simpul di akar dibandingkan dengan
nilai yang dicari (x).
18 40 52 70 Jika kunci di simpul akar tidak sama
dengan x, pencarian dilanjutkan di
subpohon kiri atau subpohon kanan,
5
bergantung pada nilai x lebih kecil dari
25 key di akar atau x lebih besar dari key
Skema pohon pencarian di akar
Pembandingan dilakukan sampai nilai x
sama dengan nilai suatu key atau
tercapai sebuah daun
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
Traversal Pohon Biner
Misalkan T adalah pohon biner, akarnya R, subpohon kiri T 1
dan subpohon kanan T2 maka ada skema mengunjungi simpul-
simpul di dalam pohon biner T :
1. Preorder
Kunjungi R (sekaligus memproses simpul R)
Kunjungi T1 secara preorder
Kunjungi T2 secara preorder
2. Inorder
Kunjungi T1 secara inorder
Kunjungi R (sekaligus memproses simpul R)
Kunjungi T2 secara inorder
3. Postorder
Kunjungi T1 secara postorder
Kunjungi T2 secara postorder
Kunjungi R (sekaligus memproses simpul R)
Proses yang dilakukan terhadap simpul yang dikunjungi
misalnya
mencetak informasi yang disimpan di dalam simpul
Memanipulasi nilai, dll
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
T1 T2
INORDER R Langkah 2 : Kunjungi R
Langkah 2 : Langkah 3 :
Kunjungi T1 secara Kunjungi T2 secara
preorder preorder
T1 T2
Langkah 1 : Langkah 3 :
Kunjungi T1 secara Kunjungi T2 secara
inorder inorder
T1 T2
Langkah 1 : Langkah 2 :
Kunjungi T1 secara Kunjungi T2 secara
postorder postorder
Matematika Diskrit Program Studi Sistem Informasi
UNIVERSITAS MURIA KUDUS
T1 T2 Tn
Contoh (1)
Tinjau pohon biner T di bawah ini :
A
B C
D E F G
H I J
Lintasan :
Preorder : A, B, C, D, E, F, G, H, I, J
Inorder : D, B, H, E, A, F, C, I, G, J
Postorder : D, H, E, B, F, I, J, G, C, A
Contoh (2)
Tinjau pohon ekspresi di bawah ini :
*
+ -
a / d *
b c e f
Lintasan :
Preorder : * + a / b c d * e f (prefix)
Inorder : a + b / c * d - e * f (infix)
Postorder : a b c / + d e f * - * (postfix)
Contoh (3)
Tentukan hasil kunjungan preorder, indorder dan
postorder pada pohon 4-ary berikut :
a
b c
d
e f g h i l
j k m
n o p q
Lintasan :
Preorder : a,b,e,n,o,f,g,c,h,i,d,j,k,l,p,q,m
Inorder : n,e,o,b,f,g,a,h,c,i,j,d,k,p,l,q,m
Postorder : n,o,e,f,g,b,h,i,c,j,k,p,q,l,m,d,a
Ada Pertanyaan?