IKI 20100: Struktur Data & Algoritma

dokumen-dokumen yang mirip
Struktur Data dan Algoritma

Struktur Data & Algoritma

HEAP. Heap dan Operasinya. Oleh Andri Heryandi

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Struktur Data & Algoritma

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

IKI 20100: Struktur Data & Algoritma

Penerapan Pohon Dalam Heap Sort

Struktur Data dan Algoritma

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

(Binary) Heap. Binary tree yang menyimpan pasangan prioritas (atau prioritas elemen) pada node Property Heap :

Outline. Struktur Data & Algoritme (Data Structures & Algorithms) Pengantar. Definisi. 2-3 Trees

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

ANALISIS ALGORITMA BINARY SEARCH

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

MAKALAH STRUKTUR DATA HEAP SORT. Disusun Oleh :

Heap Tree dan Kegunaannya dalam Heap Sort

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

13/12/2013. Binary Tree. Contoh Tree

Tree (Struktur Data) Nisa ul Hafidhoh, MT

ALGORITMA PENGURUTAN & PENCARIAN

STRUKTUR DATA SORTING ARRAY

Laporan makalah ini berjudul Queue (Antrian), laporan ini diharapkan dapat menjadi literatur bagi proses belajar mengajar dalam perkuliahan, terutama

IKI 20100: Struktur Data & Algoritma

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

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

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Struktur Data dan Algoritma

STRUKTUR DATA (3) sorting array. M.Cs

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

IT234 Algoritma dan Struktur Data. Tree

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Politeknik Elektronika Negeri Surabaya

Outline STRUKTUR DATA. VII. Sorting

METODE AVL TREE UNTUK PENYEIMBANGAN TINGGI BINARY TREE

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

Membuat Binary Search Tree Menggunakan STL Vector C++

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Algoritma dan Struktur Data. Linear & Binary Search Tree

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Struktur Data & Algoritme (Data Structures & Algorithms)

Struktur Data dan Algoritme. Struktur Data & Algoritme (Data Structures & Algorithms) Struktur Data dan Algoritme. Objectives.

Politeknik Elektronika Negeri Surabaya

Pohon dan Pohon Biner

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

Algoritma dan Struktur Data. Searching dan Sorting

Gambar 13.1 Ilustrasi proses algoritma sorting

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

SORTING (PENGURUTAN DATA)

Gambar 1. Single Linked List

Ujian Akhir Semester Ganjil 2013/2014

BAB 2 TINJAUAN PUSTAKA

Struktur Data Tree/Pohon dalam Bahasa Java

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

Politeknik Elektronika Negeri Surabaya

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Algoritma dan Struktur Data. Queue

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

SATUAN ACARA PENGAJARAN

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

KUM 6 IMPLEMENTASI BINARY TREE

Topic Complexity of Hashing Search & Binary Search Tree Algorithm

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

KUM 3 IMPLEMENTASI LIST

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Struktur Data dan Algoritma

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

MODUL PRAKTIKUM STRUKTUR DATA

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

Soal Pendahuluan Modul 3

SORTING (Pengurutan)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

List: Pokok Bahasan dan TIK

Algoritma dan Struktur Data

Politeknik Elektronika Negeri Surabaya

APLIKASI SIMULASI PENGURUTAN DATA MENGGUNAKAN ALGORITMA HEAP SORT

LAPORAN PRAKTIKUM RESMI QUEUE

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

Pemrograman Berorientasi. Array dan Collections

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

Politeknik Elektronika Negeri Surabaya

Pengertian Algoritma Pengurutan

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

ALGORITMA DAN STRUKTUR DATA

Transkripsi:

IKI 20100: Struktur Data & Algoritma Priority Queue & Heap Ruli Manurung & Ade Azurat ( Setiawan (acknowledgments: Denny, Suryana Fasilkom UI Ruli Manurung & Ade Azurat Fasilkom UI - IKI20100 2007/2008 Ganjil Minggu 12 1

Review Complete binary tree: sebuah tree adalah terisi penuh (complete), kecuali pada level terbawah yang terisi dari kiri ke kanan. A B C D E F G H I J A B C D E F G H I J 0 1 2 3 4 5 6 7 8 9 10 11 12 2

Priority Queue Sebuah queue dengan perbedaan aturan sebagai berikut: operasi enqueue tidak selalu menambahkan elemen pada akhir queue, namun, meletakkannya sesuai urutan prioritas. 3

Binary Heap Hanya diperbolehkan mengakses (membaca) item yang minimum. operasi dasar: menambahkan item baru dengan kompleksitas waktu worst-case yang logaritmik. menghapus item yang minimum dengan kompleksitas waktu worstcase yang logaritmik. mencari item yang minimum dengan kompleksitas waktu konstan. 4

( Aturan ) Properties Structure Property Data disimpan pada complete binary tree tree selalu balance. seluruh operasi dijamin O(log n) pada worst case data disimpan menggunakan array atau java.util.vector Ordering Property Heap Order: Parent Child P X P X 5

Mana yang Binary Heap? 1 1 1 2 2 2 2 3 2 3 3 2 1 13 3 2 21 16 6 31 19 68 2 65 26 32 6

Representasi Heap -1 0 1 43 3 3 2 65 58 40 42 4 Root pada indeks 0 anak kiri dari i pada indeks 2i + 1 anak kanan dari i pada ( 1 + 2(i indeks 2i + 2 = Parent dari i pada indeks (i - 1) / 2 0 1 43 3 3 2 65 58 40-1 42 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7

Insertion ( Up Insert 2 (Percolate -1 0 1 43 5 3 8 65 58 40 42 4 2-1 0 1 43 5 3 8 65 58 40 42 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 8

Insertion ( Up Insert 2 (Percolate -1 0 1 43 5 2 8 65 58 40 42 4 3-1 0 1 43 5 32 8 65 58 40 42 4 32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9

Insertion Insert 14 13 21 16 24 31 19 68 65 26 32 14 10

Insertion Insert 14 13 21 16 24 14 19 68 65 26 32 31 11

Insertion Insert 14 13 14 16 24 21 19 68 65 26 32 31 12

Delete Minimum Percolate Down -1 0 1 43 3 3 2 65 58 40 42 4 0 1 43 3 3 2 65 58 40-1 42 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 13

Delete Minimum 4 0 1 43 3 3 2 65 58 40 42 0 1 43 3 3 2 65 58 40 4 42 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 14

Delete Minimum: Completed 0 3 1 43 4 3 2 65 58 40 42 3 1 43 4 3 2 65 58 40 0 42 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

( 2 ) Delete Min 13 14 16 19 21 19 68 65 26 32 31 16

( 2 ) Delete Min Percolate Down 14 16 19 21 19 68 65 26 32 31 17

( 2 ) Delete Min 14 16 19 21 19 68 65 26 32 31 18

( 2 ) Delete Min 14 19 16 21 19 68 65 26 32 31 19

( 2 ) Delete Min 14 19 16 26 21 19 68 65 32 31 20

( 2 ) Delete Min 14 19 16 26 21 19 68 65 31 32 21

Latihan Simulasi operasi-operasi berikut pada Min Binary Heap: Insert 40, 20, 5, 55, 76, 31, 3 Delete Min Delete Min Insert 10, 22 Delete Min Delete Min Gambarkan isi Binary Heap, setelah operasi terakhir. 22

Heap Constructor public class VectorHeap implements PriorityQueue { protected Vector data; public VectorHeap() { data = new Vector(); } public VectorHeap(Vector v) { int i; data = new Vector(v.size()); // we know ultimate size for (i = 0; i < v.size(); i++) { // add elements to heap add((comparable) v.elementat(i)); } } 23

Heap s Methods protected static int parentof(int i) { return (i - 1) / 2; } protected static int leftchildof(int i) { return 2 * i + 1; } protected static int rightchildof(int i) { return 2 * (i + 1); } public Comparable peek() { // findmin return (Comparable) data.elementat(0); } 24

Removal & Insertion public Comparable remove() { } Comparable minval = peek(); data.setelementat ( data.elementat (data.size() - 1), 0); data.setsize (data.size() - 1); if (data.size() > 1) pushdownroot(0); return minval; public void add(comparable value) { data.addelement (value); percolateup (data.size() - 1); } 25

Percolate Down protected void pushdownroot (int root) { int heapsize = data.size(); Comparable value = (Comparable) data.elementat (root); while (root < heapsize) { int childpos = leftchildof(root); if (childpos < heapsize) { // choose the bigger child if ((rightchildof(root) < heapsize) && (((Comparable) (data.elementat( childpos+1))).compareto ((Comparable) (data.elementat( childpos))) < 0)) { childpos++; } 26

Percolate Down } } if (((Comparable)(data.elementAt( childpos))).compareto (value) < 0) { data.setelementat ( data.elementat(childpos), root); root = childpos; // keep moving down } else { // found right location data.setelementat(value, root); return; } } else { // at a leaf! insert and halt data.setelementat (value, root); return; } 27

Percolate Up protected void percolateup (int leaf) { int parent = parentof(leaf); Comparable value = (Comparable)(data.elementAt(leaf)); while (leaf > 0 && (value.compareto ((Comparable)(data.elementAt(parent))) < (( 0 { data.setelementat (data.elementat (parent), leaf); leaf = parent; parent = parentof(leaf); } data.setelementat(value,leaf); } 28

Heap s Methods public boolean isempty() { return data.size() == 0; } public int size() { return data.size(); } public void clear() { data.clear(); } public String tostring() { return "<VectorHeap: " + data + ">"; } 29

Fix Heap / Heapify Operasi fixheap menerima complete tree yang tidak memenuhi heap order dan memperbaikinya. ( n penambahan sebanyak N dapat dilakukan dengan O(n log Operasi fix heap dapat dilakukan dengan O(n)! 92 47 21 20 12 45 63 61 17 55 37 25 64 83 73 30

Fix Heap / Heapify Percolate down 6 92 47 21 20 12 45 63 61 17 55 37 25 64 83 73 31

Fix Heap / Heapify Percolate down 5 92 47 21 20 12 45 25 63 61 17 55 37 25 45 64 83 73 32

Fix Heap / Heapify Percolate down 4 92 47 21 20 12 25 63 61 17 55 37 45 64 83 73 33

Fix Heap / Heapify Percolate down 3 92 47 21 20 17 12 25 63 61 17 20 55 37 45 64 83 73 34

Fix Heap / Heapify Percolate down 2 92 47 21 17 12 25 63 61 20 55 37 45 64 83 73 35

Fix Heap / Heapify Percolate down 1 92 47 12 21 17 12 37 25 63 61 20 55 37 47 45 64 83 73 36

Fix Heap / Heapify Percolate down 0 92 12 12 17 21 17 20 37 25 63 61 20 92 55 47 45 64 83 73 37

Max Heap 97 53 59 26 41 58 31 16 21 36 97 53 59 26 41 58 31 16 21 36 0 1 2 3 4 5 6 7 8 9 10 11 12 13 38

Heap setelah deletemax pertama 59 53 58 26 41 36 31 16 21 97 59 53 58 26 41 36 31 16 21 97 0 1 2 3 4 5 6 7 8 9 10 11 12 13 39

Heap setelah deletemax kedua 58 53 36 26 41 21 31 16 59 97 58 53 36 26 41 21 31 16 59 97 0 1 2 3 4 5 6 7 8 9 10 11 12 13 40

Heap Sort 1. Buat sebuah heap tree 2. ambil elemen pada posisi root dari heap setiap pengambilan elemen, dan lakukan heapify. 41

Rangkuman Priority queue dapat diimplementasi kan menggunakan binary heap Aturan-aturan pada binary heap structure property complete binary tree ordering property Heap order: Parent Child Operasi pada binary heap insertion: kompleksitas waktu O(log n) pada worst case find min: kompleksitas waktu O(1) delete min: kompleksitas waktu O(log n) pada worst case Binary heap dapat digunakan untuk sorting 42