Pohon Biner dan Aplikasinya

dokumen-dokumen yang mirip
DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

TUGAS MAKALAH INDIVIDUAL. Mata Kuliah : Matematika Diskrit / IF2153 Nama : Dwitiyo Abhirama NIM :

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

Pohon (TREE) Matematika Deskrit. Hasanuddin Sirait, MT 1

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

Matematika Diskret (Pohon) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Definisi. Pohon adalah graf tak-berarah, terhubung, dan tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon (ada sikuit) (tdk terhubung)

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

8/29/2014. Kode MK/ Nama MK. Matematika Diskrit 2 8/29/2014

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Pemanfaatan Pohon Biner dalam Pencarian Nama Pengguna pada Situs Jejaring Sosial

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

ALGORITMA DAN STRUKTUR DATA

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

POHON CARI BINER (Binary Search Tree)

BAB VII POHON BINAR POHON

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

Penerapan BFS dan DFS dalam Garbage Collection

B C D E F G H I J K L M N O P Q R S T. Tinaliah, S.Kom POHON BINER

Penerapan Pohon Untuk Menyelesaikan Masalah Labirin

Penyandian (Encoding) dan Penguraian Sandi (Decoding) Menggunakan Huffman Coding

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

Algoritma dan Struktur Data. Binary Tree & Binary Search Tree (BST)

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Variasi Pohon Pencarian Biner Seimbang

Pohon dan Pohon Biner

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

Penggunaan Pohon Biner Sebagai Struktur Data untuk Pencarian

TERAPAN POHON BINER 1

Penggunaan Pohon Huffman Sebagai Sarana Kompresi Lossless Data

Penggunaan Pohon Biner dalam Binary Space Partition untuk Membuat Dungeon Game Roguelike RPG

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

6. TREE / BINARY TREE

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

TREE STRUCTURE (Struktur Pohon)

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Pohon Biner (Bagian 1)

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Algoritma Prim dengan Algoritma Greedy dalam Pohon Merentang Minimum

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang

Pembuatan Peta Permainan dengan BSP

Tree. Perhatikan pula contoh tree di bawah ini : Level. Level 2. Level 3. Level 4. Level 5

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

MODUL PRAKTIKUM STRUKTUR DATA

BAB 7 POHON BINAR R S U

Algoritma dan Struktur Data. Linear & Binary Search Tree

PEMAMPATAN DATA DENGAN KODE HUFFMAN (APLIKASI POHON BINER)

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

BAB XI Manipulasi Binary Tree

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Pohon dan Aplikasinya dalam Bagan Silsilah Keturunan

Soal Pendahuluan Modul 3

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Struktur Data & Algoritma

Pemrograman Algoritma Dan Struktur Data

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Studi Digital Tree dan Aplikasinya pada Kamus

Pengaplikasian Pohon dalam Sistem Repository Ubuntu Linux

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

I. PENDAHULUAN. Gambar 1. Contoh-contoh graf

Aplikasi Pohon dalam Pencarian dan Penempatan Buku di Perpustakaan

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Struktur Data Tree/Pohon dalam Bahasa Java

Pengenalan Trie dan Aplikasinya

STRUKTUR POHON & KUNJUNGAN POHON BINER

Buku Ajar Struktur Data

Aplikasi Teori Graf dalam Penggunaan Cairan Pendingin pada Proses Manufaktur

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Aplikasi Pohon pada Pohon Binatang (Animal Tree)

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf


Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

B-Tree dan Penerapan di Basis Data

Tenia Wahyuningrum, S.Kom. MT Sisilia Thya Safitri, S.T.,M.T.

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Struktur dan Organisasi Data 2 POHON BINAR

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Penerapan Pengkodean Huffman dalam Pemampatan Data

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Transkripsi:

Pohon Biner dan Aplikasinya Muhammad Gema Akbar (13510099) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia mgemaakbar@students.itb.ac.id Abstract Makalah ini membahas tentang Pohon Biner, definisi istilah, sifat dan penggunaan praktikal dari pohon biner. Pohon biner adalah struktur data pohon dengan anak maksimum 2, beberapa aplikasi dari pohon biner yang dibahas dalam makalah ini adalah Binary Search Tree, Binary Space Partition, Huffman Coding Tree, Heap, Syntax Tree. Index Terms Binary Search Tree. Binary Space Partition, Graf, Heap, Huffman Coding Tree, Pohon, Pohon Biner, Syntax Tree I. PENDAHULUAN Pohon biner adalah jenis dari struktur data pohon dimana setiap node hanya bisa paling banyak memiliki 2 anak node. Seperti struktur data lainnya, pohon digunakan untuk menyimpan informasi. Tidak seperti struktur data Stack dan Queue, yang keduanya adalah struktur data linear, pohon (biner) adalah struktur data hirarkis. Untuk mengatakan bahwa struktur data pohon hirarkis berarti elemen pohon terurut diatas atau dibawah elemen lainnya. II. DEFINISI KOSAKATA DAN ISTILAH POHON BINER Anak (child/children) dan Orangtua (parent) adalah istilah yang menunjukan bahwa pohon biner adalah struktur data hirarkis, dalam Gambar 2.1 (contoh pohon biner) 7 dan 5 adalah anak dari 5, dan 5 adalah orang tua untuk 5. Derajat (degree) ada perbedaan antara arti derajat pada pohon berakar dan derajat pada graf, derajat sebuah simpul pada pohon berakar adalah jumlah subpohon (atau jumlah anak) pada simpul tersebut. Pada pohon biner, derajat maksimum adalah 2. Lintasan (Path) dari simpul v 1 ke simpul v k adalah sekuens simpul-simpul v 1,v 2,...v k sedemikian sehingga v i adalah orangtua dari v i+1 untuk 1<=i<k. Daun (Leaf) simpul yang memiliki derajat dapat disebut daun. Pada gambar 2.1 misalnya adalah 5, 11, 4, dan 2. Aras (level) atau tingkat adalah seperti namanya, istilah yang menjukan tinggi suatu pohon. Akar mempunyai aras samadengan 0. Pohon pada gambar 2.1 memiliki aras terbesar 3. Saudara kandung (sibling) adalah simpul yang memiliki orangtua sama. Contoh pada gambar 2.1 5 adalah sibling dari 7 (dan begitu sebaliknya) karena memiliki orangtua sama yaitu 2. III. JENIS-JENIS POHON BINER DAN SIFATNYA Rooted Binary Tree adalah pohon dengan simpul akar dimana setiap simpul paling banyak hanya bisa memiliki dua anak. Full Binary Tree adalah pohon dimana setiap simpulnya kecuali daun memiliki 2 simpul. Gambar 2.1 Contoh Pohon Biner Balanced Binary Tree adalah pohon biner yang tinggi dari 2 subpohon dari setiap simpul tidak pernah lebih dari Sifat-sifat dari pohon biner:

- Jumlah n simpul dari full binary tree adalah n = 2h+1-1 dimana h adalah tinggi dari pohon. - Jumlah simpul minimum dari pohon biner adalah n = 2 h dan paling banyak 2 h+1-1 dimana h adalah tinggi dari pohon. - Jumlah daun pada full binary tree (pohon biner lengkap) adalah 2 h dimana h adalah tinggi pohon. IV. OPERASI PADA POHON BINER Insertion (penyisipan) adalah penyisipan elemen pada pohon biner antara dua simpul atau penambahan pada simpul eksternal. Gambar 4.1 Insertion/peenyisipan elemen pada pohon biner. Deletion (penghapusan) adalah penghapusan elemen dari pohon. Gambar 4.2 Deletion/penghapusan elemen pada pohon biner. Iterasi/traversal adalah proses pengunjungan elemen pohon. Ada tiga cara, yaitu dengan cara Pre-Order, In- Order, dan Post-Order. Cara Post-Order : anak kiri, anak kanan, akar. Cara In-Order : Anak kiri, akar, anak kanan. Cara Pre-Order: Akar, Anak kiri, anak kanan. Depth-first order adalah algoritma pencarian pada pohon yang memiliki cara berawal dari akar, lalu menjelajahi sejauh mungkin setiap ranting sebelum mem-backtrack. 1 procedure DFS(G,v): 2 label v as explored 3 for all edges e in G.incidentEdges(v) do 4 if edge e is unexplored then 5 w G.opposite(v,e) 6 if vertex w is unexplored then 7 label e as a discovery edge 8 recursively call DFS(G,w) 9 else 10 label e as a back edge Gambar 4.3 Pseudocode/notasi algoritmik untuk Depthfirst order Breadth-first order adalah algoritma pencarian yang berawal dari simpul akar, lalu menjelajahi simpul terdekat, dan pada setiap simpul yang dikunjungi, diulangi langkah yang sama sampai ditemukan hasil pencarian. 1 procedure BFS(Graph,v): 2 create a queue Q 3 enqueue v onto Q 4 mark v 5 while Q is not empty: 6 t Q.dequeue() 7 for all edges e in G.incidentEdges(t) do 8 o G.opposite(t,e) 9 if o is not marked: 10 mark o 11 enqueue o onto Q Gambar 4.4 Pseudocode/notasi algoritmik utnuk Breadth-first order V. APLIKASI POHON BINER V.I Binary Search Tree Dalam sains komputer, Binary Search Tree yang disebut juga pohon biner terurut (ordered binary tree) adalah pohon yang memiliki sifat: - Anak pohon kiri memiliki nilai yang lebih kecil dari orang tuanya - Anak pohon kanan memiliki nilai yang lebih besar dari orangtuanya - Anak kiri dan kanan adalah binary search tree juga. Keunggulan utama dari BST dibanding struktur data lainnya adalah efisiensinya dalam menjalankan algoritma pencarian dan algoritma pengurutan. BST adalah struktur data pokok yang dapat digunakan dalam pembentukan struktur data abstrak (ADT) lainnya seperti himpunan, multiset. V.1.1 Operasi pada Binary Search Tree V.1.1.1 Searching/Pencarian Pencarian pada BST dapat dilakukan dengan cara rekursif atau iteratif. Langkah langkah pencarian: 1. Periksa apakah nilai pada simpul yang sekarang sedang diperiksa sesuai dengan yang dicari. Jika ya maka nilai ditemukan, jika tidak: 2. Jika nilai yang dicari lebih kecil daripada nilai yang sedang diperiksa sekarang: jika simpul yang sekarang sedang diperiksa tidak memiliki anak

kiri, maka nilai yang dicari tidak ada pada BST. Jika ada, ulangi langkah yang sama pada anak kiri. 3. Jika nilai yang dicari lebih besar daripada nilai yang sedang diperiksa sekarang, periksa anak kanan. Jika simpul yang sedang diperiksa tidak punya anak kanan maka nilai yang dicari tidak ada dalam BST. Jika punya, ulangi lankah yang sama pada anak kanan. bool BinarySearchTree::search(int val) { Node *next = this->root(); while (next!= NULL) { if (val == next->value()) { return true; else if (val < next- >value()) { next = next->left(); else { next = next->right(); //not found return false; Gambar 5.1 Algoritma Pencarian Pada Binary Search Tree - Menghapus simpul dengan 1 anak - Menghapus simpul dengan 2 anak Gambar 5.3 Skema penghapusan pada binary search tree. V.II Binary Space Partitioning Dalam grafika komputer untuk menggambar dengan cepat dan benar dapat digunakan Painter s algorithm. Z- buffering dapat memastikan gambar tergambar dengan benar, tapi memakan banyak memori. Pohon BSP dapat membagi objek agar painter s algorithm dapat menggambarnya tanpa butuh Z-buffer. Pohon BSP banyak digunakan dalam video game komputer. V.I.II Insertion/Penyisipan Awal dari cara kerja penyisipan sama dengan pencarian, jika akar yang sedang diperiksa tidak sama dengan nilai yang ingin disisipi, kunjungi anak pohon kiri atau kanan hingga akhirnya kita menemukan simpul eksternal dan menyisipkan nilai sebagai anak kiri atau kanan bergantung dari nilai. void InsertNode(Node* &treenode, Node *newnode) { if (treenode == NULL) treenode = newnode; else if (newnode->key < treenode- >key) InsertNode(treeNode->left, newnode); else InsertNode(treeNode->right, newnode); Gambar 5.2 Algoritma Penysipan pada Binary Search Tree V.I.III Deletion/Penghapusan Terdapat 3 kasus yang mungkin dan perlu diatasi dalam penghapusan elemen pohon BST: Gambar 5.4 Ilustrasi proses partisi sebuh poligon tidak beraturan menjadi bagian-bagian konveks oleh BSP. V.III Syntax Tree Syntax Tree adalah representasi pohon dari struktur sintaksis dari kode yang ditulis dengan bahasa pemrograman. Setiap simpul dari pohon mewakili sebuah kontruk yang terjadi dalam kode. Syntax Tree untuk: while b 0 if a > b a := a b else b := b a return a - Menghapus simpul yang merupakan daun

untuk setiap simbol, yang menghasilkan kode prefix. Kode prefix adalah bit string yang merepresenasikan simbol tertentu. String yang lebih pendek menandakan bahwa simbol yang direpresentasikan jarang digunakan, sementara string yang lebih panjang menandakan bahwa simbol sering muncul. Cara mendapatkan kode Huffman Jika simbol {a 1,a 2,a 3,a 4 memilki peluang kemuncukan dalam suatu string {0.4;0.35;0.2;0.05 maka untuk mendapatkan kode huffman nya, dibangun pohon biner Gambar 5.4 Syntax Tree V.IV Heap Gambar 5.5 Heap biner lengkap dengan nilai terbesar pada simpul akarnya (max-heap). Heap adalah struktur data yang berdasar dari pohon biner, memiliki sifat jika B adalah anak simpul dari A maka kunci(a)=>kunci(b). Ini berarti elemen terbesar pasti terdapat pada simpul akar, atau elemen terkecil pasti pada simpul akar. Heap memiliki banyak penggunaan, misalnya pada Heapsort, selection algorithm, dan algoritma graf. Algoritma graf seprti algoritma Prim, algoritma Dijkstra, dapat dikurangi runtime nya dengan menerapkan stuktur data heap hingga orde polinomial. Algoritma seleksi, pencarian nilai terbesar atau terkecil atau median, dapat dieksekusi dengan waktu linear jika heap digunakan. V.V Huffman coding Huffman coding digunakan dalam pemampatan/compression data. Huffman coding menggunakan cara spesifik dalam memilih representasi Gambar 5.6 Pohon biner untuk mendapatkan huffman code Pohon biner dibangun dengan cara mencari 2 simbol dengan peluang kemunculan paling kecil terlebih dahulu, dalam kasus ini adalah a3 dan a4. A3 memiliki peluang 0.2, a4 memiliki peluang 0.05. Tandai bagian kiri dengan 0, bagian anak kanan dengan 1. A3 sebagai anak kiri dan a4 sebagai anak kanan. Orangtua yang dibentuk adalah string gabungan dari a3 dan a4 yang memiliki peluang kemunculan sebsar jumlah dari kedua peluang a3 dan a4. Lalu ulangi langkah penentuan string yang memiliki peluang paling kecil (selai a3 dan a4 tentunya) dan ulangi langkah penggabungan sampai diperoleh gabungan string dengan peluang 1. VI. KESIMPULAN Pohon biner diturunkan dari struktur data lain yaitu pohon, yang diturunkan dari graf. Pada dasarnya pohon biner adalah pohon dengan anak maksimum 2. Dalam sains komputer, pohon biner memiliki banyak aplikasi, seperti binary search tree, binary space partitioning dalam grafika komputer untuk video game 3D, pembentukan struktur data lainnya, kompresi dengan kode Huffman, syntax tree dalam compiler. REFERENCES [1] En.wikipedia.org/wiki/Binary_tree Minggu, 12 Desember 2011 18.32 [2] En.wikipedia.org/wiki/Binary_search_tree Minggu, 12 Desember 2011 18.32 [3] En.wikipedia.org/wiki/Huffman_coding, Minggu, 12 Desember 2011 18.32 [4] En.wikipedia.org/wiki/Syntax_tree, Minggu, 12 Desember 2011 [5] En.wikipedia.org/wiki/Binary_space_partitioning, Minggu, 12 Desember 2011 18.32

[6] En.wikipedia.org/wiki/Heap, Minggu, 12 Desember 2011 18.32 [7] En.wikipedia.org/wiki/Heapsort, Minggu, 12 Desember 2011 18.32 [8] http://maven.smith.edu/~mcharley/bsp/, Minggu, 12 Desember 2011 18.33 PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 29 April 2010 ttd Muhammad Gema Akbar 13510099