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

dokumen-dokumen yang mirip
Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Pohon Biner (Bagian 1)

IKG2A3/ Pemrograman Terstruktur 2

Penerapan Pohon Untuk Memanipulasi dan Meritrieve Data

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

Pohon Biner. Tim Pengajar IF2030 Semester I/ /8/2009 FNA/IF2030/Sem

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

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

BAB XI Manipulasi Binary Tree

Kode MK/ Pemrograman Terstruktur 2

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

Struktur Data. Queue (Antrian)

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

6. TREE / BINARY TREE

Representasi Logic List Linier

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

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

TREE STRUCTURE (Struktur Pohon)

POHON CARI BINER (Binary Search Tree)

LIST LINIER 1. DEFINISI

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

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

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

Algoritma dan Struktur Data. Linear & Binary Search Tree

Pemrograman Algoritma Dan Struktur Data

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

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

ALGORITMA DAN STRUKTUR DATA

Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 10 & 11

Politeknik Elektronika Negeri Surabaya

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Buku Ajar Struktur Data

KUM 6 IMPLEMENTASI BINARY TREE

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

Pohon dan Pohon Biner

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

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

BAB II STACK Atau TUMPUKAN

A B C E F G K Contoh Tree

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

CCH1A4 / Dasar Algoritma & Pemrogramanan

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

STRUKTUR POHON (TREE) Pohon atau Tree adalah salah satu bentuk Graph terhubung yang tidak mengandung sirkuit.

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

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

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

KKKF33110 STRUKTUR DATA

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)

STRUKTUR POHON. HUTAN Definisi : hutan adalah sequence (list) dari pohon)

Penerapan Pohon Untuk Menyelesaikan Masalah Labirin

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

IT234 Algoritma dan Struktur Data. Tree

Penerapan Pohon Dalam Heap Sort

MODUL PRAKTIKUM STRUKTUR DATA

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

Pohon Biner dan Aplikasinya

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

CCH1A4 / Dasar Algoritma & Pemrogramanan

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

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

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Struktur Data Tree/Pohon dalam Bahasa Java

Syarif Abdullah (G )

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

CCH1A4 / Dasar Algoritma & Pemrogramanan

TREE. Definisi. Istilah-istilah Umum dalam Tree

Algoritma dan Struktur Data. Tree

BAB 2 LANDASAN TEORI

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

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktivitas Pembelajaran

Tipe Rekursif: POHON (TREE)

STRUKTUR POHON & KUNJUNGAN POHON BINER

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Pengantar List Linier

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

Kode Huffman. Arya Tri Prabawa Program Studi Teknik Informatika ITB, Bandung 40116,

BAB VII POHON BINAR POHON

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

ALGORITMA & PEMROGRAMAN

RENCANA PEMBELAJARAN SEMESTER (RPS)

Bagian I. Studi Kasus [82] Tanda tangan:

RENCANA PROGRAM KEGIATAN PEMBELAJARAN SEMESTER (RPKPS) STRUKTUR DATA

Transkripsi:

Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Tree (Pohon) 1 8/25/2015

Pendahuluan Dalam bab ini kita akan khusus membahas mengenai binary tree Pembahasan tentang tree beserta definisinya, sudah dibahas pada matakuliah Matematika Diskrit Binary tree adalah kasus khusus dari tree, yang banyak digunakan sebagai struktur data dalam dunia pemrograman 2 8/25/2015 IKG2A3/Pemrograman Terstruktur 2

Pohon Biner (Binary Tree) Kumpulan simpul yang mungkin kosong atau mempunyai akar dan dua subpohon yang saling terpisah (left subtree dan right subtree) Derajat maksimal = 2 Complete binary tree tingkat N : pohon biner yang semua daunnya terdapat pada tingkat N dan semua simpul yang lebih kecil dari Npasti mempunyai cabang kiri dan kanan Banyak simpul maksimum pada tingkat N = 2 N-1 Banyak simpul maksimum sampai tingkat N = 2 N -1 Skewed binary tree : pohon biner yang banyaknya simpul cabang kiri tidak seimbang dengan banyak simpul cabang kanan 3 8/25/2015

A Pohon Biner B C D E G H I J K L M N O Bukan Pohon Biner B A C B A C B A C D E F G H D E G H D C I J K L M I J K M I E N O N O I I A B C 4 8/25/2015

Representasi Logic Pohon Biner Kamus Umum Type Infotype :...{terdefinisi} Type address : ^Node Type Node : < Info : Infotype, Left : address, Right : address > Type BinTree : address 5 8/25/2015

Beberapa Primitive Pada Tree Function Akar (P:BinTree) infotype {mengirimkan infomasi yang tersimpan dalam akar dari pohon biner yang tidak kosong} KAMUS ALGORITMA info(p) 6 8/25/2015

Beberapa Primitive Pada Tree Function AnakKiri(P:BinTree) infotype {mengirimkan anak kiri dari pohon biner yang tidak kosong} KAMUS ALGORITMA Left(P) 7 8/25/2015

Beberapa Primitive Pada Tree Function AnakKanan(P:BinTree) infotype {mengirimkan anak kanan dari pohon biner yang tidak kosong} KAMUS ALGORITMA Right(P) 8 8/25/2015

Beberapa Primitive Pada Tree function Tree(A:Infotype, L: BinTree, R :BinTree) BinTree {Menghasilkan sebuah pohon Biner dari A, L dan R jika alokasi berhasil} {Menghasilkan pohon kosong jika alokasi gagal} KAMUS P :BinTree ALGORITMA Allocate(P) Info(P) A Left(P) L Right(P) R P 9 8/25/2015

Beberapa Primitive Pada Tree procedure MakeTree(input A:Infotype, L: BinTree, R :BinTree; output P :BinTree) {IS : sembarang} {FS : Menghasilkan sebuah pohon P dari A, L dan R } KAMUS ALGORITMA Info(P) A Left(P) L Right(P) R 10 8/25/2015

Beberapa Primitive Pada Tree function SimpulBaru(A:Infotype) address {Menghasilkan sebuah simpul baru yang berisi informasi A jika alokasi berhasil} KAMUS B : address ALGORITMA Allocate(B) Info(B) A Left(B) Nil Right(B) Nil B 11 8/25/2015

Beberapa Primitive Pada Tree function IsUnerLeft(P:BinTree) boolean {Prekondisi : P tidak kosong. Mengirmkan True jika P adalah pohon unerleft: hanya mempunyai SubPohon Kiri} KAMUS ALGORITMA Right(P)=Nil and Left(P) Nil 12 8/25/2015

Beberapa Primitive Pada Tree function IsUnerRight(P:BinTree) boolean {Prekondisi : P tidak kosong. Mengirmkan True jika P adalah pohon unerright: hanya mempunyai SubPohon Kanan} KAMUS ALGORITMA Leftt(P)=Nil and Right(P) Nil 13 8/25/2015

Beberapa Primitive Pada Tree function IsNotEmptyBin(P:BinTree) boolean {Mengirmkan True jika pohon biner tidak kosong, P adalah pohon biner : mempunyai SubPohon Kiri dan Kanan} KAMUS ALGORITMA Leftt(P) Nil and Right(P) Nil 14 8/25/2015

Kunjungan pada Pohon Biner (traversal) Dalam operasi traversal, akan diperoleh secara lengkap informasi yang disimpan pada suatu pohon biner. Urutan Informasi ini sangat tergantung pada letak simpul-simpul pada pohon biner tersebut. Jenis traversal pada pohon biner : Pre Order In Order Post Order 15 8/25/2015

Kunjungan pada Pohon Biner (traversal) B A C D E G H Kunjungan PreOrder : ABDIEJKCGLMNOH Kunjungan InOrder : IDBJEKALGNMOCH Kunjungan PostOrder: IDJKEBLNOMGHCA I J K L M N O 16 8/25/2015

Kamus Umum KAMUS Type Infotype :...{terdefinisi} Type address : ^Node Type Node : <Info : Infotype, Left : address, Right : address > Type BinTree : address Type addresss : ^ElmtStack ElmtStack : < InfoS : BinTree, Next : addresss > Stack : < TOP : addresss > 17 8/25/2015

Primitive yang akan digunakan Procedure Push (Input/Output S : Stack; Input E : BinTree) {Menambahkan sebuah elemen baru pada TOP, dengan elemen yang diketahui informasinya} Kamus Q: addresss Algoritma Allocate (Q) {alokasi selalu berhasil} Info(Q) E {Insert sebagai elemen pertama} Next (Q) TOP(S) TOP(S) Q 18 8/25/2015

Primitive yang akan digunakan Procedure PopStack (Input/Output S : Stack; Output E : BinTree) {I.S : stack tidak kosong} {F.S : elemen TOP disimpan pada E, alamat Top yang lama didealokasi} {Menghspus elemen stack, stack tidak boleh kosong dan mungkin seteleh penghapusan stack menjdai kosong} Kamus Q : addresss Algoritma If (S <> Nil) then Q TOP(S) E Info(S) TOP(S) Next (TOP(S)) Dealokasi (Q) 19 8/25/2015

Preorder Urutan traversal/kunjungan : cetak isi simpul kunjungi cabang kiri kunjungi cabang kanan 20 8/25/2015

Preorder Non Rekursif Procedure PreOrder(Input P : BinTree) {I.S : terdefinisi Binary Tree P, mungkin kosong} {F.S : Mencetak informasi yang disimpan dalam binary Tree P secara PreOrder, non rekursif} Kamus S : Stack Q : BinTree Algoritma If P = Nil then Output ( Tree Kosong ) Else S Nil {Inisialisasi tumpukan} Push (S,P) {push simpul akar} While (S <> Nil) Pop(S,Q) {Pop Ujung Tumpukan} While Q <> Nil Output (Info(Q)) {kunjungan ke simpul, cetak} If (Right(Q)) Nil then {ada cabang kanan, push ke stack} push(s,right(q)) Q Left(Q) 21 8/25/2015

Preorder Rekursif Procedure PreOrder_Rekursif(Input P : BinTree) {I.S : terdefinisi Binary Tree P, P mungkin kosong} {F.S : Mencetak informasi yang disimpan dalam binary Tree P secara PreOrder, rekursif} Kamus Algoritma If (P Nil) then Output (Info(P)) PreOrder_Rekursif(Left(P)) PreOrder_Rekursif(Right(P)) 22 8/25/2015

Inorder Urutan InOrder : kunjungi cabang kiri cetak simpul kunjungi cabang kanan 23 8/25/2015

Inorder Non rekursif Procedure InOrder(Input P : BinTree) {I.S : terdefinisi Binary Tree P, mungkin kosong} {F.S : Mencetak informasi yang disimpan dalam binary Tree P secara InOrder, non rekursif} Kamus S : Stack Q : BinTree Algoritma If (P = Nil) then Output ( Tree Kosong ) Else S Nil {Inisialisasi Tumpukan} Q P Repeat While (P Nil) {bergerak terlebih dulu ke cabang kiri dgn mempush akar} push(s,q) Q Left(Q) {P = Nil} {Mempop dan mencetak ujung tumpukan} Pop(S,Q) Output (Info(Q)) {Bergerak ke kanan} Q Right(Q) Until (S = Nil) 24 8/25/2015

Inorder Rekursif Procedure InOrder_Rekursif(Input P : BinTree) {I.S : terdefinisi Binary Tree P, P mungkin kosong} {F.S : Mencetak informasi yang disimpan dalam binary Tree P secara InOrder, rekursif} Kamus Algoritma If (P Nil) then InOrder_Rekursif(Left(P)) Output (Info(P)) InOrder_Rekursif(Right(P)) 25 8/25/2015

Post Order Urutan PostOrder : kunjungi cabang kiri kunjungi cabang kanan cetak simpul 26 8/25/2015

Postorder Rekursif Procedure Order_Rekursif(Input P : BinTree) {I.S : terdefinisi Binary Tree P, P mungkin kosong} {F.S : Mencetak informasi yang disimpan dalam binary Tree P secara PostOrder, rekursif} Kamus Algoritma If (P Nil) then PostOrder_Rekursif(Left(P)) InOrder_Rekursif(Right(P)) Output (Info(P)) 27 8/25/2015

Latihan Buatlah prosedur untuk traversal post order non rekursif 28 8/25/2015

Binary Search Tree (BST) Pencarian (searching) merupakan salah satu hal yang penting dalam ilmu komputer. Permaslaahannya adalah bagaimana mengimplementasikan algoritma pencarian yang efisien. Pohon pencarian biner adalah salah satu alat yang dapat menjamin hal ini. Dalam pohon pencarian biner, setiap simpul dilabelkan dengan kunci (atau data itu sendiri). Kunci adalah nilai yang membedakan setiap simpul dengan simpul lainnya, sehingga setiap kunci harus unik. 29 8/25/2015

Binary Search Tree (BST) Jika R adalah akar, dan semua kunci yang tersimpan pada setiap simpul tidak ada yang sama, maka Semua simpul pada subpohon kiri mempunyai kunci lebih kecil dari kunci(r) Semua simpul pada subpohon kanan mempunyai kunci dengan nilai lebih besar dari kunci(r) 30 8/25/2015

Contoh BST Pohon BST untuk data masukan dengan urutan sebagai berikut : 65, 34, 22, 45, 100, 120, 8 65 34 100 22 45 120 8 31 8/25/2015

Pencarian pada BST Pencarian data dilakukan melalui kunci. Misal kita akan mencari sebuah nilai, misal x. Jika kunci pada akar tidak sama dengan x, pencarian dilanjutkan pada subpohon kiri atau subpohon kanan, tergantung apakah x lebih besar atau lebih kecil dari kunci pada akar. 32 8/25/2015

Procedure Sisip_SimpulBaru(input A:infoype; input/output P:BinTree) {IS : terdefinisi Ordered BinaryTree P, P mungkin kosong } {FS : simpul baru berisi informasi A terdefinisi dan disisipkan pada Tree P} KAMUS Q,R,Baru : address ALGORITMA Baru SimpulBaru(A) If (P = nil) then {P masih kosong} P Baru Else {P tidak kosong} Q P {kedua pointer bantu menunjuk ke akar Tree P} R P {Mencari letak yang tepat untuk menyisipkan simpul baru} while (A <> Info(Q) and R <> Nil) Q R If A < Info(Q) then {Mencari ke Cabang Kiri} R Left(Q) Else R Right(Q) {Mencari ke Cabang Kanan} If (A = Info(Q)) then {Informasi A sudah ada pd Tree P} Output ( simpul sudah ada ) Else If (A < Info(P)) then Left(Q) Baru Else Right(Q) Baru 33 8/25/2015

Latihan 1. Carilah referensi tentang aturan menghapus suatu node dalam BST, dan buat prosedur untuk menghapus node 2. Buatlah sebuah BST sembarang, lihat apa yang terjadi jika dilakukan traversal preorder, inorder dan postorder pada BST yang anda buat 34 8/25/2015

Latihan 3. Buat function untuk mencari sebuah nilai x pada BST function TreeSearch (P : bintree, x : integer) address 4. Buat procedure untuk mencari nilai minimum pada BST Procedure Tree-Minimum (input P : bintree, output Pmin: address) 5. Buat procedure untuk mencari nilai maksimum pada BST Procedure TreeMinimum (input P : bintree, output Pmax: address) 35 8/25/2015

6. Buat procedure that returns the successor (nilai yang lebih besar dari info(p), tapi paling dekat dengan info(p) ) of node P in BST, and NIL if info(p) is the largest key /info in the tree. (hint : anda bisa memanfaatkan procedure/fungsi yang sudah anda buat sebelumnya) Procedure TreeSuccessor (input P : bintree, output Psucc : address) 7. Buat procedure that returns the predecessor ( nilai yang lebih kecil dari info(p), tapi paling dekat dengan info(p) ) of node P in BST, and NIL if info(p) is the smallest key /info in the tree (hint : anda bisa memanfaatkan procedure/fungsi yang sudah anda buat sebelumnya) Procedure TreePredecessor (input P : bintree, output Ppred : address) 36 8/25/2015

Referensi Liem, Inggriani., Diktat Kuliah IF2181 Struktur Data, ITB, 2003. Munir, Rinaldi., Matematika Diskrit, Edisi Kedua, Penerbit Informatika Bandung, Bandung, 2003 37 8/25/2015

38 8/25/2015 THANK YOU