Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avGöran Lindström
1
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14
2
Köer med prioritet, varför? Ett behov av olika prioritesnivåer. Skrivare-kö 1-sida skrivs ut/ 100-sidor skrivs ut TCP/IP Stack ”Fast-lane” för mycket viktig trafik (RT) Real-tid system Schemaläggning
3
Prioritets tilldellning Varje uppgift / objekt i kön innehåller också ett prioritet-nummer Vanligtviss positiva heltal Där största värde har minsta prioritet
4
Mer om priority queues… Viktiga operationer Lägg till, nya objekt … med tilldelning av prioritet insert() Hitta, objektet med högst prioritet … den mista prioritet-nummer findMin() Ta bort, objektet med högst prioritet deleteMin() (put, get, remove) or (enqueue, peek, dequeue)
5
Passande datastruktur? Snaba insert Helst konstant tid ! Snabba romove och sökning Helst konstant tid ! En kompromis datastruktur mellan kö och binära träd…..??
6
Ordnad länkad-lista insert() konstant tid! findMin() Linjär tid… H H T T 4 4 2 2 3 3
7
Sorterad länkad-lista insert() Linjär tid… findMin() Konstant tid! H H T T 4 4 2 2 3 3
8
Binära träd insert() log N findMin() log N
9
Binära Träd insert() log N findMin() log N
10
Balancerade binära träd insert() log N findMin() log N Kräver ”hårt” arbete för balancering
11
Kompromis – Binary Heap Kombination av två egenskaper Strukturell egenskap Representeras inplicit Order egenskap Heap-order
12
Structurell egenskap Implicit representation Representeras som ett komplett binär träd med array För ett objekt på array-position x: Left child på array-position 2x Rigth child på array-position 2x + 1 Parent at array-position x/2 102345678 Root
13
Order egenskap Heap-order För ett objekt X som har parent P gäller: X’s priority key has to be greater than P’s priority key Objektet med den minsta prioritets- nummer ( högst prioritet) finns alltid i rooten. Konstant tid for findMin()!
14
Exempel – insert() 21 24 31 65 26 32 14 16 68 19 13 Percolate up
15
Exempel – Remove() 16 68 19 13 14 24 21 65 26 32 31 Percolate down
16
… Hur bra är den? insert() log N -- Worstcase Konstant tid -- Average deleteMin() log N – Worstcase AND as an average
17
Prioritets kö för sortering – Heapsort Använder a max heap Heapsort 1. (Strukturerar data ) 2. Bygger heap 3. Använder deleteMax för att ta bort data O(N log N) (worst-case)
18
Heapsort – Steg 1 Kopierara data i en heap struktur Behövs inte om data redan är i array ?
19
Heapsort – Steg 2 Bygger heap Perculate down frrån alla föräldrar Börjar med sista 4 4 5 5 1 1 6 6 3 3 7 7 2 2
20
Heapsort – Steg 3 Sortera med deleteMax 5 5 4 4 1 1 6 6 3 3 2 2 7 7
21
Heapsort – Step 3 Sort with deleteMax 5 5 4 4 1 1 6 6 3 3 2 2 7 7
22
Heapsort – Steg 3 4 4 1 1 3 3 7 7 2 2 6 6 Sortera med deleteMax 5 5
23
Heapsort – Steg 3 Sortera med deleteMax 2 2 3 3 7 7 6 6 5 5 1 1 4 4
24
2 2 5 5 3 3 7 7 6 6 4 4 Heapsort – Steg 3 Sortera med deleteMax 1 1
25
4 4 5 5 1 1 7 7 6 6 3 3 2 2 Heapsort – Steg 3 Sortera with deleteMax
26
4 4 5 5 3 3 7 7 6 6 1 1 2 2 Heapsort – Steg 3 Sortera med deleteMax
27
Slutsats Priority Queues Unsorted linked-list Sorted linked-list Binary trees Binary heap Heap sort Fast! (O(N log N) worst-case)
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.