POHON BINER 1. Definisi pohon biner dan pohon biner lengkap Misalkan T sebuah pohon dan v sebuah titik T. jika v berderajat tidak lebih dari dua dan titik T yang lain berderajat tidak lebih dari tiga, maka T disebut pohon biner dengan akar titik v. Pohon biner T berakar di titik v dikatakan pohon biner lengkap jika derajat titik v adalah dua atau nol dan setiap titik yang lain berderajat satu atau tiga atau setiap simpulnya mempunyai tepat dua buah anak, kiri dan kanan. Selanjutnya titik yang berderajat satu disebut titik terminal dan titik yang lain disebut titik internal. Sebagai contoh perhatikan gambar graph dibawah ini : v1 u1 v5 v6 v2 v3 v4 u2 u3 w1 w2 u4 w3 w5 w6 w8 T1 T2 w6 w7 w9 T3 Gambar 1. T1 pohon biner tak lengkap dengan akar v1 T2 pohon biner tak lengkap dengan akar u1 T3 pohon biner lengkap dengan akar w1 T1 adalah pohon biner dengan akar v1. titik-titik v2 dan v5 adalah titik-titik internal, sedangkan titik-titik v3, v4, dan v6 adalah titik terminal. Pohon T2 adalah pohon biner dengan akar titik u1, u2 disebut titik internal, dan titik-titik u3 dan u4 disebut titik terminal. Pohon T3 adalah pohon biner dengan akar w1. karena titik akar berderajat dua dan setiap titik yang lain di T3 berderajat satu atau tiga, maka T3 adalah pohon biner lengkap. Pohon biner T1 tidak lengkap karena titik internal v5 berderajat dua, sedangkan pohon biner T2 tidak lengkap karena titik akarnya berderajat satu. Sebagai akibat teorema jabat tangan dan definisi pohon biner lengkap, maka banyaknya titik pohon biner lengkap selalu bilangan ganjil dan selisih antara banyaknya titik terminal dan banyaknya titik internal adalah satu. Pohon biner seimbang adalah pohon biner yang perbedaan tinggi antara anak kiri dan anak kanan maksimal 1. Pada pohon biner seimbang dengan tinggi h, semua daun berada pada aras h atau h – 1 . untuk membuat pohon seimbang, tinggi pohon secara keseluruhan harus dibuat seminimal mungkin. Untuk memperoleh tinggi minimum, setiap aras harus mengandung jumlah simpul sebanyak mungkin. Hal ini dapat dibuat dengan menyebarkan setengah dari jumlah simpul di anak kiri dan setengah dari jumlah simpul di anak kanan. T1 T2 T3 Pohon T1 dan T2 pada gambar diatas adalah pohon seimbang, sedangkan T3 bukan pohon seimbang karena perbedaan anak kiri dan anak kanan tidak maksimal 1. Teorema 1. Jika T pohon biner lengkap dengan n titik, maka i. n ganjil ii. banyaknya titik terminal n 1 2 iii. banyaknya titik internal n 1 2 Bukti : Misalkan T pohon biner lengkap dengan titik akar v. berdasarkan definisi, maka v satu-satunya titik di T yang berderajat genap. Sedangkan sebanyak n-1 titik yang lainnya masing-masing berderajat ganjil. Karena banyaknya titik yang berderajat ganjil dalam graph adalah genap, maka n-1 genap. Akibatnya, n ganjil. Misalkan banyaknya titik-titik terminal di T adalah t. maka terdapat n-t titik internal dan sebanyak n-t-1 titik diantaranya masing-masing berderajat 3. sehingga jumlah derajat semua titik T adalah d (u) 2 3(n t 1) t ……….. (1) uV (T ) Karena T pohon dengan n titik, berdasarkan teorema 2.2 |E(T)| = n – 1 Berdasarkan teorem jabat tangan d (u) 2(n 1) …………. (2) uV (T ) Dari (1) dan (2) dieproleh, 2 + 3(n – t – 1) + t = 2 (n -1) t= n 1 terbukti 2 selanjutnya banyak titik internal T adalah n–t=n- n 1 n 1 = terbukti 2 2 jadi teorema 1. terbukti Misalkan T sebuah pohon biner dengan titik akar v. titik x di T dikatakan mempunyai tingkat (level) l jika panjang lintasan dari titik v ke titik x di T adalah l. tingkat titik x, dilambangkan dengan l(x). tinggi pohon T, dilambangkan dengan h(T), dedefinisikan sebagai berikut : h(T) = maksimum {l(x) | x є V(T)} contoh : Perhatikan pohon biner T3 pada Gambar 1. diatas. Titik akar w1 terletak pada level 0, titik-titik w2 dan w3 pada level 1, titik-titik w4, w5, w6, dan w7 pada level 2, titik-titik w8 dan w9 terletak pada level 3. sehingga tinggi pohon biner T3 adalah 3. pohon biner T1 dan T2 masing-masing tingginya 2. Teorema 2. Jika T pohon biner dengan n titik dan tinggi h, maka h ≥ [log 2 (n + 1) – 1] 2. Terapan Pohon Biner 2.1. Pohon Pencarian Biner Salah satu cara untuk menyimpan data agar data tersebut mudah untuk dicari (ditemukan) kembali adalah dengan menggunakan tehnik “pohon pencarian biner”. Pohon pencarian biner adalah pohon biner T yang berakar di titik v sedemikian sehingga setiap data berkorespondensi dengan titik T. data dilabel menggunakan bilangan asli, sesuai urutan alphabetic. Data diatur atau diletakkan pada titik-titik pohon biner T, sedemikian sehingga jika suatu data dengan label tertentu sudah diletakkan di titik u pada T, data yang berlabel lebih kecil harus diletakan disebelah kiri titik u, dan data yang berlabel lebih besar diletakkan disebelah kanan titik u. Contoh : Misalkan kita mempunyai data yang berupa kata-kata dalam kalimat berikut : “ Old Programmers Never Die They Just Lose Their Memories” Dalam kalimat ini terdapat 9 kata. Kata-kata : Die, Just, Lose, Memories, Never, Old, Programmers, Their, They, secara berturut-turut dilabel dengan bilangan 1, 2, 3, 4, 5, 6, 7, 8, 9. jika kata “Old” berkorespondensi dengan akar pohon biner, maka kata-kata dalam kalimat tersebut dapat ditempatkan dalam sebuah pohon biner berikut Old (6) Never (5) Programmers (7) Die (1) They (9) Just (2) Their (8) Lose (3) Memories (4) Gambar 2. Jika kata “Never” diletakkan pada akar pohon biner, maka didapat pohon pencarian biner berikut : Never (5) Just (2) Die (1) Programmers (7) Lose (3) Old (6) Memories (4) Their (8) They (9) Gambar 3. Mislnya, dari diagram yang terakhir ini, kita akan mencari kata “Old”. Karena label kata “Old” adalah 6, dan lebih besar dari kata “Never” sebagai akar yaitu 5, maka dari akar kita akan mencari ke arah kanan, kata pertama yang kita jumpai adalah “Programmer” berlabel 7. karena label kata “Old” lebih kecil dari label kata “Programmer”, maka kita lanjutkan ke arah kiri dan akhirnya kita jumpai kata “Old” di titik tersebut. Jadi kita hanya perlu dua step untuk mendapatkan kta “Old” dimana pencarian dimulai dari akar pohon biner tersebut. Dari contoh diatas, karena banyaknya item data (banyaknya kata dalam kalimat) adalah 9, maka tinggi pohon biner yang bisa dibuat adalah = h ≥ [log 2 (9 + 1) – 1] = h ≥ [log 2 9] =h≥3 Karena pohon biner dengan cara yang kedua memiliki tinggi 3, maka cara yang kedua diatas merupakan salah satu cara yang paling efisien. 2.2. Pohon Keputusan Pohon keputusan digunakan untuk memodelkan persoalan yang terdiri dari rangkaian keputusan yang mengarah ke solusi. Sebagai contoh, kita ingin mengurutkan tiga buah bilangan N1, N2, N3. pohon keputusan untuk persoalan ini ditunjukkan pada Gambar 4. N1< N2 N2< N3 N1<N2<N3 N1< N3 N1< N3 N1<N3<N2 N1<N2<N3 N3<N1<N2 N2< N3 N2<N3<N1 N3<N2<N1 Simbol elips menandai tes, dan simbol kotak menandai keputusan. Dari elips dibuat sisi ke kiri jika jawaban tes adalah “ya”, dan ke kanan jika jawaban tes adalah “tidak”. Perhatikan bahwa titik terminal pohon, sedangkan setiap komparasi berkorespondensi dengan titik internal pohon biner. Dalam contoh ini, terdapat 6 (=3!) keputusan yang mungkin. Perhatikan bahwa, dalam setiap pohon keputusan T untuk mengurutkan n buah bilangan berbeda, terdapat sebanyak n! titik terminal. Sehingga, berdasarkan Teorem. 1, banyaknya titik T adalah 2n! – 1. sehingga berdasarkan Teorema 2, tinggi pohon T adalah h(T) dengan h(T) ≥ [log2 (2n! – 1 + 1) – 1] = [log2 (2n!) – 1] = [log2 n!] Karena untuk bilangan bulat positif n berlaku n n n 2 n! = 1,2,3,… ......(n 1)n , maka 2 2 n n log2 n! ≥ log 2 2 2 tetapi untuk n ≥ 4, n n n log 2 ≥ log 2 n 2 2 4 Teorema 3. : a. setiap pohon keputusan untuk mengurut n bilangan berbeda mempunyai tinggi minimal log2 n!. b. algoritma mengurutkan n bilangan berbeda dengan cara komparasi, memerlukan paling sedikit ¼ n log2 n komparasi. 2.3 Pohon Ekspresi Pohon ekspresi adalah pohon biner dengan daun menyatakan operand dan simpul dalam (termasuk akar) menyatakan operator. Perhatikan bahwa tanda kurung tidak lagi diperlukan bila suatu ekspresi aritmetik dipresentasikan sebagai pohon biner. Contoh : Pohon ekspresi aritmatika (a + b)*(c / (d + e)) * + a / b c + d e