Anda di halaman 1dari 33

MODUL 06

Graf POHON

Dalam ilmu komputer, graf pohon (atau sering disebut pohon / tree) berperan penting dalam
membantu memahami struktur diskrit (graf) terutama dalam pemodelan struktur diskrit dan
pengembangan algoritma pengolah informasi. Mereka memerankan sebuah pusat pembicara-
an dalam perancangan dan analisis jejaring terhubung.

Tujuan Instruksional Umum


Mahasiswa memahami konsep graf pohon dan mampu menerapkan dalam pemecahan
masalah kehidupan sehari-hari.

Tujuan Instruksional Khusus


Mahasiswa mampu:
1. Memahami definisi graf pohon dan mampu mengidentifikasi ciri-ciri-graf pohon.
2. Memahami pengertian berbagai macam graf pohon.
3. Memahami pemodelan dengan struktur graf pohon dan bentuk pemecahannya.
4. Memahami berbagai penerapan graf pohon dan terampil menerapkannya.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 1


Modul Ajar Matematika Diskrit Graf Pohon

6.1 GRAF POHON, SIFAT DASAR, DAN KARAKTERISTIK

6.1.1 Graf Pohon


Definisi-6.1. Sebuah graf pohon ialah sebuah graf: tak berarah, terhubung dan tidak memuat
sirkuit (circuit). (An undirected-connected-acyclic graph)

Sebuah graf hutan (forest) ialah sebuah graf tak terhubung dimana semua komponennya
berupa graf pohon. Beberapa graf pohon dan graf yang bukan graf pohon diperlihatkan
dalam Gambar-6.1. Graf (a) dan (b) adalah graf pohon karena tak berarah, terhubung dan
tidak memuat sirkuit; sedangkan graf (c) bukan sebuah graf pohon karena memuat sebuah
sirkuit c-e-g-f-c.

a b a b a b

c d c d c d

e f e f e f

g g g

(a) (b) (c)


Gambar-6.1. (a) dan (b) adalah graf pohon, sedangkan (c) bukan sebuah graf pohon.

6.1.2 Sifat Dasar Graf Pohon

Definisi-6.2. Dalam sebuah pohon tak berarah, sebuah daun (leaf) adalah sebuah verteks
yang berderajat 1.

Proposisi-6.1. Setiap pohon dengan sedikitnya satu edge mempunyai sedikitnya dua daun.

Bukti.
Untuk membuktikan ini kita lakukan induksi terhadap banyaknya edge.
Misalkan S(n) menyatakan banyaknya daun dari graf dengan n edge. Maka harus dibukti-
kan bahwa untuk maka
Basis induksi
Untuk n = 1 maka S(n) = 2 benar karena tepat sebuah edge insident dengan dua verteks
yang berderajat satu.
Hipotesa induksi
Andaikan untuk n = k, benar.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 2


Modul Ajar Matematika Diskrit Graf Pohon

Step induksi
Untuk n = k + 1, penambahan sebuah edge pada sebuah graf pohon menghasilkan dua hal
yang mungkin yaitu: (i) sebuah edge yang insiden dengan sebuah cabang dalam graf pohon
dan (ii) sebuah edge yang insiden dengan sebuah daun dalam graf pohon. Untuk kasus yang
pertama, akan terjadi penambahan sebuah verteks berderajat 1 yang berarti penambahan
sebuah daun sehingga Untuk kasus yang kedua, tidak menye-
babkan terjadinya perubahan banyaknya verteks berderjat 1 yang berarti banyaknya daun
tetap sehingga Berarti step induksi benar. Karena step induksi benar
maka Proposisi-6.1 benar.
[Terbukti]

Corollary-6.2. Jika derajat dari setiap verteks dalam sebuah graf adalah sedikitnya 2, maka
graf itu harus memuat sebuah sirkel (cycle).

Proposisi-6.3. Setiap graf pohon dengan n verteks memuat tepat n – 1 edge.

Bukti.
Disini kita akan lakukan induksi terhadap banyaknya verteks.
Basis induksi
Sebuah graf pohon yang berupa sebuah verteks adalah graf pohon trivial, dengan tanpa edge.
Hipotesa induksi
Asumsikan untuk suatu bilangan . Setiap graf pohon dengan k verteks mempunyai
tepat k – 1 edge.
Step induks
Perhatikan sambarang graf pohon T dengan k+1 verteks. Dengan Proposisi-6.1, T memuat
sebuah daun, katakan v. Kemudian graf T – v adalah asiklik, karena penghapusan bagian
dari sebuah graf asiklik tidak dapat mengkreasi sebuah sirkel. Selanjutnya, T-v terhubung,
karena verteks v mempunyai deratat 1 dalam T. Jadi, T-v adalah sebuah graf pohon dengan
k verteks, dan dengan hipotesa induksi T-v mempunyai k-1 edge. Tetapi, karena deg(v)=1,
dipenuhi bahwa T-v mempunyai satu edge lebih sedikit dari T. Karenanya, T mempunyai
k edge, yang melengkapi pembuktian.
[Terbukti]

Proposisi-6.4. Sebuah hutan G dengan n verteks mempunyai n – c(G) edge.

Proposisi-6.5. Jika G adalah sebuah graf sederhana dengan n verteks dan k komponen,
maka

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 3


Modul Ajar Matematika Diskrit Graf Pohon

6.1.3 Karakteristik Pohon


Teorema-6.6. Jika T adalah sebuah graf dengan n verteks, maka pernyataan berikut adalah
ekivalen :
1. T adalah sebuah pohon.
2. T tidak memuat cycle dan mempunyai n-1 edge.
3. T adalah terhubung dan mempunyai n-1 edge.
4. T adalah terhubung dan setiap edge merupakan sebuah cut-edge.
5. Sembarang dua verteks dari T dihubungkan tepat satu lintasan.
6. T tidak memuat cycle dan untuk sembarang edge baru e graf T + e mempunyai
tepat satu cycle.

Bukti.
1-5 Karena T sebuah pohon maka T terhubung dan tidak memuat sirkel. Andaikan terda-
pat dua verteks dalam T yang dihubungkan oleh lebih dari satu lintasan, maka terdapat
sirkel dalam T yang berarti T bukan sebuah pohon. Pengandaian diingkar, jadi setiap
dua verteks dalam T dihubungkan tepat satu lintasan .

Pembuktian ekivalensi yang lain dalam Teorema-6.6 untuk latihan bagi para pembaca.

Teorema-6.7. Sebuah graf tak berarah adalah sebuah pohon jika dan hanya jika dapat di-
temukan sebuah lintasan tunggal antara sebarang dua verteksnya.

Contoh-6.1. Diberikan sebuah pohon T mempunyai dua verteks berderajat 2, sebuah ver-
teks berderajat 3, dan tiga verteks berderajat 4. Berapakah daun yang dimiliki oleh T ?
Pemecahan.
Misalkan T mempunyai k daun, maka:
Banyaknya verteks di T : v = k + 2 +1 +3 = k + 6
Jumlah derajat di T : d = k.1 + 2.2 + 1.3 + 3.4 = k + 19
Banyaknya edge di T : e = d/2 = (k + 1)/2
Karena T adalah sebuah pohon, maka e = v – 1. Akibatnya (k + 1)/2 = k + 5.
Jadi k = 9, (berarti banyaknya daun di pohon T adalah 9 daun).

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 4


Modul Ajar Matematika Diskrit Graf Pohon

6.2 POHON BERAKAR, POHON TERURUT DAN POHON BINER

Definisi-6.3. Suatu graf berarah disebut sebuah pohon berarah (directed tree), apabila
setelah arah dari setiap edge-nya diabaikan / dihapus graf tersebut merupakan sebuah pohon.

Disini, verteks dengan derajat keluar (out degree) 0 disebut sebuah daun (leaf) dan verteks
dengan derajat keluar tak 0 disebut cabang (branch). Sebagai contoh dari sebuah graf po-
hon berarah diperlihatkan dalam Gambar-6.2.

a e h

c d f

b g

Gambar-6.2. Sebuah graf pohon berarah.

Dalam graf pohon berarah (Gambar-6.2), verteks g dan h adalah daun sedangkan verteks
a, b, c, d, e, dan f adalah cabang.

Terminologi untuk graf pohon


- Sebuah akar (root) ialah sebuah verteks dalam sebuah graf pohon yang mempunyai
derajat masuk (indegree) 0.
- Sebuah cabang (branch) atau internal vertex ialah verteks dalam sebuah graf pohon
yang mempunyai derajat masuk dan derajat keluar tidak 0.
- Sebuah daun (leaf) ialah verteks dalam graf pohon yang mempunyai derajat keluar 0.
- Parent dari verteks v dalam graf pohon ialah verteks tunggal u sedemikian hingga
sebuah edge berarah dari u ke v.
- Dalam sebuah graf pohon, jika verteks u adalah parent dari verteks v, maka v adalah
sebuah anakan (child / son) dari u.
- Verteks u dan v bersaudara (brother / sibling) jika mereka mempunyai parent sama.
- Leluhur (ancestor) dari sebuah verteks v ialah verteks-verteks dalam lintasan dari
root ke v.
- Keturunan (descendant) dari sebuah verteks v ialah verteks-verteks yang mempunyai
ancestor v.
- Sebuah subtree ialah subgraph dari tree yang berupa sebuah tree.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 5


Modul Ajar Matematika Diskrit Graf Pohon

6.2.1 Pohon Berakar


Definisi-6.4. (i) Sebuah pohon dimana satu verteksnya dibedakan dengan verteks yang
lainnya disebut pohon berakar (rooted tree) dan verteks yang dibedakan itu disebut akar
(root) dari pohon. (ii) Sebuah pohon berakar berarah (directed rooted tree) ialah sebuah
pohon berarah dimana tepat satu verteksnya mempunyai derajat masuk 0 (ditandai / ditunjuk
sebagai akar) dan setiap edgenya terarah dari akar.

Sebuah contoh untuk pohon berakar berarah diperlihatkan oleh Gambar-6.3. Verteks a adalah
akar pohon; verteks b dan c adalah cabang; sedangkan verteks d, e, f, g, dan h adalah daun.

b c

d e f g h

Gambar-6.3. Sebuah graf pohon berakar berarah.

Contoh-6.2. Diketahui sebuah barisan bilangan bulat yang berlainan semua 4, 1, 13, 7, 2, 8.
Tentukan semua subbarisan monoton naik yang terpanjang dalam barisan tersebut.
Pemecahan.
Kita gambarkan semua barisan monoton naik dalam barisan tersebut kedalam struktur sebuah
pohon sebagaimana diperlihatkan oleh Gambar-6.4 berikut

4 1 13 7 2

13 7 13 7 2 8 8

8 8

Gambar-6.4. Struktur pohon subbarisan monoton naik dari barisan 4, 1, 13, 7, 2, 8.

Dalam Gambar-6.4 mudah dilihat bahwa subbarisan monoton naik terpanjang dalam barisan bilangan
diatas adalah barisan 4, 7, 8 dan 1, 7, 8.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 6


Modul Ajar Matematika Diskrit Graf Pohon

6.2.2 Pohon Terurut

Definisi-6.5. Sebuah pohon terurut (ordered rooted tree) ialah sebuah rooted tree dimana
anakan (children) dari semua internal vertex-nya terurut. (Biasanya terurut dari kiri ke
kanan).

Contoh dari pohon terurut diperlihatkan pada Gambar-6.5 dan Gambar-6.6.

f g c

d b a e

b c d

a e b d

f g e

c f g

T Pohon tak terurut Pohon terurut


Gambar-6.5. Sebuah pohon tak terurut dan pohon terurut.

Kalimat

1 2 3

Pokok Kalimat Predikat Pelengkap

1 2 1 2

Ket.
Subyek Obyek Ket. Obyek
Subyek

Anjing herder itu mengejar kucing tetangga

Gambar-6.6. Sebuah pohon terurut dari sebuah kalimat.

Definisi-6.6. Sebuah pohon berakar disebut sebuah pohon m-ari (m-ary tree) jika setiap
internal vertex-nya mempunyai tidak lebih dari m children. Sebuah pohon disebut pohon
m-ari beraturan (regular m-ary tree) jika setiap internal vertex-nya mempunyai tepat m
children.

Definisi-6.7. Sebuah pohon m-ari beraturan disebut pohon m-ari beraturan penuh (full
regular m-ary tree) jika internal vertex dengan level l mempunyai tepat children.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 7


Modul Ajar Matematika Diskrit Graf Pohon

Teorema-6.8. Sebuah full m-ary tree dengan i internal vertex memuat n = m.i + 1 verteks.

Teorema-6.9. Sebuah pohon m-ari penuh (full m-ary tree) dengan


n 1 (m  1).n  1
(i) n verteks mempunyai: i  internal vertex dan l  leaf.
m m
(ii) i internal vertex mempunyai: n  m.i  1 verteks dan l  (m  1).i  1 leaf.
m.l  1 l 1
(iii) l leaf mempunyai: n  verteks dan i  internal vertex.
m 1 m 1

Teorema-6.10. Terdapat sebanyak-banyaknya m h leaf dalam m-ary tree dengan tinggi h.

Sebuah m-ary tree dengan tinggi h adalah seimbang (balanced) jika semua leaf berada pada
level h atau h-1.

Corollary-6.11.
(i) Jika sebuah m-ary tree dengan tinggi h mempunyai l leaf, maka h  log m l .
(ii) Jika m-ary tree adalah full dan balanced, maka h  log m l .

6.2.3 Pohon Biner

Definisi-6.8. Sebuah pohon biner (binary tree) adalah sebuah pohon 2-ari terurut dimana
setiap anakan (child) diperuntukkan sebagai sebuah anakan kiri atau anakan kanan.

Contoh sebuah pohon biner beraturan diperlihatkan pada Gambar-6.7.

* e

+ d

a *

b c

Gambar-6.7. Pohon biner beraturan dari sebuah ekspresi aljabar ((a+b*c)*d-e).

Dalam sebuah ordered rooted binary tree jika sebuah internal vertex mempunyai dua
children, maka first child-nya disebut left child dan second child-nya disebut right child.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 8


Modul Ajar Matematika Diskrit Graf Pohon

Definisi-6.9. Left (atau Right) subtree dari sebuah vertex v dalam sebuah pohon biner
adalah subpohon biner (binary subtree) yang merentang (spanning) anakan kiri (left child)
atau anakan kanan (right child) dari v dan semua keturunannya.

b c i

i
d e h h k l

f g j k l j m

(a) (b) (c)

Gambar-6.8. Sebuah pohon biner dan subpohon kiri dan kanan dari verteks c.

Teorema-6.12. Pohon biner beraturan dengan verteks lebih dari 2 mempunyai tepat satu
verteks berderajat 2 dan verteks yang lainnya berderajat 1 atau 3.

Teorema-6.13. Banyaknya verteks dalam sebuah pohon biner beraturan selalu ganjil.

Bukti.
Dalam sebuah graf, banyaknya verteks berderajat ganjil adalah genap sedangkan dalam
sebuah pohon biner beraturan setiap verteks berderajat ganjil kecuali akarnya berderajat 2.
Bila n adalah banyak verteks dalam pohon biner T, maka n-1 genap. Jadi n adalah ganjil.
[Terbukti]

Teorema-6.14. Jika p adalah banyak daun dalam sebuah pohon biner beraturan T dengan
n verteks, maka berlaku .

Teorema-6.15. Sebuah pohon biner lengkap (complete binary tree) dengan tinggi h mem-
punyai verteks.

Corollary-6.16. Setiap pohon biner dengan tinggi h mempunyai sebanyak-banyaknya


verteks.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 9


Modul Ajar Matematika Diskrit Graf Pohon

Definisi-6.10. Sebuah pohon biner seimbang (balanced binary tree) ialah sebuah pohon bi-
ner dimana kedalaman subpohon kiri dan subpohon kanan dari setiap verteks internalnya
berbeda paling banyak 1.

Sebuah pohon biner dengan n daun disebut pohon biner seimbang, jika :
(i) berakibat d = m.
(ii) berakibat d = m atau d = m+1.
dimana : d panjang lintasan dari akar ke daun dan m bilangan bulat tak negatif.

Contoh pohon biner seimbang dan pohon biner tak seimbang diperlihatkan oleh Gambar-6.9.

(a) (b) (c)


Gambar-6.9. Pohon biner seimbang dan pohon biner tak seimbang.

Dalam Gambar-6.9, (a) sebuah pohon biner seimbang karena n = 4, m = 2, d = 2 berakibat


d = m; (b) sebuah pohon biner seimbang karena n = 5, m = 2, untuk d = 2 berakibat d = m
dan untuk d = 3 berakibat d = m+1; dan (c) bukan sebuah pohon biner seimbang karena
n = 4, m = 2, d = 1, 2, 3.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 10


Modul Ajar Matematika Diskrit Graf Pohon

Latihan 6.2

1. Konstruksikan masing-masing sebuah contoh dari berikut:


a) Pohon m-ari regular b) Pohon m-ari penuh
c) Pohon m-ari lengkap.

2. Konstruksikan sebuah contoh pohon 2-ari seimbang.

3. a) Berapa banyaknya pohon tak berakar dengan 3 verteks yang tak isomorfik ?
b) Berapa banyaknya pohon berakar dengan 4 verteks yang tak isomorfik ?

4. Perlihatkan bahwa sebuah graf sederhana adalah sebuah graf pohon jika dan hanya jika
terhubung, tetapi penghapusan dari sebarang edge-nya menghasilkan sebuah graf yang tak
terhubung.

5. Misalkan G sebuah graf sederhana dengan n verteks. Tunjukkan bahwa G adalah sebuah
pohon jika dan hanya jika terhubung dan mempunyai n-1 edge.

6. Yang manakah graf bipartisi lengkap, dimana m dan n bilangan bulat positif adalah
sebuah pohon.

7. Berapakah banyaknya edge dari sebuah pohon dengan 1000 verteks.

8. a) Berapakah banyaknya cabang dari sebuah pohon 3-ari penuh dengan 1000 verteks.
b) Berapakah banyaknya daun dari sebuah pohon 3-ari penuh dengan 1000 verteks.

9. Berapakah banyaknya verteks dari sebuah pohon 5-ari penuh dengan 100 cabang.

10. Berapakah banyaknya verteks dari sebuah pohon biner penuh dengan 100 cabang.

11. Kerjakan salah satu: (i) Gambarkan sebuah pohon m-ari penuh dengan 76 daun dan tinggi
3, dimana m adalah sebuah bilangan bulat positif; atau (ii) Tunjukan bahwa tidak ada
pohon seperti itu.

12. Kerjakan salah satu: (i) Gambarkan sebuah pohon m-ari penuh dengan 84 daun dan tinggi
3, dimana m adalah sebuah bilangan bulat positif; atau (ii) Tunjukan bahwa tidak ada
pohon seperti itu.

13. Sebuah pohon m-ari penuh, T, mempunyai 81 daun dan tinggi 4.


a) Tentukan batas atas dan batas bawah untuk m.
b) Berapakah m jika T seimbang.

14. Konstruksikan: (i) sebuah pohon biner lengkap dengan tinggi 4; dan (ii) sebuah pohon
3-ari lengkap dengan tinggi 3.

15. a) Berapa banyaknya verteks dari sebuah pohon m-ari lengkap dengan tinggi h ?
b) Berapa banyaknya daun dari sebuah pohon m-ari lengkap dengan tinggi h ?

16. Tunjukkan bahwa sebuah pohon m-ari penuh dan seimbang dengan tinggi h mempunyai
lebih dari daun.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 11


Modul Ajar Matematika Diskrit Graf Pohon

6.3 PENERAPAN POHON

6.3.1 Pohon Biner Traversal


Level Order
Definisi-6.11. Level-order dari sebuah pohon terurut adalah sebuah pendaftaran verteks
dalam urutan dari atas ke bawah, dari kiri ke kanan, dari sebuah bidang baku penggambaran
pohon tersebut.

Contoh-6.3. Diberikan sebuah pohon biner berlabel, T, sebagaimana diperlihatkan Gambar-


6.10. Level-order dari label dalam sebuah struktur pohon T ini adalah sebuah pendaftaran
label

b c d

e f g h i

j k l m

n 0 p

Gambar-6.10. Sebuah struktur pohon berlabel, T.

Algoritma pendaftaran level-order dari label pohon T diberikan oleh Algoritma-6.1.

Algoritma-6.1. Level-Order: Top-to-Bottom, Left-to-Right


Input : sebuah pohon biner;
Output : sebuah daftar verteks dalam level-order;
enqueue akar;
While queue tidak kosong
dequeue sebuah verteks dan tuliskan ia pada daftar keluaran;
enqueue anakannya dari kiri ke kanan;

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 12


Modul Ajar Matematika Diskrit Graf Pohon

Left Pre-Order Traversal


Definisi-6.12. Left pre-order traversal dari sebuah pohon biner T didefinisikan secara
rekursif sebagai berikut:
- Daftar (proses) akar dari T,
- Lakukan sebuah left pre-order traversal sub pohon sebelah kiri dari T,
- Lakukan sebuah left pre-order traversal sub pohon sebelah kanan dari T.

Contoh-6.4. Left pre-order dari sebuah struktur pohon T dalam Gambar-6.10 diatas adalah
daftar label h, i.

Algoritma-6.2. Left Pre-Order


Input : sebuah pohon biner;
Output : sebuah daftar verteks dalam left pre-order;
push akar kedalam stack;
While stack tidak kosong
pop sebuah verteks keluar dari stack, dan tuliskan ia dalam daftar keluaran;
push anakannya dari kanan ke kiri kedalam stack;

Post-Order Traversal
Definisi-6.13. Post-order traversal dari sebuah pohon biner T didefinisikan secara rekursif
sebagai berikut:
- Lakukan sebuah post-order traversal sub pohon sebelah kiri dari T,
- Lakukan sebuah post-order traversal sub pohon sebelah kanan dari T,
- Daftar (proses) akar dari T.

Contoh-6.5. Post-order dari sebuah struktur pohon T dalam Gambar-6.10 diatas adalah

Algoritma-6.3. Post-Order
Input : sebuah pohon biner;
Output : sebuah daftar verteks dalam post-order;
push akar kedalam stack;
While stack tidak kosong
If top(stack) tidak bertanda
Then tandai ia, dan push anakannya dari kanan ke kiri kedalam stack;
Else v := pop(stack);
Daftar v;

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 13


Modul Ajar Matematika Diskrit Graf Pohon

Teorema-6.17. Sebuah graf tak berarah adalah sebuah pohon jika dan hanya jika dapat di-
temukan sebuah lintasan tunggal antara sebarang dua verteksnya.

In-Order Traversal
Definisi-6.14. In-order traversal dari sebuah pohon biner T didefinisikan secara rekursif
sebagai berikut:
- Lakukan sebuah in-order traversal sub pohon sebelah kiri dari T,
- Daftar (proses) akar dari T,
- Lakukan sebuah in-order traversal sub pohon sebelah kiri dari T,

Contoh-6.6. In-order dari sebuah struktur pohon T dalam Gambar-6.10 diatas adalah
daftar label

Algoritma-6.4. In-Order
Input : sebuah pohon biner;
Output : sebuah daftar verteks dalam in-order;
push akar kedalam stack;
While stack tidak kosong
v := top(stack);
While v mempunyai sebuah anakan kiri
push leftchild( v) kedalam stack;
v := leftchild(v);
v := pop(stack);
Daftar v;
If v mempunyai sebuah anakan kanan
Then push rightchild(v) kedalam stack;
v := rightchild(v);
Else While stack tidak kosong v tidak mempunyai anakan kanan
v := pop(stack);
Daftar v;
If v mempunyai sebuah anakan kanan
push rightchild(v) kedalam stack;
v := rightchild(v);

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 14


Modul Ajar Matematika Diskrit Graf Pohon

6.3.2 Kode Biner Dan Kode Huffman

Definisi-6.15. Sebuah himpunan prefiks (prefix set) ialah sebuah himpunan string dimana
tidak memuat anggota himpunan yang merupakan awalan (prefix) dari anggota yang lain.

Contoh-6.7.
a) Himpunan adalah sebuah himpunan prefiks biner.
b) Himpunan bukan merupakan sebuah himpunan prefiks, karena
terdapat anggota himpunan, yaitu: aa dan abb, yang secara berurutan merupakan pre-
fiks dari anggota himpunan yang lain, yaitu: aaa dan abba.

6.3.2.1 Kode Biner

Definisi-6.16. Sebuah kode biner (binary code) dari sebuah himpunan kata (ward), W, ialah
sebuah penunjukkan sebagai simbol (atau makna yang lain) terhadap sekumpulan string
biner (bitstring) untuk setiap anggota himpunan, dimana masing-masing string biner dirujuk
sebagai sebuah kode kata (codeward) dalam W.

Contoh-6.8. Pada himpunan kata diberi


kode biner misalnya

Definisi-6.17. Sebuah kode prefiks biner (binary prefix code) dari sebuah himpunan kata,
W, ialah sebuah kode biner dengan sifat-sifat bahwa tidak terdapat kode kata yang merupa-
kan sebuah prefiks (initial substring) dari kode kata yang lain.

Sebuah kode prefiks biner dari sebuah himpunan kata, W, dapat digambarkan sebagai sebuah
graf pohon biner dimana setiap anakan kiri diberikan kode “ 0 ”, anakan kanan diberikan
kode “ 1 “, dan setiap daunya merupakan kata dalam W.

Contoh-6.9. Misal diberikan sebuah himpunan kata W = { kita, sedang, menghadapi, ujian }.
a) Himpunan kode { 00 , 01 , 10 , 11 } merupa-
kan sebuah kode prefiks biner dari W.
b) Himpunan kode { 00 , 001 , 10 , 101 } bukan
merupakan sebuah kode prefiks biner dari W.

Grafik kode prefiks biner dari Contoh-6.9.(a) diperlihatkan pada Gambar-6.11. berikut.

0 1

0 1 0 1

kita sedang menghadapi ujian

Gambar-6.11. Grafik sebuah kode biner prefiks dalam Contoh-6.9.(a).

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 15


Modul Ajar Matematika Diskrit Graf Pohon

6.3.2.2 Kode Huffman

Definisi-6.18. Misalkan T adalah sebuah pohon biner dengan daun sehingga


untuk setiap daun ditunjuk sebuah bobot . Maka kedalaman terboboti rata-rata
(average weighted depth) dari pohon biner T, dinyatakan , diberikan oleh

Contoh-6.10. Misal diberikan sebuah himpunan karakter A = {x(w) : karakter x berbobot w}


= { a(50), b(30), c(20), d(25), e(35) }. Kode prefiks biner dari A tidak tunggal, sebagai
contoh: { 0000 a, 001 b,1 c, 01 d, 0001 e }, {1 a, 001 b,0000 c, 0001 d,
01 e }. Graf dari kode prefiks biner ini diperlihatkan pada Gambar-6.12.

0 1 0 1

c a
0 1 0 1

d e
0 1 0 1

b b
0 1 0 1

a e c d

(a) (b)
Gambar-6.12. Contoh kode prefiks biner dari {a(50), b(30), c(20), d(25), e(35)}.

Dari graf pada Gambar-6.12, maka kedalaman terboboti rata-rata untuk kode prefiks biner (a)
adalah
sedangkan untuk kode prefiks biner (b)

Definisi-6.19. Huffman Code.


Sebuah kode Huffman (Huffman code) ialah sebuah kode prefix biner optimal (optimal
binary prefix code), yaitu sebuah kode prefiks biner yang mempunyai kedalaman terboboti
rata-rata terkecil.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 16


Modul Ajar Matematika Diskrit Graf Pohon

Algoritma-6.5. Huffman Prefix Code (oleh David Huffman)


Masukan : sebuah himpunan simbol ; dan sebuah daftar bobot
; dimana bobot yang berhubungan dengan symbol ;
Keluaran : sebuah pohon biner yang merepresentasikan sebuah prefix code untuk
sekumpulan simbol yang mempunyai codeword dengan panjang terbo-
boti rata-rata minimum;
Inisialisasi F sebagai sebuah hutan dari verteks terisolasi, berlabel dengan
bobot berturut-turut ;
For i = 1 To l – 1
1. Pilih dari hutan F dua pohon T dan T’, yang mempunyai bobot terkecil dalam F;
2. Kreasi sebuah pohon biner baru yang mempunyai akar dengan T dan T’ sebagai
subpohon kiri dan kanannya;
3. Beri label edge menuju T dengan sebuah 0 dan edge menuju T’ dengan sebuah 1;
4. Tunjuk ke pohon baru bobot ;
5. Ganti pohon T dan T’ dalam hutan F dengan pohon baru;
Return F;

Pohon biner yang dihasilkan dengan Algoritma-6.5 disebut pohon Huffman (Huffman tree)
untuk daftar simbol dan prefix code yang berhubungan disebut Kode Huffman (Huffman
code).
Sebagai contoh, kode Huffman dari himpunan karakter A pada Contoh-6.10 adalah
{11 a, 00 b,100 c, 101 d, 01 e}, graf kode Huffman dari A diperlihatkan pada
Gambar-6.13. Disini kedalaman terboboti rata-ratanya adalah 73.

0 1

0 1 0 1

b e a
0 1

c d

Gambar-6.13. Graf kode Huffman untuk himpunan karakter A dalam Contoh-6.10.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 17


Modul Ajar Matematika Diskrit Graf Pohon

Latihan 6.3

1. Yang manakah dari kode berikut ini adalah kode prefiks (prefix code), jelaskan:
a) a : 11, e : 00, t : 10, s : 01
b) a : 0, e : 1, t : 01, s : 001
c) a : 101, e : 11, t : 001, s : 011, n : 010
d) a : 010, e : 11, t : 011, s : 1011, n : 1001, i : 10101

2. Konstruksikan pohon biner dengan kode prefiks merepresentasikan skema pengkodean


berikut:
a) a : 11, e : 0, t : 101, s : 100
b) a : 1 e : 01, t : 001, s : 0001, n : 00001
c) a : 1010, e : 0, t : 11, s : 1011, n : 1001, i : 10001

3. Diberikan skema pengkodean a : 001, b : 0001, c : 1, r : 0000, s : 0100, t : 011, x : 01010.


Dapatkan kata (word) yang direpresentasikan oleh
a) 01110100011 b) 0001110000
c) 0100101010 d) 01100101010

4. Gunakan kode Huffman untuk encode simbol yang mempunyai frekwensi berikut ini :
a : 0.20, b : 0.10, c : 0.15, d : 0.25, e : 0.30. Berapakah rata-rata banyaknya bit yang di-
perlukan untuk encode sebuah karakter ?

5. Gunakan kode Huffman untuk encode simbol yang mempunyai frekwensi berikut ini :
A : 0.10, B : 0.25, C : 0.05, D : 0.15, E : 0.30, F : 0.07, G : 0.08. Berapakah rata-rata ba-
nyaknya bit yang diperlukan untuk encode sebuah karakter ?

6. Konstruksikan dua kode Huffman berbeda untuk symbol yang dilengkapi dengan frekwen-
si berikut: t : 0.2, u : 0.3, v : 0.2, w : 0.3.

7. Jabarkan algoritma pengkodean Huffman m-ari dalam bentuk pseudo.

8. Menggunakan simbol: 0, 1, 2, gunakan pengkodean Huffman ternari (3-ari) untuk encode


huruf yang dilengkapi frekwensinya berikut : A : 0.25, E : 0.30, N : 0.10, R : 0.05,
T : 0.12, Z : 0.18.

9. Perhatikan tiga simbol : A, B, dan C dengan frekwensi : A : 0.80, B : 0.19, C : 0.01.


a) Konstruksikan sebuah kode Huffman untuk tiga simbol ini.
b) Bentuk sebuah himpunan baru dari sembilan simbol dengan pengelompokan blok dua
simbol: AA, AB, AC, BA, BB, BC, CA, CB, dan CC. Konstruksikan sebuah kode
Huffman Sembilan symbol ini, asumsikan bahwa kemunculan simbol dalam teks asli
adalah independen.
c) Bandingkan rata-rata banyaknya bit yang diperlukan untuk encode teks menggunakan
kode Huffman untuk simbol dalam bagian (a) dan kode Huffman untuk sembilan blok
dua simbol yang dikonstruksi dalam bagian (b). Yang manakah yang lebih efisien ?

10. a) Nyatakan ekspresi: (( x + xy) + ( x / y ) dan x + (( xy + x ) / y menggunakan pohon


biner.
Tuliskan ekspresi ini ke dalam
b) notasi prefix
c) notasi postfix

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 18


Modul Ajar Matematika Diskrit Graf Pohon

d) notasi infix

11. a) Nyatakan ekspresi: (( x + 2 ) 3 ) * ( y – ( 3 + x )) - 5 menggunakan pohon biner.


Tuliskan ekspresi ini ke dalam
b) notasi prefix
c) notasi postfix
d) notasi infix

12. a) Nyatakan ekspresi: ( A ∩ B ) – ( A ( B - A )) menggunakan sebuah pohon biner.


Tuliskan ekspresi ini ke dalam
b) notasi prefix
c) notasi postfix
d) notasi infix

13. Gambarkan pohon berakar-berarah yang berhubungan dengan setiap ekspresi aritmatika
yang dituliskan dalam notasi prefix berikut. Kemudian tuliskan masing-masing ekspresi
menggunakan notasi infix.
a) + * + - 5 3 2 1 4
b) +23–51
c) * / 9 3 + * 2 4 – 7 6

14. Berapakah nilai dari masing-masing ekspresi prefix berikut ?


a) - * 2 / 8 4 3
b) - * 3 3 * 4 2 5
c) + - 3 2 2 3 / 6 – 4 2
d) * + 3 + 3 3 + 3 3 3

15. Berapakah nilai dari masing-masing ekspresi postfix berikut ?


a) 5 2 1 - - 3 1 4 + + *
b) 9 3 / 5 + 7 2 - *
c) 3 2 * 2 5 3 – 8 4 / * -

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 19


Modul Ajar Matematika Diskrit Graf Pohon

6.4 POHON PERENTANG

Definisi-6.20. Sebuah pohon dari suatu graf G adalah sebuah subgraf T dari G yang
berupa sebuah pohon.

Definisi-6.21. Sebuah pohon T disebut pohon perentang (spanning tree) dari graf ter-
hubung G, bila T adalah sebuah subgraf perentang dari graf G .

Contoh pohon dan pohon perentang dari sebuah graf diperlihatkan pada Gambar-6.14.

a a a

b c b c b c

d e e d e

(a) (b) (c)

Gambar-6.14. Graf, pohon dan pohon perentang.

Teorema-6.18. Setiap graf terhubung mempunyai paling sedikit satu pohon perentang.

Bukti.
Jika G terhubung, maka :
(a) G tidak mempunyai sirkuit, berarti G adalah sebuah pohon perentang, atau
(b) G mempunyai sirkuit. Misalkan adalah sirkuit dari G. Dengan menghapus satu
edge di , subgraf yang tertinggal masih terhubung. Disini graf terhubung
dan tidak mempunyai sirkuit. Dst.
[Terbukti]

Edge yang ada pada sebuah pohon T dari graf G disebut cabang (branch) terhadap
T dan edge di G yang tidak di T disebut busur (chord) terhadap T.
Jika graf G tak terhubung, maka G mempunyai beberapa komponen. Himpunan po-
hon perentang dari semua komponen dari G disebut hutan perentang (spanning forest) dari
G.

Teorema-6.19. Sebuah graf terhubung G dengan n verteks dan e edge mempunyai n - 1


cabang dan e – n + 1 busur terhadap setiap pohon perentangnya.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 20


Modul Ajar Matematika Diskrit Graf Pohon

Bukti.
Misalkan G mempunyai pohon perentang T, maka banyaknya verteks pohon sama dengan
n. Akibatnya banyaknya cabang (edge pohon) sama dengan n - 1. Banyaknya dalam graf G
busur = e – banyaknya cabang dalam G = e - (n - 1) = e – n + 1.
[Terbukti]

6.4.1 Minimum Spanning Tree


Terminologi : Untuk sebuah pohon T dalam sebuah graf G : (i) edge dan verteks dari T
disebut edge pohon (tree edge) dan verteks pohon (tree vertex); dan (ii) edge dan verteks
dari G yang tidak dalam T disebut bukan edge pohon (non-tree edge) dan bukan verteks
pohon (non-tree vertex).

Definisi-6.22. Sebuah frontier edge untuk sebuah pohon yang diberikan T dalam sebuah
graf G adalah sebuah bukan edge pohon dengan titik ujung dalam T, disebut tree endpoint,
dan satu titik ujung tidak dalam T, disebut non-tree endpoint.

Proposisi-6.20. Misalkan T sebuah pohon dalam sebuah graf G, dan e sebuah frontier
edge untuk T. Maka subgraf dari G yang dibangun dengan menambahkan edge e ke
pohon T adalah sebuah pohon.
Bukti.
Karena edge e sebuah frontier, maka mempunyai satu titik ujung di T. Akibatnya, jika edge
e ditambahkan ke T tidak akan menimbulkan sirkuit dalam T yang baru. Jadi T yang baru
juga berupa sebuah pohon.
[Terbukti]

Definisi-6.23. Misalkan T sebuah pohon yang merupakan subgraf dari sebuah graf G, dan
S himpunan frontier-edge untuk T. Sebuah fungsi nextEdge(G,S) memilih dan mengem-
balikan nilai frontier-edge dalam S yang ditambahkan ke pohon T.

Masalah Pohon Perentang Minimum


Misalkan G sebuah graf berbobot yang terhubung. Dapatkan pohon perentang dari G yang
mempunyai total jumlah bobot edge minimum.

Definisi-6.24. Sebuah pohon perentang minimum dalam sebuah graf berbobot dan ter-
hubung G adalah sebuah pohon perentang dalam G yang mempunyai jumlah bobot yang
mungkin dari edgenya terkecil.

Untuk mendapatkan sebuah pohon perentang minimum dari sebuah graf G yang ter-
hubung dan berbobot, telah dikembangkan algoritma Prim dan algoritma Kruskal.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 21


Modul Ajar Matematika Diskrit Graf Pohon

Algoritma Prim
Misalkan S himpunan frontier-edge saat ini. Fungsi Prim-nextEdge didefinisikan
sebagai berikut:

Definisi-6.25. Sebuah fungsi Prim-nextEdge(G,S) memilih dan mengembalikan nilai dari


frontier-edge yang mempunyai bobot edge minimum. Jika terdapat lebih dari satu edge
seperti itu, maka fungsi Prim-nextEdge(G,S) memilih salah satu yang ditentukan dengan
prioritas tertentu.

Algoritma-6.6. Prim’s Algorithm


Input : sebuah graf berbobot dan terhubung G , dan verteks pemula v;
Output : sebuah pohon perentang minimum T;
Inisialisasi pohon T sebagai verteks v;
Inisialisasi S sebagai himpunan edge sejati yang insiden pada v;
While
1. Ambil e = Prim-nextEdge(G,S);
2. Ambil w adalah titik ujung dari e yang tidak berada pada pohon;
3. Tambahkan edge e dan verteks w ke pohon T;
4. Update Frontier(G,S);
Return pohon T;

Contoh-6.11. Gunakan Algoritma-6.6 untuk mendapatkan sebuah pohon perentang mini-


mum T dengan verteks awal e dari graf G yang diperlihatkan pada Gambar-6.15.

a b c d
2 3 1

3 1 2 5

f g
e 4 3 3 h

4 2 4 3

3 3 1
i j k l

Gambar-6.15. Sebuah graf G takberarah, terhubung dan berbobot.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 22


Modul Ajar Matematika Diskrit Graf Pohon

Pemecahan.
Inisiaisasi : T = {e};
Inisialisasi : S = {{e,a},{e, f},{e,i}};

Iterasi-1 : e = {e,a}; w = a; T = {{e,a}}; S = {{a,b},{e,i},{e,f}};


Iterasi-2 : e = {a,b}; w = b; T = {{e,a},{a,b}}; S = {{b,c},{b,f},{e,f},{e,i}};
Iterasi-3 : e = {b,f}; w = f; T = {{e,a},{a,b}, {b,f}}; S = {{b,c},{e,i},{f,g},{f,j}};
Iterasi-4 : e = {f,j}; w = j; T = {{e,a},{a,b}, {b,f},{f, j}}; S = {{b,c},{e,i},{f,g},{j,i},{j,k}};
Iterasi-5 : e = {j,i}; w = i; T = {{e,a},{a,b}, {b,f},{f, j},{j,i}}; S = {{b,c},{f,g},{j,k}};
Iterasi-6 : e = {f,g}; w = g; T = {{e,a},{a,b}, {b,f},{f, j},{j,i},{f,g}};
S = {{b,c},{g,c},{g,k},{j,k}};
Iterasi-7 : e = {g,c}; w = c; T = {{e,a},{a,b}, {b,f},{f, j},{j,i},{f,g},{g,c}};
S = {{c,d},{g,h},{g,k},{j,k}};
Iterasi-8: e = {c,d}; w = d; T = {{e,a},{a,b}, {b,f},{c,d},{f, j},{j,i},{f,g},{g,c}};
S = {{d,h},{g,h},{g,k},{j,k}};
Iterasi-9: e = {j,k}; w = k; T = {{e,a},{a,b}, {b,f},{c,d},{f, j},{j,i},{f,g},{g,c},{j,k}};
S = {{d,h},{g,h},{k,l}};
Iterasi-10: e = {k,l}; w = l; T = {{e,a},{a,b}, {b,f},{c,d},{f, j},{j,i},{f,g},{g,c},{j,k},{k,l}};
S = {{d,h},{g,h},{h,i}};
Iterasi-11: e = {g,h}; w = h;
T = {{e,a},{a,b}, {b,f},{c,d},{f, j},{j,i},{f,g},{g,c},{g,h},{j,k},{k,l}};
S = {};

Pohon perentang hasil dari penerapan algoritma Prim diperlihatkan pada Gambar-6.16.
dengan total jumlah bobot 2 + 1 + 3 + 1 + 2 + 3 + 3 + 2 + 3 + 3 + 1 = 24.

a b c d
2 1

3 1 2

f g
e 3 3 h

3 3 1
i j k l

Gambar-6.16. Graf pohon hasil penerapan Algoritma Prim pada graf G, Gambar-6.15.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 23


Modul Ajar Matematika Diskrit Graf Pohon

Algoritma-6.7. Prim’s Algorithm


Masukan : sebuah graf G : tak berarah, tehubung dan berbobot dengan n verteks;
Keluaran : sebuah pohon perentang minimum T dari G;
Inisialisasi T := sebuah edge dengan bobot minimum;
For i := 1 To n-2
Begin
e := sebuah edge dengan bobot minimum yang insiden ke sebuah verteks dalam
T dan tidak membentuk sebuah sirkuit sederhana dalam T jika ditambah-
kan ke T;
T := T dengan edge e yang ditambahkan;
End;

Proposisi-6.21. Misalkan pohon Prim setelah k iterasi dari Algoritma Prim pada sebuah
graf terhubung G, untuk Maka adalah sebuah subpohon dari sebuah
pohon perentang dari G.

Contoh-6.12. Gunakan Algoritma-6.7 untuk mendapatkan sebuah pohon perentang mini-


mum dalam graf G yang diperlihatkan pada Gambar-6.15.
Pemecahan.
Inisialisasi T = {{b,f}};

Iterasai-1 : e = {a,b}; T = {{a,b}, {b, f}};


Iterasai-2 : e = {f,,j}; T = {{a,b}, {b, f}, {f, j}};
Iterasai-3 : e = {a,,e}; T = {{a,b}, {a,e},{b, f}, {f, j}};
Iterasai-4 : e = {i,,j}; T = {{a,b}, {a,e},{b, f}, {f, j}, {i, j}};
Iterasai-5 : e = {f,,g}; T = {{a,b}, {a,e},{b, f}, {f, j}, {f,g},{i, j}};
Iterasai-6 : e = {c,g}; T = {{a,b}, {a,e},{b, f}, {c,g},{f, j}, {f,g},{i, j}};
Iterasai-7 : e = {c,d}; T = {{a,b}, {a,e},{b, f}, {c,d},{c,g},{f, j}, {f,g},{i, j}};
Iterasai-8 : e = {j,k}; T = {{a,b}, {a,e},{b, f}, {c,d},{c,g},{f, j}, {f,g},{i, j}, {j,k}};
Iterasai-9 : e = {b,c}; T = {{a,b}, {a,e},{b,c},{b, f}, {c,d},{c,g},{f, j}, {f,g},{i, j}, {j,k}};
Iterasai-10 : e = {g,h}; T = {{a,b}, {a,e},{b, f}, {c,d},{c,g},{f, j}, {f,g},{g,h},{i, j}, {j,k},{k,l}};

Pohon perentang hasil dari penerapan algoritma Prim diperlihatkan pada Gambar-6.17.
dengan total jumlah bobot 2 + 1 + 3 + 1 + 2 + 3 + 3 + 2 + 3 + 3 + 1 = 24.

a b c d
2 1

3 1 2

f g
e 3 3 h

3 3 1
i j k l

Gambar-6.17. Sebuah pohon perentang hasil algoritma Prim dari graf G, pada Gambar-6.15.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 24


Modul Ajar Matematika Diskrit Graf Pohon

Algoritma Kruskal

Algoritma-6.8. Kruskal’s Algorithm


Masukan : sebuah graf G : tak berarah, tehubung dan berbobot dengan n verteks;
Keluaran : sebuah pohon perentang minimum T dari G;
Inisialisasi T := graf kosong;
For i := 1 To n - 1
Begin
e := sebarang edge dalam G dengan bobot terkecil yang tidak membentuk
sirkuit sederhana bila ditambahkan ke T;
T := T dengan e yang ditambahkan;
End;

Contoh-6.13. Gunakan algoritma Kruskal untuk mendapatkan sebuah pohon perentang mini-
mum dalam graf G yang diperlihatkan pada Gambar-6.15.
Pemecahan.
Inisialisasi T = {};
Iterasai-1 : e = {b,f}; T = {{b, f}};
Iterasai-2 : e = {c,d}; T = {{b, f},{c, d}};
Iterasai-3 : e = {k,l}; T = {{b, f}, {c, d},{k,l}};
Iterasai-4 : e = {a,b}; T = {{a,b},{b, f}, {c, d},{k,l}};
Iterasai-5 : e = {f, j}; T = {{a,b},{b, f}, {c, d},{f, j},{k,l}};
Iterasai-6 : e = {c,g}; T = {{a,b},{b, f}, {c, d},{c,g},{f, j},{k,l}};
Iterasai-7 : e = {a,e}; T = {{a,b},{a,e},{b, f}, {c, d},{c,g},{f, j},{k,l}};
Iterasai-8 : e = {i, j}; T = {{a,b},{a,e},{b, f}, {c, d},{c,g},{f, j},{i,j},{k,l}};
Iterasai-9 : e = {j,k}; T = {{a,b},{a,e},{b, f}, {c, d},{c,g},{f, j},{i,j},{j,k},{k,l}};
Iterasai-10 : e = {b,c}; T = {{a,b}, {a,e},{b,c}{b, f}, {c,d},{c,g},{f, j},{i, j}, {j,k},{k,l}};
Iterasai-11 : e = {g,h}; T = {{a,b}, {a,e},{b,c}{b, f}, {c,d},{c,g},{f, j},{g,h},{i, j}, {j,k},{k,l}};

Pohon perentang hasil penerapan algoritma Kruskal diperlihatkan pada Gambar-6.18.


dengan total jumlah bobot 2 + 3 + 1 + 3 + 1 + 2 + 3 + 2 + 3 + 3 + 1 = 24.
a b c d
2 3 1

3 1 2

f g
e 3 h

3 3 1
i j k l

Gambar-6.18. Sebuah pohon perentang hasil algoritma Kruskal dari graf G, pada Gambar-6.15.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 25


Modul Ajar Matematika Diskrit Graf Pohon

6.4.2 Pohon Lintasan Terpendek


Masalah lintasan terpendek Misalkan s dan t dua verteks dari sebuah graf berbobot dan
terhubung. Dapatkan sebuah lintasan dari s ke t yang mempunyai total jumlah bobot edge
minimum.
Untuk mendapakan sebuah lintasan terpendek yang menghubungkan dua verteks dalam
sebuah graf berbobot dan terhubung digunakan algoritma Dijkstraa. Misalkan S adalah
himpunan frontier-edge saat ini. Didefinisikan sebuah fungsi Dijkstraa-nextEdge sebagai
berikut:

Definisi-6.26. Dijkstraa-nextEdge(G,S) memilih dan mengembalikan nilai frontier-edge-


nya yang mempunyai titik ujung tidak berada dalam pohon adalah terdekat ke verteks pemula
s. Jika terdapat lebih dari satu edge seperti itu, maka Dijkstraa-nextEdge(G,S) memilih salah
satu yang ditentukan dengan prioritas nilai terkecil.

Algoritma-6.9. Dijkstraa’s Algorithm


Masukan : sebuah graf berbobot dan terhubung G, dan verteks pemula s;
Keluaran : sebuah subgraf pohon lintasan terpendek T dalam G yang mempunyai
akar di verteks pemula s;
Inisialisasi : pohon T sebagai verteks s;
Inisialisasi : S sebagai himpunan edge asli yang insiden pada s;
While
1. Ambil e := Dijkstraa-nextEdge(G,S);
2. Ambil w titik ujung edge e yang tidak berada dalam pohon;
3. Tambahkan edge e dan verteks w ke pohon T;
4. Update Frontier(G,S);
Return pohon T.

Contoh-6.14. Gunakan Algoritma Dijkstraa untuk mendapatkan sebuah pohon lintasan


terpendek T dengan verteks awal e dari graf G yang diperlihatkan pada Gambar-6.15.
Pemecahan.
Inisiaisasi : T = {e};
Inisialisasi : S = {{e,a},{e, f},{e,i}};

Iterasi-1 : e = {e,a}; w = a; T = {{e,a}}; S = {{a,b},{e, f},{e,i}};


Iterasi-2 : e = {e,i}; w = i; T = {{e,a},{e,i}}; S = {{a,b},{e,f},{i, j}};
Iterasi-3 : e = {e,f}; w = f; T = {{e,a},{e, f}, {e,i}}; S = {{a,b},{f,b},{f,g},{f, j},{i, j}};
Iterasi-4 : e = {a,b}; w = b; T = {{e,a},{a,b}, {e, f},{e, i}}; S = {{b,c},{f,g},{f, j},{i, j}};
Iterasi-5 : e = {f, j}; w = j; T = {{e,a},{a,b}, {e,f},{e,i},{f, j}}; S = {{b,c},{f,g},{j,k}};
Iterasi-6 : e = {f,g}; w = g; T = {{e,a},{a,b}, {e,f},{e,i},{f, j},{f,g}};
S = {{b,c},{g,c},{g,h},{g,k},{j,k}};

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 26


Modul Ajar Matematika Diskrit Graf Pohon

Iterasi-7 : e = {b,c}; w = c; T = {{e,a},{a,b}, {e, f},{e, i},{f, j},{f,g},{b,c}};


S = {{c,d},{g,h},{g,k},{j,k}};
Iterasi-8: e = {c,d}; w = d; T = {{e,a},{a,b}, {e, f},{e,i},{f, j},{f,g},{b,c},{c,d}};
S = {{d,h},{g,h},{g,k},{j,k}};
Iterasi-9: e = {g,k}; w = k; T = {{e,a},{a,b}, {e, f},{e,i},{f, j},{f,g},{b,c},{c,d},{g,k}};
S = {{d,h},{g,h},{k,l}};
Iterasi-10: e = {k,l}; w = l; T = {{e,a},{a,b}, {e,f},{e,i},{f, j},{f,g},{b,c},{c,d},{g,k},{k,l}};
S = {{d,h},{g,h},{l,h}};
Iterasi-11: e = {g,h}; w = h;
T = {{e,a},{a,b}, {e, f},{e,i},{f, j},{f,g},{b,c},{c,d},{g,k},{g,h},{k,l}};
S = {};

Pohon perentang hasil penerapan algoritma Dijkstraa diperlihatkan pada Gambar-6.19.


dengan total jumlah bobot 2 + 1 + 3 + 3 + 4 + 3 + 3 + 4 + 2 + 2 + 1 = 28.

a b c d
2 3 1

f g
e 4 3 3 h

4 2 2

1
i j k l

Gambar-6.19. Graf pohon hasil penerapan Algoritma Dijkstraa pada graf G, Gambar-6.15.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 27


Modul Ajar Matematika Diskrit Graf Pohon

Latihan 6.4

1. Berapa banyaknya edge yang harus di buang dari sebuah graf terhubung dengan n verteks
dan m edge untuk menghasilkan sebuah pohon perentang ?

2. Dapatkan pohon perentang untuk setiap graf berikut


a) b)
c) d)
e) f)

3. Berapa banyak pohon perentang berbeda yang dimiliki dari masing-masing graf berikut ?
a) b)
c) d)

4. Berapa banyak pohon perentang tak isomorfik berbeda yang dimiliki dari masing-masing
graf sederhana berikut?
a) b)
c) d)

5. Tunjukkan bahwa setiap graf sederhana dan berhingga mempunyai sebuah hutan peren-
tang.

6. Berapakah banyaknya pohon dalam hutan perentang dari sebuah graf ?

7. Berapa banyaknya edge yang harus di buang dari sebuah graf dengan n verteks, m edge
dan c komponen untuk menghasilkan sebuah hutan perentang ?

8. Rancanglah sebuah algoritma untuk mengkonstruksi hutan perentang dari sebuah graf ber-
dasar pada penghapusan edge yang membentuk sirkuit sederhana.

9. Rancanglah sebuah algoritma untuk mengkonstruksi hutan perentang dari sebuah graf ber-
dasar pada penelusuran depth-first.

10. Rancanglah sebuah algoritma untuk mengkonstruksi hutan perentang dari sebuah graf ber-
dasar pada penelusuran breadth-first.

11. Misalkan G adalah sebuah graf terhubung. Tunjukkan bahwa jika T adalah sebuah po-
hon perentang dari G yang dikonstruksi menggunakan depth-first search, maka sebuah
edge dari G yang tidak dalam T harus merupakan sebuah back edge, yaitu ia harus
menghubungkan sebuah verteks ke verteks ancestor-nya atau verteks descendant-nya da-
lam T.

12. Misalkan G adalah sebuah graf terhubung. Tunjukkan bahwa jika T adalah sebuah po-
hon perentang dari G yang dikonstruksi menggunakan breadth-first search, maka sebuah
edge dari G yang tidak dalam T harus harus menghubungkan verteks-verteks di level
yang sama atau verteks-verteks di level yang berbeda 1 dalam pohon perentang ini.

13.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 28


Modul Ajar Matematika Diskrit Graf Pohon

6.5 FUNDAMENTAL CIRCUITS DAN CUT SETS

6.5.1 Fundamental Circuits


Jika adalah pohon perentang dari graf terhubung dan e adalah
sebuah chord terhadap T di G, maka graf dimana memuat
sebuah sirkuit yang disebut sirkuit dasar (fundamental circuit) terhadap pohon perentang T
untuk G. Himpunan semua sirkuit dasar dari G terhadap suatu pohon perentang di G
disebut sistem sirkuit dasar (fundamental circuit system) dari G.

Teorema-6.22. Banyaknya sirkuit dasar dari suatu graf G yang terhubung dengan n verteks
dan e edge terhadap suatu pohon perentang T adalah e – n + 1 buah.

Cyclic Interchange
Cyclic interchange ialah menambah satu chord ke pohon perentang awal, dan menghapus
satu cabang di sirkuit dasar yang terbentuk.

Teorema-6.23. Dengan mengambil suatu pohon perentang T dari sembarang graf G


sebagai pohon perentang awal, maka dengan menerapkan cyclic interchange berurutan akan
diperoleh setiap pohon perentang dari G.

6.5.2 Cut-Sets
Definisi-6.27. Sebuah cut-set dari suatu graf adalah sebuah himpunan bagian C
dari E sehingga dengan dihapusnya semua edge di C subgraf yang terjadi akan mempunyai
komponen satu lebih banyak dari pada komponen di G. Dimana ini tidak terjadi apabila
yang dihapus hanya edge yang ada pada himpunan bagian sejati dari C.

Misalkan G = (V,E) sebuah graf terhubung. Jika V dipartisi menjadi 2 himpunan


bagian (blok) dan yang saling asing sehingga setiap pasang dua verteks di (atau
) dihubungkan oleh lintasan yang hanya melalui verteks di (atau ), maka himpunan
edge di E yang menghubungkan verteks di dan verteks di adalah sebuah cut-set.
Contoh cut-set dari sebuah graf diperlihatkan pada Gambar-6.20.

v1

e1 e2

v2 e3 v3

e4 e5

v4 e6 v5

Gambar-6.20. Sebuah graf G dan beberapa cut-set dari G.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 29


Modul Ajar Matematika Diskrit Graf Pohon

Dalam graf G pada Gambar-6.20, himpunan adalah sebuah cut-set dengan


dan himpunan adalah sebuah cut-set dengan
dan

Teorema-6.24 . Setiap edge dalam suatu pohon adalah suatu cut-set.

Teorema-6.25 . Suatu cut-set dan suatu pohon perentang dari suatu graf terhubung paling
sedikit mempunyai satu edge bersekutu.
Bukti.
Misalkan pohon perentang dari graf terhubung dan C adalah
cut-set dari G sehingga irisan dari E(T) dan C adalah kosong. Ini berarti
masih terhubung, karena T terhubung. Ini bertentangan dengan definisi cut-set. Jadi

[Terbukti]

Teorema-6.26. Dalam sebuah graf terhubung G, setiap himpunan minimal S dari edge-
edge yang memuat paling sedikit satu cabang dari setiap pohon perentang dari G adalah
suatu cut-set.

Bukti.
Perhatikan graf G – S, yaitu subgraf yang terjadi setelah S dihapus dari G, maka G – S tak
memuat suatu pohon perentang dari G. Jadi, G - S tak terhubung. Karena S himpunan
minimal, maka G - S + {e} terhubung untuk . Jadi S adalah cut-set.
[Terbukti]

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 30


Modul Ajar Matematika Diskrit Graf Pohon

Latihan 6.5

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 31


Modul Ajar Matematika Diskrit Graf Pohon

DAFTAR PUSTAKA
ROSEN, K. H., “ Discrete Mathematics and Its Applictions “, Ed., McGraw-Hill Co. Inc.
2003.
GROSS, J.L. AND YELLEN, J., “ Graph Theory And Its Applications “, Chapman & Hall /
CRC, 2006.

Copyright © 2014, by Soetrisno, Jurusan Matematika FMIPA-ITS. 35

Modul Ajar Matematika Diskrit Graf Pohon

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 32


Modul Ajar Matematika Diskrit Graf Pohon

Copyright©2015, by Soetrisno, Jurusan Matematika FMIPA-ITS. 33

Anda mungkin juga menyukai