Oleh: Bandung Arry Sanjoyo 1 1 Modul 6 POHON Pendahuluan Dalam bab ini kita akan membahas salah satu jenis dari graf yang dinamakan pohon (tree). Banyak permasalahan dalam kehidupan sehari-hari yang dapat direpresentasikan sebagai pohon. Sebagai contoh: silsilah keluarga, susunan organisasi umumnya dinyatakan dalam bentuk pohon, jaringan komputer yang menggunakan teknologi ethernet atau star juga dimodelkan dalam bentuk pohon. Dalam dunia komputer, konsep pohon banyak dipakai. Seperti penguraian kalimat (parsing) dan pemanggilan fungsi dalam banyak bahasa pemrograman, pohon dipakai juga untuk melakukan penyandian (coding), dan untuk melakukan pemampatan file dalam algoritma Huffman, Lempel-Ziv, dan sebagainya. Dari sudut pandang matematika diskrit, bab ini akan membahas pohon sebagai bagian teori graf dan beberapa penerapanya. Tujuan Instruksional Umum Mahasiswa mengerti konsep pohon, macam-macam pohon, dan mengetahui penerapannya dalam kehidupan sehari-hari, khususnya dalam bidang komputer. Tujuan Instruksional Khusus Mahasiswa diharapkan dapat: 1. Memahami definisi pohon, dan dapat mengaitkannya dalam permasalahan sehari-hari. 2. Memahami pengertian pohon perentang, pohon perentang minimal, dan dapat melakukan pencarian pohon perentang minimal dari suatu graf. 3. Memahami pengertian pohon biner dan penerapannya.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Oleh: Bandung Arry Sanjoyo 1
1 Modul 6 POHON
Pendahuluan
Dalam bab ini kita akan membahas salah satu jenis dari graf yang dinamakan pohon (tree).
Banyak permasalahan dalam kehidupan sehari-hari yang dapat direpresentasikan sebagai pohon.
Sebagai contoh: silsilah keluarga, susunan organisasi umumnya dinyatakan dalam bentuk
pohon, jaringan komputer yang menggunakan teknologi ethernet atau star juga dimodelkan
dalam bentuk pohon.
Dalam dunia komputer, konsep pohon banyak dipakai. Seperti penguraian kalimat (parsing) dan
pemanggilan fungsi dalam banyak bahasa pemrograman, pohon dipakai juga untuk melakukan
penyandian (coding), dan untuk melakukan pemampatan file dalam algoritma Huffman,
Lempel-Ziv, dan sebagainya. Dari sudut pandang matematika diskrit, bab ini akan membahas
pohon sebagai bagian teori graf dan beberapa penerapanya.
Tujuan Instruksional Umum
Mahasiswa mengerti konsep pohon, macam-macam pohon, dan mengetahui penerapannya
dalam kehidupan sehari-hari, khususnya dalam bidang komputer.
Tujuan Instruksional Khusus
Mahasiswa diharapkan dapat:
1. Memahami definisi pohon, dan dapat mengaitkannya dalam permasalahan sehari-hari.
2. Memahami pengertian pohon perentang, pohon perentang minimal, dan dapat
melakukan pencarian pohon perentang minimal dari suatu graf.
3. Memahami pengertian pohon biner dan penerapannya.
Oleh: Bandung Arry Sanjoyo 2
4. Memahami berbagai macam teknik penelusuran pohon.
5. Memahami algoritma Huffman dan dapat melakukan penyandian dengan memanfaatkan
algoritma ini.
Oleh: Bandung Arry Sanjoyo 3
6.1 Kegiatan Belajar I:
Definisi Dan Sifat-Sifat Pohon
Pohon (Tree) telah digunakan sejak tahun 1857 oleh matematikawan Inggris yang bernama
Arthur Cayley untuk menghitung jumlah senyawa kimia. Pada Gambar 6.1.1 menggambarkan
dua isomer Butane CnH2n+2 . Sejak itu, pohon banyak dipakai untuk menyelesaikan berbagai
permasalahan dalam berbagai macam disiplin ilmu.
H
C
C
C
C
H
H
H
H
H
H
H
H
H
C
C
H
C CH H
H H
H H
H H
H
Gambar 6.1.1 Dua Isomer Butane
Silsilah keluarga biasa digambarkan dalam bentuk pohon. Sebagaimana pada Gambar 6.1.2
yang merupakan silsilah keluarga Bernoulli, suatu keluarga matematikawan yang terkenal dari
Swiss. Diagram seperti itu dinamakan pohon silsilah. Pohon silsilah merupakan suatu graf
dengan verteks menyatakan nama anggota keluarga dan edge menyatakan hubungan antara anak
dan orang tua. Kalau kita perhatikan pada pohon silsilah tersebut tidak memiliki sirkuit/cycle.
Nikolaus
1623-1708
Jacob I
1654-1705
Nikolaus
1662-1716
Johann I
1667-1748
Nikolaus I
1687-1759
Nikolaus II
1659-1726
Daniel
1700-1782
Johann II
1710-1790
Johann III
1746-1807
Jokob II
1759-1789
Gambar 6.1.2 Silsilah keluarga Bernoulli
Oleh: Bandung Arry Sanjoyo 4
Definisi 6.1.1 Pohon (tree) adalah graf tak-berarah terhubung yang tidak memuat sirkuit
sederhana.
Menurut definisi di atas, suatu pohon merupakan graf yang terhubung, tak berarah, dan tidak
memuat sirkuit, ini merupakan tiga kriteria utama untuk pohon. Pada Gambar 6.1.3, gambar (a),
(b), dan (c) merupakan pohon. Sedangkan Gambar 6.1.3 (d) bukan merupakan pohon karena
tidak terhubung. Jika kita perhatikan lagi pada definisi di atas bahwa suatu pohon tidak memuat
sirkuit sederhana, maka dalam suatu pohon pasti tidak memuat multiple edge (dua edge yang
mempunyai verteks awal dan akhir sama) dan loop. Oleh karena itu suatu tree harus merupakan
graf sederhana.
a
a b
a
b
c
d
e
a
b
c
d
e
f
g
(a) (b) (c) (d)
Gambar 6.1.3
Contoh 6.1.1:
Ada empat pasang suami istri yang suka gosip. Si a beristri A, si b beristri B, si c beristri C, dan
si d beristri D. Si a menelpon istrinya dan menceritakan gosip baru, yang kemudian istri a
menelepon para istri untuk menyebarkan gosip itu. Setiap istri itu menelpon dan menceritakan
gosip kepada suami masing-masing. Jika setiap orang kita nyatakan dalam verteks/node, maka
edge menyatakan hubungan orang menelpon orang. Oleh karena itu, tersebarnya gosip ini dapat
dimodelkan dalam bentuk pohon seperti Gambar 6.1.4.
a Ac
B
dD
b
C
Gambar 6.1.4.
Dari definisi dan penjelasan pada contoh di atas, suatu pohon merupakan graf terhubung dan
tidak memuat sirkuit sederhana. Bagaimana kalau ada suatu graf yang tidak memuat sirkuit
sederhana, akan tetapi tidak terhubung?. Seperti Gambar 6.1.5 merupakan sebuah graf yang
Oleh: Bandung Arry Sanjoyo 5
tidak memuat sirkuit sederhana akan tetapi tidak terhubung. Graf pada Gambar 6.1.5 tersebut
terdiri dari tiga buah komponen (subgraf yang terhubung) masing-masing merupakan pohon.
Gambar 6.1.5. Sebuah hutan
Definisi 6.1.2 Hutan (Forest) adalah graf tak-berarah tak terhubung yang terdiri dari dua atau
lebih komponen berupa pohon.
Berdasarkan definisi di atas, sebuah hutan merupakan suatu graf yang tak berarah dan tak
terhubung, terdiri dari komponen (subgraf) yang berupa pohon. Jadi suatu hutan terdiri dari
banyak pohon.
Teorema 6.1.1 Suatu graf tak berarah merupakan pohon jika dan hanya jika setiap dua pasang
verteks hanya ada sebuah lintasan sederhana.
Bukti:
Pertama kita tunjukkan bahwa jika suatu graf tak berarah merupakan pohon maka setiap dua
pasang verteks hanya ada sebuah lintasan sederhana.
Anggap bahwa grafnya adalah T yang berupa pohon. Karena T berupa pohon, maka T
merupakan graf terhubung yang tidak memuat sirkuit sederhana. Ambil dua verteks u dan v di
T. Karena T terhubung, maka ada lintasan sederhana dari verteks u ke verteks v. Selanjutnya
akan ditunjukkan bahwa lintasan ini hanya satu-satunya. Misal ada dua lintasan sederhana dari
u ke v, katakan lintasan tersebut adalah:
Lintasan pertama : u-x1-x2-...-xr-v.
Lintasan kedua : u-y1-y2-...-ys-v.
Jika lintasan pertama dan lintasan kedua berbeda, maka deretan x1-x2-...-xr dan y1-y2-...-ys tidak
sama. Karena deretan x1-x2-...-xr dan y1-y2-...-ys tidak sama dan keduanya berawal dari verteks u
dan berakhir pada verteks v, maka kalau dua lintasan ini kita gabung akan membentuk sirkuit.
Oleh: Bandung Arry Sanjoyo 6
Hal bertentangan dengan graf T yang berupa pohon, dalam pohon tidak ada sirkuit. Oleh karena
itu, kedua lintasan tersebut harus sama.
Kedua kita tunjukkan bahwa jika setiap dua pasang verteks dalam suatu graf tak berarah hanya
ada sebuah lintasan sederhana maka graf tersebut merupakan pohon.
Anggaplah dalam suatu graf tak berarah T hanya ada sebuah lintasan sederhana diantara setiap
pasang verteks u dan v. Dengan demikian T merupakan graf yang terhubung. Karena lintasan
dari verteks u ke verteks v hanya ada satu, kita tidak bisa menemukan sirkuit sederhana dari
verteks u kembali ke verteks u. Karena graf T terhubung dan tidak mempunyai sirkuit
sederhana, maka graf T berupa pohon.
Contoh 6.1.2:
Perhatikan dengan teliti setiap graf pada Gambar 6.1.6. Graf G1 dan G2 merupakan pohon
karena setiap pasan node pada graf tersebut hanya ada satu lintasan yang menghubungkannya.
Untuk graf G3 bukan merupakan pohon karena ada sepasang node a dan node c yang memiliki
lebih dari satu lintasan, yaitu: a-b-f-e-c dan a-d-c. Untuk graf G4 bukan merupakan pohon
karena tak terhubung, akan tetapi graf tersebut membentuk dua komponen berupa pohon, oleh
karena itu G4 merupakan hutan.
a b c
d e f
a b c
d e f
a b c
d e f
a b c
d e f G1 G2 G3 G4
Gambar 6.1.6
Dalam penerapan pohon, salah satu dari node pada pohon sering dibuat sebagai akar (root).
Dari sebuah akar ini pasti ada lintasan tunggal menuju ke setiap node yang ada. Begitu kita
menentukan sebuah node pada pohon sebagai akar, kita berikan arah pada setiap edge dengan
asal/awal arah adalah dari akar. Sebagai gambaran, perhatikan graf pada Gambar 6.1.7.
a b c
d e f
a b c
d e f
Atau
a
b
c
d e f
Atau
a
b c
d
e
f
a b c
d e f
T T1 T2
Gambar 6.1.7
Graf T pada Gambar 6.1.7 merupakan pohon tak berakar. Dari pohon T, jika kita buat node b
sebagai akar maka didapat pohon berakar T1. Pada pohon berakar T1, dapat dibuat lintasan
Oleh: Bandung Arry Sanjoyo 7
tunggal yang berawal dari akar b ke setiap node lain a, c, d, e, atau f. Jika dari pohon T kita
buat node e sebagai akar maka didapat pohon berakar T2. Pada pohon berakar T2, dapat dibuat
lintasan tunggal yang berawal dari akar e ke setiap node lain a, b, c, d, atau f. Untuk pohon
berakar, penggambaran arah edge dapat dihilangkan, dengan perjanjian bahwa akar berada pada
paling atas, sedangkan arah edge adalah dari atas ke bawah.
Definisi 6.1.3 Pohon Berakar (Rooted Tree) T adalah suatu pohon yang salah satu nodenya
didefinisikan sebagai akar (root) r dan edgenya berarah sesuai arah lintasan dari node r melalui
edge tersebut.
Definisi 6.1.4 Untuk pohon T dengan akar r, didefinisikan:
i. Level (depth) dari node v di T adalah panjang lintasan dari node r ke node v.
ii. Kedalaman pohon T adalah maksimum dari semua level node yang ada di T.
iii. Daun (leaf) dari T adalah node berderajat satu selain node akar.
iv. Sebuah cabang (branch) dari T adalah sebuah lintasan dari node v ke node daun.
v. Orang tua (Parent) dari node v di T adalah sebuah node u sedemikian sehingga ada edge
(u,v) di T, dan node v dinamakan anak (child) dari u. Node-node yang mempunyai orang
tua sama dinamakan bersaudara (sibling).
vi. Pendahulu (Ancestor) dari node v yang bukan akar adalah semua node yang pada lintasan
dari akar ke v.
vii. Keturunan (Descendant) dari node v adalah semua node yang mempunyai pendahulu v.
viii. Node Internal dari T adalah node-node yang mempunyai anak
Definisi 6.1.4 Subpohon (Subtree) dari pohon T dengan node a sebagai akar adalah suatu
subgraf dari pohon T yang terdiri dari node a dan semua node keturunan a dan edge-edge yang
incident dengan semua node-node tersebut.
Oleh: Bandung Arry Sanjoyo 8
Contoh 6.1.3:
Perhatikan pohon T dengan 11 node yang berakar r seperti pada Gambar 6.1.8.
d
r
f
a b c
e
h i j
g
d
a
e
h
f
c
i j
g
i j
g
T T1 T2 T3 T4
Gambar 6.1.8 Sebuah pohon berakar r.
Akar dari pohon T adalah r.
Node internal dari pohon T adalah r, a, b, c, e, dan g.