Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Similar documents
Heapsort. Heap data structure

The Heap Data Structure

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

Heapsort. Algorithms.

Heaps and Priority Queues

Introduction to Algorithms 3 rd edition

Algorithms, Spring 2014, CSE, OSU Lecture 2: Sorting

Comparisons. Θ(n 2 ) Θ(n) Sorting Revisited. So far we talked about two algorithms to sort an array of numbers. What is the advantage of merge sort?

Sortiranje pomoću u hrpe (heapsort( heapsort)

Comparisons. Heaps. Heaps. Heaps. Sorting Revisited. Heaps. So far we talked about two algorithms to sort an array of numbers

Lecture 5: Sorting Part A

Basic Data Structures and Heaps

Chapter 6 Heap and Its Application

VRIJEDNOSTI ATRIBUTA

Partha Sarathi Manal

Lecture 3. Recurrences / Heapsort

CS 241 Analysis of Algorithms

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Heaps, Heapsort, Priority Queues

Data Structure and Algorithm, Spring 2017 Final Examination

NAPREDNE STRUKTURE PODATAKA

Topic: Heaps and priority queues

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

403: Algorithms and Data Structures. Heaps. Fall 2016 UAlbany Computer Science. Some slides borrowed by David Luebke

Sorting Shabsi Walfish NYU - Fundamental Algorithms Summer 2006

Binarno stablo traženja

Tirgul 4. Order statistics. Minimum & Maximum. Order Statistics. Heaps. minimum/maximum Selection. Overview Heapify Build-Heap

Partha Sarathi Mandal

A data structure and associated algorithms, NOT GARBAGE COLLECTION

Algorithms and Data Structures

Next. 1. Covered basics of a simple design technique (Divideand-conquer) 2. Next, more sorting algorithms.

(Ureñeno. eñeno) ) stablo. r je njihov roditelj. Lista: linearno ureñivanje podataka Stablo: hijerarhijsko ureñivanje podataka (podreñeni

Data structures. Organize your data to support various queries using little time and/or space

1. Covered basics of a simple design technique (Divideand-conquer) 2. Next, more sorting algorithms.

Lecture: Analysis of Algorithms (CS )

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

HEAP. Michael Tsai 2017/4/25

CSCE 750, Fall 2002 Notes 2 Page Bubble Sort // sort the array `a[*]' of length `count' // perform only the first `howmany' sort steps // keep t

CSE 3101: Introduction to the Design and Analysis of Algorithms. Office hours: Wed 4-6 pm (CSEB 3043), or by appointment.

Binary search trees. Support many dynamic-set operations, e.g. Search. Minimum. Maximum. Insert. Delete ...

Binary Trees. Recursive definition. Is this a binary tree?

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Binary search trees :

Heaps. (our first advanced data structure)

overview use of max-heaps maxheapify: recall pseudo code heaps heapsort data structures and algorithms lecture 4 heap sort: more

data structures and algorithms lecture 4

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

Nizovi. Programiranje 1

Design and Analysis of Algorithms

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Properties of a heap (represented by an array A)

BM267 - Introduction to Data Structures

Izrada VI laboratorijske vježbe

VHDLPrimeri Poglavlje5.doc

Binary Search Trees. 1. Inorder tree walk visit the left subtree, the root, and right subtree.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Algorithms Lab 3. (a) What is the minimum number of elements in the heap, as a function of h?

CSE5311 Design and Analysis of Algorithms. Administrivia Introduction Review of Basics IMPORTANT

<A rel="stylesheet" B="mystylesheet.css" C="text/css" />

quiz heapsort intuition overview Is an algorithm with a worst-case time complexity in O(n) data structures and algorithms lecture 3

Data Structures and Algorithms Week 4

JavaScript i HTML DOM

Data Structures. Dynamic Sets

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.

2. Linijska algoritamska struktura

Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Vjež ba 3-3: Ražvoj ASP.NET MVC 4 Pogleda s Ražor sintaksom

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

APSTRAKCIJE U PROGRAMIRANjU

COSC Advanced Data Structures and Algorithm Analysis Lab 3: Heapsort

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Algoritmi i strukture podataka

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

Unit 1 Basics of Algorithms and Mathematics. Computer Engineering

Data Structures and Algorithms Chapter 4

Uvod u relacione baze podataka

Tutorial 6-7. Dynamic Programming and Greedy

OPTIMIZACIJA UPITA U MICROSOFT SQL SERVER BAZI POMOĆU INDEKSA MICROSOFT SQL SERVER QUERY OPTIMIZATIONS USING INDEXES

Jezik Baze Podataka SQL. Jennifer Widom

CS 303 Design and Analysis of Algorithms

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

PARALELNO PROGRAMIRANJE

Design and Analysis of Algorithms Lecture- 9: Binary Search Trees

Outline. Computer Science 331. Heap Shape. Binary Heaps. Heap Sort. Insertion Deletion. Mike Jacobson. HeapSort Priority Queues.

Računarske osnove Interneta (SI3ROI, IR4ROI)

Data Structures and Algorithms. Roberto Sebastiani

Lecture 5: Scheduling and Binary Search Trees

Theory & Algorithms 15/01/04. Red-Black Trees. Nicolas Wack, Sylvain Le Groux

External Sorting Methods

/463 Algorithms - Fall 2013 Solution to Assignment 3

Algoritmi za sortiranje u programskom jeziku C++

QuickSort and Others. Data Structures and Algorithms Andrei Bulatov

Advanced algorithms. binary heap, d-ary heap, binomial heap, amortized analysis, Fibonacci heap. Jiří Vyskočil, Radek Mařík 2013

Transcription:

Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost nego čvorovi u njegovim podstablima. 16 14 10 8 7 9 3 16 14 10 8 7 9 3 2 4 1 2 4 1 Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 117 / 133

Binarna hrpa A implementirana kao polje: length[a] broj elemenata u polju A heap-size[a] broj elemenata u hrpi A korijen: A[1] roditelj dijete: Parent(i) 1 return i/2 Left(i) 1 return 2i Right(i) 1 return 2i + 1 Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 118 / 133

Svojstvo binarne hrpe max-heap svojstvo: min-heap svojstvo: A[Parent(i)] A[i], i > 1 A[Parent(i)] A[i], i > 1 Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 119 / 133

Zadatak Zadatak 10.1 Pokažite da hrpa od n elemenata ima visinu lg n. Zadatak 10.2 Čini li polje 23, 17, 14, 6, 13, 10, 1, 5, 7, 12 max-hrpu? Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 120 / 133

Čuvanje svojstva hrpe input: polje A i indeks i output: Left(i), Right(i) su hrpe podstablo od i je hrpa pretpostavka: podstabla u Max-Heapify(A, i) 1 l Left(i) 2 r Right(i) 3 if l heap-size[a] and A[l] > A[i] 4 then largest l 5 else largest i 6 if r heap-size[a] and A[r] > A[largest] 7 then largest r 8 if largest i 9 then A[i] A[largest] 10 Max-Heapify(A, largest) Vrijeme izvršavanja procedure: O(lg n) Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 121 / 133

Primjer Zadatak 10.3 Primjenite Max-Heapify(A, i) na dano potpuno binarno stablo A za i = 2. i 16 4 10 8 7 9 3 2 4 1 Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 122 / 133

Zadaci Zadatak 10.4 Napišite pseudokod za Min-Heapify proceduru koja će raditi u O(lg n) vremenu. Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 123 / 133

Izgradivanje hrpe Koristimo proceduru Max-Heapify za pretvaranje polja A[1... n] u max-hrpu. Build-Max-Heap(A) 1 heap-size[a] length A 2 for i length[a]/2 downto 1 3 do Max-Heapify(A, i) Vremenska složenost algoritama: O(n lg n) Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 124 / 133

Zadaci Zadatak 10.5 Napišite algoritam u peudokodu koji će sortirati polje od n elemenata uz pomoć max-hrpe. Algoritam neka radi u O(n lg n) vremenu. Primjenite algoritam na polju A = 5, 13, 2, 25, 7, 17, 20, 8, 4 Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 125 / 133

Prioritetni red struktura podataka u kojoj je svakom elementu pridružena ključna vrijednost i omogućeno je efikasno nalaženje ključeva s minimalnom odnosno maksimalnom vrijendošću. Operacije nad max-prioritetnom redu: Insert(S, x) ubacivanje elementa u skup S. Maximum(S) vrati element iz skupa S koji ima maksimalnu vrijednost ključa. Extract-Max(S) vrati i obriši element iz skupa S koji ima maksimalnu vrijednost ključa. Increase-Key(S, x, k) uvećaj vrijednost ključa elementa x s key[x] na k. Prioritetni red ćemo implementirati uz pomoć max binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 126 / 133

Element s maksimalnom vrijednošću ključa: Maximum(S) 1 return S[1] Skidanje elementa s maksimalnom vrijednošću ključa: Extract-Max(S) 1 if heap-size[s] < 1 2 then error heap underflow 3 max S[1] 4 S[1] S[heap-size[S]] 5 heap-size[s] heap-size[s] 1 6 Max-Heapify(S, 1) 7 return max Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 127 / 133

Ubacivanje elementa u skup S: Insert(S, k) 1 heap-size[s] heap-size[s] + 1 2 S[heap-size[S]] 3 Increase-Key(S, heap-size[s], k) Povećavanje vrijednosti ključa na nekom elementu skupa S: Increase-Key(S, i, k) 1 if k < S[i] 2 then error key is smaller than current key 3 S[i] k 4 while i > 1 and S[Parent[i]] < S[i] 5 do exchange S[i] S[Parent(i)] 6 i Parent(i) Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 128 / 133

Primjer Neka je dan skup podataka A = 16, 14, 10, 8, 7, 9, 3, 2, 4, 1 max binarne hrpe. Primjenite sljedeće operacije Maximum(A), Extract-Max(A), Increase-Key(A, 5, 12), Insert(A, 11). Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 129 / 133

Primjena: Huffmanov kod Efikasna tehnika koja se koristi kod kompresije podataka: 20% 90% sažimanje ovisno o tipu podataka. Primjer: Datoteka C sadrži znakove iz alfabeta {a, b, c, d, e, f } i želimo predstaviti znakove (tipa char) preko proizvoljnog binarnog kodiranja. a b c d e f f 45 13 12 16 9 5 FBC 000 001 010 011 100 101 VBC 0 101 100 111 1101 1101 ukupni broj bitova potrebno za prikaz znakova iz datoteke C: c C fc c CBR: c C fc c = 300000 relativno VBR: c C fc c = 224000 smanjenje: C CBR C VBR C CBR = 25, 3% Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 130 / 133

Ideja Na temelju frekvencija pojedinog znaka generirati njegov binarni kod čija će veličina varirati ovisno o frekvenciji. Dakle, generirat ćemo binarno stablo T koja će minimizirati vrijednost funkcije B(C) = c C f (c)d T (c) d T (c) predstavlja udaljenost znaka c od korijena stabla T. Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 131 / 133

Huffmanov algoritam Huffman(C) 1 Q C 2 for i 1 to C 1 3 do alociraj novi čvor z 4 left[z] x Extract-Min(Q) 5 right[z] y Extract-Min(Q) 6 key[z] key[x] + key[y] 7 Insert(Q, z) ubacujemo čvor z s ključem f [z] 8 return Extract-Min(Q) Vrijeme izvršenja algoritma: O(n lg n). Zašto? Primjer: Na temelju dane tablice generirajmo Huffmanov kod. Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 132 / 133

Zadaci Zadatak 11.1 Napišite Huffmanov kod na temelju riječi w = abacadabba Zadatak 11.2 Za dani skup frekvencija znakova {a : 4, b : 12, c : 12, d : 8, e : 9, f : 14} generirajte Huffmanov kod. Strukture podataka i algoritmi VJEŽBE 26. siječnja 2014. 133 / 133