Você está na página 1de 48

STRUKTUR POHON (2)

Sesi 9

Implementasi Program
Pohon dapat dibuat dengan menggunakan linked list secara rekursif. Linked list yang digunakan adalah double linked list non circular Data yang pertama kali masuk akan menjadi node root. Data yang lebih kecil dari data node root akan masuk dan menempati node kiri dari node root, sedangkan jika lebih besar dari data node root, akan masuk dan menempati node di sebelah kanan node root.

Operasi-operasi Tree
Insert: menambah node ke dalam pohon secara rekursif. Jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama akan menjadi elemen root. Find: mencari node di dalam pohon secara rekursif sampai node tersebut ditemukan dengan menggunakan variable bantuan ketemu. Syaratnya adalah pohon tidak boleh kosong. Traverse: yaitu operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali. Count: menghitung jumlah node dalam pohon Height : mengetahui kedalaman sebuah pohon Find Min dan Find Max : mencari nilai terkecil dan terbesar pada Tree Child : mengetahui anak dari sebuah node (jika punya)

Ilustrasi Insert

Ilustrasi Insert
4. insert(left,3)

Ekspresi Aritmatika Menggunakan Pohon Biner


+ * * / A B C D E inorder traversal A/B*C*D+E Ekspresi infix preorder traversal +**/ABCDE Ekspresi prefix postorder traversal AB/C*D*E+ Ekspresi postfix level order traversal +*E*D/CAB
6

Antrian Berprioritas (Priority Queues)


Antrian berprioritas adalah kumpulan dari kosong atau banyak elemen setiap elemen mempunyai prioritas atau nilai Berbeda dengan bentuk antrian yang FIFO, urutan penghapusan dari antrian berprioritas ditentukan berdasar prioritas elemen Elemen dihapus/dikeluarkan dengan menambah atau mengurangi urutan prioritas daripada urutan masuk elemen dalam antrian
7

Implementasi Antrian Berprioritas


Dapat diimplementasikan menggunakan heap dan leftist trees Heap adalah complete binary tree yang disimpan dengan efisien menggunakan bentuk array Leftist tree adalah struktur data linked yang disesuaikan untuk penggunaan antrian berprioritas
8

Max (Min) Tree


max tree (min tree) adalah pohon yang jumlah setiap node-nya lebih besar (kecil) atau sama dengan jumlah anak (children), jika mempunyai anak Node dari max atau min tree dapat mempunyai lebih dari 2 anak (bisa berupa bukan bentuk pohon biner)

Contoh Max Tree

10

Contoh Min Tree

11

Definisi Heap
Max heap (min heap) adalah max (min) tree yang juga sebuah complete binary tree

12

Max Heap dengan 9 Node

13

Min Heap dengan 9 Node

14

Representasi Array dari Heap


Heap dapat direpresentasikan secara efisien dengan array.

15

Penyisipan dalam Max Heap

Elemen baru adalah 5 Selesai?


16

Penyisipan dalam Max Heap


9

20

Elemen baru 20 Selesai?


17

Penyisipan dalam Max Heap


9

20

Tukar posisi dengan 7 Selesai?


18

Penyisipan dalam Max Heap


9

20

Tukar posisi dengan 8 Selesai?


19

Penyisipan dalam Max Heap


20

Tukar posisi dengan 9 Selesai?


20

Penghapusan dari Max Heap


20

15

Elemen max pada root Apa yang terjadi jika elemen dihapus?
21

Penghapusan dari Max Heap

15

Setelah elemen max dihapus. Selesai?


22

Penghapusan dari Max Heap

15

Heap dengan 10 node. Sisipkan kembali 8 ke dalam heap.


23

Penghapusan dari Max Heap


8

15

Sisipkan kembali 8 kedalam heap. Selesai?


24

Penghapusan dari Max Heap


15

Tukar posisi dengan 15 Selesai?


25

Penghapusan dari Max Heap


15

Tukar posisi dengan 9 Selesai?


26

Inisialisasi Max Heap


Inisialisasi heap berarti membentuk heap dengan mengatur bentuk bentuk pohon jika diperlukan Contoh: input array = [-,1,2,3,4,5,6,7,8,9,10,11]

27

Inisialisasi Max Heap


Mulai dari posisi array sebelah kanan yang mempunyai anak. Index adalah floor(n/2).

28

Inisialisasi Max Heap

29

Inisialisasi Max Heap

30

Inisialisasi Max Heap

31

Inisialisasi Max Heap

32

Inisialisasi Max Heap

Selesai
33

Aplikasi Heap Sort (heap sort) Machine scheduling Huffman codes

34

Pengurutan Heap (Heap Sort)


Menggunakan kunci elemen sebagai prioritas Algoritma Letakkan elemen yang akan diurutkan dalam antrian berprioritas (contoh inisiliasi heap) Ekstrak (hapus) elemen dari antrian berprioritas
Jika antrian min priority queue yang digunakan, elemen diekstrak dengan urutan prioritas naik Jika max priority queue yang digunakan, elemen diekstrak dengan urutan prioritas menurun
35

Contoh Pengurutan Heap


Setelah diletakkan dalam max priority queue

36

Contoh Pengurutan Heap


Setelah operasi pertama menghapus max

37

Contoh Pengurutan Heap


Setelah operasi kedua menghapus max

38

Contoh Pengurutan Heap


Setelah operasi ketiga menghapus max

39

Contoh Pengurutan Heap


Setelah operasi keempat menghapus max

40

Contoh Pengurutan Heap


Setelah operasi kelima menghapus max

41

Permasalahan Penjadwalan Mesin


m mesin identik n tugas yang harus dikerjakan Permasalahan penjadwalan mesin adalah penugasan pekerjaan kepada mesin sehingga memerlukan waktu seminimum mungkin untuk menyelesaikan tugas terakhir

42

Contoh Penjadwalan Mesin


3 mesin dan 7 tugas Waktu tugasnya adalah [6,2,3,5,10,7,14] Bagaimana bentuk penjadwalan yang memungkinkan? Penjadwalan yang mungkin:

Algoritma apa yang digunakan untuk bentuk penjadwalan di atas?


43

Contoh Penjadwalan Mesin

Berapa waktu untuk menyelesaikan (panjang) jadwal? 21

44

Penjadwalan LPT & Contoh


Longest Processing Time (LPT) Tugas dijadwalkan dengan urutan turun 14, 10, 7, 6, 5, 3, 2 Setiap tugas dijadwalkan pada esin yang selesai paling cepat

Waktu penyelesaian adalah 16


45

LPT Menggunakan Min Heap


Min Heap mempunyai waktu penyelesaian untuk m mesin. Inisial waktu penyelesaian adalah 0. Untuk menjadwalkan pekerjaan, hapus mesi dengan waktu penyelesaian minimum dari heap. Update waktu penyelesaian untuk mesin yang dipilih dan masukkan kembali mesin dalam min heap.

46

Huffman Codes
Untuk kompresi teks, metode LZW (Lempel-Ziv-Welch) berdasar pada pengulangan substring dalam teks Huffman codes adalah metode kompresi yang berdasarkan pada frekuensi relatif (contoh jumlah kemunculan simbol dengan simbol yang berbeda dalam teks) Huffman code adalah salah satu teknik dalam kompresi data yang menggunakan struktur data pohon biner. Hal ini dilakukan dengan tujuan mengurangi penggunaan diskspace dan lalu lintas jaringan.

47

Referensi
adeab.staff.ipb.ac.id/files/2011/12/struktur-datapohon.ppt http://dpnm.postech.ac.kr/cs233/lecture/lecture9. ppt

48

Você também pode gostar