Tipe Rekursif: POHON (TREE)

dokumen-dokumen yang mirip
Pohon Biner (Bagian 1)

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

D I K T A T L I S P Oleh : Sri Purwanti

Overview Analisis Rekurens

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

Pemrograman Algoritma Dan Struktur Data

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

Pertemuan 9 STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB VII POHON BINAR POHON

Type Rekursif : List LIST OF LIST

STRUKTUR POHON & KUNJUNGAN POHON BINER

BAB IV POHON. Diktat Algoritma dan Struktur Data 2

6. TREE / BINARY TREE

Pohon dan Pohon Biner

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

Implementasi Skema Pohon Biner yang Persistent dalam Pemrograman Fungsional

Penerapan Pohon Untuk Memanipulasi dan Meritrieve Data

Pohon (Tree) Universitas Gunadarma Sistem Informasi 2012/2013

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

ALGORITMA DAN STRUKTUR DATA

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

TREE STRUCTURE (Struktur Pohon)

Penerapan Pohon Untuk Menyelesaikan Masalah Labirin

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

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

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

TERAPAN POHON BINER 1

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

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

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

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

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

Ringkasan mengenai Tree (Dari beberapa referensi lain) Nina Valentika

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

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

Pertemuan 9 STRUKTUR POHON (TREE) Sifat utama Pohon Berakar ISTILAH-ISTILAH DASAR

KUM 6 IMPLEMENTASI BINARY TREE

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

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

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

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

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

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

Buku Ajar Struktur Data

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

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

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

BAB 7 POHON BINAR R S U

Tree (Struktur Data) Nisa ul Hafidhoh, MT

Struktur dan Organisasi Data 2 POHON BINAR

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

IT234 Algoritma dan Struktur Data. Tree

Pertemuan 15 REVIEW & QUIS

Data Structure TREE & BINARY TREE. Chapter 5b. Dahlia Widhyaestoeti, S.Kom

Type. Type adalah himpunan nilai dan sekumpulan operator yang terdefinisi terhadap type tersebut

Pohon (Tree) Contoh :

Algoritma Pemrograman

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

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

BAB 7 POHON BINAR. Contoh : Pohon berakar T R S U

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

INFIX, POSTFIX, dan PREFIX Bambang Wahyudi

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

KUNJUNGAN PADA POHON BINER

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

P o h o n. Definisi. Oleh: Panca Mudji Rahardjo. Pohon. Adalah graf tak berarah terhubung yang tidak mengandung sirkuit.

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

13/12/2013. Binary Tree. Contoh Tree

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Struktur Data Tree/Pohon dalam Bahasa Java

LIST LINIER 1. DEFINISI

Pertemuan Ke-4 Urutan (sequence) Rahmady Liyantanto. liyantanto.wordpress.com. S1 Teknik Informatika-Unijoyo

Algoritma Pemrograman

BAB IX TREE (POHON) ISTILAH DASAR

Bahasa Pemrograman :: Pemrograman List

TREE. Definisi. Istilah-istilah Umum dalam Tree

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

BAB III ANALISIS. Mekanisme Penyimpanan dan Pengambilan Sequence

Soal Pendahuluan Modul 3

BAB 2 LANDASAN TEORI

Penggunaan Pohon Biner Sebagai Struktur Data untuk Pencarian

BAB II STACK Atau TUMPUKAN

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

POHON CARI BINER (Binary Search Tree)

Algoritma Pemrograman

TESTING PROGRAM. Pertemuan Nurul Adhayanti

Politeknik Elektronika Negeri Surabaya

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Mata Kuliah : Struktur Data Semester : Genap Kode Mata Kuliah : 307 Waktu : 180 Menit Bobot : 4 sks. Jurusan : MI

MODUL PRAKTIKUM STRUKTUR DATA

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

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II

Variasi Pohon Pencarian Biner Seimbang

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Transkripsi:

Tipe Rekursif: POHON (TREE) Tim Pengajar IF2030 2009/9/8 IF2030/Sem. 1 2009-2010 1

Tujuan Mahasiswa memahami definisi pohon dan pohon biner Berdasarkan pemahaman tersebut, mampu membuat fungsi sederhana yang memanipulasi pohon Mahasiswa mampu mengimplementasi fungsi pemroses pohon dalam LISP melalui praktikum 2009/9/8 IF2030/Sem. 1 2009-2010 2

Contoh Persoalan Direpresentasi Menu dalam Aplikasi Komputer Contoh (Ms Word): File Open Close Save Table Draw Insert Table Column Row Delete Sbg Pohon Menu Ms Word 2009/9/8 IF2030/Sem. 1 2009-2010 3 File Table Open Close Save Draw Insert Delete Table Column Row

Akar Akar Pohon SubPohon Pohon Elemen Pohon: -Akar basis -Sub Pohon (sub himpunan yang berupa pohon) rekurens SubPohon (dg representasi pohon) 2009/9/8 IF2030/Sem. 1 2009-2010 4

Beberapa Ilustrasi Representasi a b d e f g h c d e b f a g c h i Graph i Himpunan a Bentuk Linier Indentasi b d e f c gh Prefix: (a (b (d (), e (), f ()), c ( g (), h ( i ())))) (a (b (d) (e) (f)) (c (g) (h (i)))) Postfix: (((d,e,f) b, (g, (i) h) c) a) i 2009/9/8 IF2030/Sem. 1 2009-2010 5

Cabang akar a memiliki cabang 2 sub pohon yaitu (b (d e f)) dan (c (g h(i))) Istilah a a b c b c d e f g h i d e f g h i Pohon (tree) Simpul (node, elemen) Hutan (forest) 2009/9/8 IF2030/Sem. 1 2009-2010 6

Akar a adalah ayah, sub pohon (b (d e)) dan sub pohon (c (g h(i))) adalah anak. Sub pohon (b (d e)) adalah saudara dari sub pohon (c (g h(i))) b Istilah a c Ayah (father) Anak (child) Saudara (sibling) d e g h Akar b adalah ayah, sub pohon (d) dan sub pohon (e) adalah anak. Sub pohon (d) adalah saudara dari sub pohon (e) 2009/9/8 IF2030/Sem. 1 2009-2010 7 i

Tingkat (level) : panjang jalan dari akar sampai simpul tertentu. Cth: tingkat (e) = 3, tingkat (i) = 4, Istilah a Kedalaman (depth) : tingkat terpanjang. Cth: kedalaman pohon=4 b c Jalan (path) : urutan tertentu dari cabang, cth: a-c-h-i Lebar (breadth) : maksimum jml simpul pd suatu tingkat. d e g h Daun (leaf) : simpul terminal 2009/9/8 IF2030/Sem. 1 2009-2010 8 i Derajat : banyaknya anak sebuah simpul. Cth, derajat(c)=2, derajat(h)=1, derajat(g)=0

Pohon Biner Definisi 1. Mungkin kosong 2. Ada simpul akar dan dua anak yang berupa pohon biner, satu sub pohon kiri dan satu sub pohon kanan. Anak mungkin kosong (kembali ke definisi 1). Penulisan sub pohon: dgn ( ) + 3 * 3+(4*5) 4 5 (+ (3 ( ) ( )) (* (4 ( )( )) (5 ( )( )))) atau (+ (3) (* (4)(5))) Pohon condong/skewed tree 2009/9/8 IF2030/Sem. 1 2009-2010 9 c b a Pohon biner condong kiri Notasi Prefix: (a (b (c ( ) ( )) ( )) ( )) atau (a (b (c)( )) ( )) a Pohon biner condong kanan Notasi Prefix: (a ( ) (b ( )(c ( ) ( )))) atau (a ( ) (b ( )(c))) b c

TYPE POHON BINER DEFINISI DAN SPESIFIKASI TYPE type Elemen: {tergantung type node} type PohonBiner:<L: PohonBiner, A: Elemen, R: PohonBiner> {infix}, atau type PohonBiner:<A: Elemen, L: PohonBiner, R: PohonBiner> {prefix}, atau type PohonBiner:<L: PohonBiner, R: PohonBiner, A: Elemen> {postfix} {Pohon Biner terdiri dari Akar yang berupa elemen, L dan R adalah Pohon Biner yang merupakan subpohon kiri dan subpohon kanan} DEFINISI DAN SPESIFIKASI KONSTRUKTOR {Perhatikanlah bhw konstruktor pohon biner dg basis pohon kosong ditulis: a. Infix: //L A R\\ b. Prefix: //A L R\\ c. Postfix: //L R A\\} 2009/9/8 IF2030/Sem. 1 2009-2010 10

Selektor Akar: pohon biner tidak kosong elemen {Akar(P) adalah akar dari P. Jika P adalah //L A R\\ maka akar(p) = A} Left: pohon biner tidak kosong pohon biner {Left(P) adalah sub pohon kiri dari P. Jika P adalah //L A R\\ maka left(p) = L} Right: pohon biner tidak kosong pohon biner {Right(P) adalah sub pohon kanan dari P. Jika P adalah //L A R\\ maka Right(P) = R} 2009/9/8 IF2030/Sem. 1 2009-2010 11

Predikat IsTreeEmpty: pohon biner boolean {IsTreeEmpty(P) true jika P adalah // \\} IsOneElmt: pohon biner boolean {IsOneElmt(P) true jika P adalah //A\\} IsUnerLeft: pohon biner boolean {IsUnerLeft(P) true jika P hanya mengandung sub pohon kiri, P adalah //L A\\} IsUnerRight: pohon biner boolean {IsUnerRight(P) true jika P hanya mengandung sub pohon kanan, P adalah //A R\\} 2009/9/8 IF2030/Sem. 1 2009-2010 12

Predikat IsBiner: pohon biner tidak kosong boolean {IsBiner(P) true jika P mengandung sub pohon kiri dan sub pohon kanan, P adalah // L A R \\} IsExistLeft: pohon biner tidak kosong boolean {IsExistLeft(P) true jika P mengandung sub pohon kiri} IsExistRight: pohon biner tidak kosong boolean {IsExistRight(P) true jika P mengandung sub pohon kanan} 2009/9/8 IF2030/Sem. 1 2009-2010 13

Pohon Basis-0 Definisi rekursif Basis: pohon biner kosong adalah pohon biner {menggunakan predikat IsTreeEmpty} Rekurens: Pohon biner tidak kosong terdiri dari sebuah simpul akar dan dua anak: sub pohon kiri dan sub pohon kanan. Sub pohon kiri dan sub pohon kanan adalah pohon biner 2009/9/8 IF2030/Sem. 1 2009-2010 14

Pohon Basis-1 Definisi rekursif Basis: pohon biner yang hanya terdiri dari akar {menggunakan predikat IsOneElmt} Rekurens: Pohon biner tidak kosong terdiri dari sebuah simpul akar dan dua anak yang salah satunya pasti tidak kosong: sub pohon kiri dan sub pohon kanan. Gunakan IsUnerLeft, IsUnerRight, IsBiner untuk memastikan tidak terjadi pemrosesan pada pohon kosong 2009/9/8 IF2030/Sem. 1 2009-2010 15

Menghitung Jumlah Elemen NbElmt: PohonBiner integer >= 0 {NbElmt(P) memberikan banyaknya elemen dari pohon P} Berapa jumlah elemen pohon dilihat dari elemen current? akar left right Jumlah elemen = 1 (utk akar) + Jumlah_Elemen (pohon kiri) + Jumlah _Elemen (pohon kanan) 2009/9/8 IF2030/Sem. 1 2009-2010 16

Menghitung Jumlah Elemen, NbElmt, hal 109 Rekursif Basis 0: jika pohon kosong maka jumlah elemen adalah 0 Rekurens: jumlah elemen = 1 (current element) + jumlah elemen pohon kiri + jumlah elemen pohon kanan NbElmt (P): if IsTreeEmpty(P) then 0 {basis 0} else {rekurens} NbElmt(Left(P)) + 1 + NbElmt(Right(P)) 2009/9/8 IF2030/Sem. 1 2009-2010 17

Menghitung Jumlah Elemen, NbElmt, hal 111 Basis 0 NbElmt (P): if IsTreeEmpty(P) then 0 {basis 0} else {rekurens} NbElmt(Left(P)) + 1 + NbElmt(Right(P)) Basis 1 NbElmt (P): if IsOneElmt(P) then 1 {basis 1} else {rekurens} depend on P IsBiner(P): NbElmt(Left(P)) + 1 + NbElmt(Right(P)) IsUnerLeft(P): NbElmt(Left(P)) + 1 IsUnerRight(P): 1 + NbElmt(Right(P)) 2009/9/8 IF2030/Sem. 1 2009-2010 18

Menghitung Jumlah Daun NbDaun: PohonBiner integer >= 0 {NbDaun(P) memberikan banyaknya daun dari pohon P} Berapa jumlah daun pohon dilihat dari elemen current? akar left right daun Jumlah daun = 0 (utk akar) + Jumlah daun (pohon kiri) + Jumlah daun (pohon kanan) 2009/9/8 IF2030/Sem. 1 2009-2010 19

Menghitung Jumlah Daun, NbDaun, Analisis Kasus hal 109 Pohon kosong : jumlah daun = 0 Pohon tidak kosong: jumlah daun dihitung dengan fungsi menghitung jumlah daun dengan basis-1 NbDaun (P): if IsTreeEmpty(P) then 0 { analisis kasus } else NbDaun1(P) 2009/9/8 IF2030/Sem. 1 2009-2010 20

Menghitung Jumlah Daun, NbDaun, hal 112 Rekursif: Basis 1 NbDaun1 (P): if IsOneElmt(P) then 1 {basis 1} else {rekurens} depend on P IsBiner(P): NbDaun1(Left(P)) + NbDaun1(Right(P)) IsUnerLeft(P): NbDaun1(Left(P)) IsUnerRight(P): NbDaun1(Right(P)) 2009/9/8 IF2030/Sem. 1 2009-2010 21

Latihan Buatlah realisasi dengan spesifikasi sebagai berikut: 1. IsMember: PohonBiner, elemen boolean { IsMember(P,X) true jika ada elemen di P yang bernilai X } 2. IsSkewLeft: PohonBiner boolean { IsSkewLeft(P) true jika P adalah pohon condong kiri. Pohon kosong dianggap sebagai pohon yang condong kiri. Pohon satu elemen dianggap sebagai pohon condong kiri. } 3. LevelOfX: PohonBiner tdk kosong, elemen integer { LevelOfX(P,X) mengirimkan level simpul X yang merupakan elemen dari P. Prekondisi: X pasti ada di P. P adalah pohon yang tidak kosong dan elemen-elemen P unik.} 2009/9/8 IF2030/Sem. 1 2009-2010 22

Solusi Latihan 1 IsMember(P,X) Definisi dan Spesifikasi IsMember: PohonBiner, elemen boolean { IsMember(P,X) true jika ada elemen di P yang bernilai X } Realisasi IsMember(P,X): if IsTreeEmpty(P) then false {Basis-0} else {Rekurens} if (Akar(P) = X) then true else IsMember(Left(P),X) or IsMember(Right(P),X) 2009/9/8 IF2030/Sem. 1 2009-2010 23

Solusi Latihan 2 IsSkewLeft(P) Definisi dan Spesifikasi IsSkewLeft: PohonBiner boolean { IsSkewLeft(P) true jika P adalah pohon condong kiri. Pohon kosong dianggap sebagai pohon yang condong kiri. Pohon satu elemen dianggap sebagai pohon condong kiri. } IsSkewLeft1: PohonBiner tidak kosong boolean { IsSkewLeft1(P) true jika P adalah pohon condong kiri. } Realisasi IsSkewLeft(P) : if IsTreeEmpty(P) then true { Analisis Kasus } else IsSkewLeft1(P) IsSkewLeft1(P) : if IsOneElmt(P) then true { Basis-1 } else { Rekurens } if IsUnerLeft(P) then IsSkewLeft1(Left(P)) else false 2009/9/8 IF2030/Sem. 1 2009-2010 24

Solusi Latihan 3 LevelOfX (P,X) Definisi dan Spesifikasi LevelOfX: PohonBiner, elemen integer { LevelOfX(P,X) mengirimkan level simpul X yang merupakan elemen dari P. Prekondisi: X pasti ada di P. P adalah pohon yang tidak kosong dan elemen-elemen P unik.} IsMember: PohonBiner tidak kosong, elemen boolean { IsMember(P,X) true jika ada elemen di P yang bernilai X. } Realisasi LevelOfX(P,X): if Akar(P) = X then 1 {Basis-1} else { Rekurens } if IsMember(Left(P),X) then 1+LevelOfX(Left(P),X) else { pasti IsMember(Right(P),X) = true } 1+LevelOfX(Right(P),X) 2009/9/8 IF2030/Sem. 1 2009-2010 25

MakeListPreOrder Definisi dan Spesifikasi MakeListPreOrder : PohonBiner list of node { MakeListPreOrder(P) : Jika P adalah pohon kosong, maka menghasilkan list kosong. Jika P bukan pohon kosong: menghasilkan list yang elemennya adalah semua node pohon P dengan urutan preorder. } Realisasi { primitif-primitif list of node mengacu pada ADT list of integer} MakeListPreOrder(P): if (IsTreeEmpty(P)) then [ ] {basis-0} else {rekurens} Konso (Akar(P), Konkat (MakeListPreOrder(Left(P), MakeListPreOrder(Right(P)))) 2009/9/8 IF2030/Sem. 1 2009-2010 26

Translasi LISP 2009/9/8 IF2030/Sem. 1 2009-2010 27

Contoh Representasi Pohon Biner di LISP Menggunakan List Contoh representasi prefix (1 (2 () ()) (3 (4 () ()) (5 () ()))) 1 2 3 4 5 2009/9/8 IF2030/Sem. 1 2009-2010 28

(defun Akar (PB) (car PB)) (defun Left (PB) (car (cdr PB))) Selektor (defun Right (PB) (car (cdr (cdr PB)))) 2009/9/8 IF2030/Sem. 1 2009-2010 29

Predikat (defun IsTreeEmpty (P) (null P)) (defun IsOneElmt (P) (and (not (IsTreeEmpty P)) (IsTreeEmpty (Left P)) (IsTreeEmpty (Right P)))) 2009/9/8 IF2030/Sem. 1 2009-2010 30

Predikat (defun IsUnerLeft (P) (and (IsTreeEmpty (Right P)) (not (IsTreeEmpty (Left P))))) (defun IsUnerRight (P) (and (IsTreeEmpty (Left P)) (not (IsTreeEmpty (Right P))))) (defun IsBiner (P) (and (not (IsTreeEmpty (Right P))) (not (IsTreeEmpty (Left P))))) 2009/9/8 IF2030/Sem. 1 2009-2010 31

Fungsi Lain (defun NbElmt (P) (if (IsTreeEmpty P) 0 ; basis-0 (+ (NbElmt (Left P)) ; rekurens 1 (NbElmt (Right P))))) 2009/9/8 IF2030/Sem. 1 2009-2010 32

Tugas di Rumah Materi pra-praktikum: ADT pohon biner Butuh ADT list of node adaptasikan dari ADT list of integer 2009/9/8 IF2030/Sem. 1 2009-2010 33

Kuis-1 Kuis 1 akan dilaksanakan pada hari Kamis, 10 Sept 2009 pada jam kuliah (14.00-selesai) Tempat: di kelas masing-masing Materi: seluruh materi mulai dari minggu 1 s.d. minggu 4 (dalam notasi fungsional) 2009/9/8 IF2030/Sem. 1 2009-2010 34

Praktikum Ke-4 Praktikum ke-4 akan dilaksanakan pada: Senin, 28 Sept 2009 Selasa, 29 Sept 2009 Materi: pohon biner Untuk melihat pembagian shift terbaru, lihat pengumuman di: Mailing list Situs kuliah online 2009/9/8 IF2030/Sem. 1 2009-2010 35