Prioritetskøer og hobe. Philip Bille



Relaterede dokumenter
Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Danmarks Tekniske Universitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Datastrukturer (recap)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

DM02 Kogt ned. Kokken. Januar 2006

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Datastrukturer (recap)

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Danmarks Tekniske Universitet

Datastrukturer (recap) Datastruktur = data + operationer herpå

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Algoritmer på træer og trægennemløb.

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

DM507 - Algoritmer og datastrukturer

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Algoritmisk geometri

Danmarks Tekniske Universitet

Sortering af information er en fundamental og central opgave.

Danmarks Tekniske Universitet

Sortering. Eksempel: De n tal i sorteret orden

Mindste udspændende træ

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Introduktion til datastrukturer

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Minimum udspændende Træer (MST)

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Danmarks Tekniske Universitet

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Søgning og Sortering. Philip Bille

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Datastrukturer. Datastruktur = data + operationer herpå

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Datastrukturer. Datastruktur = data + operationer herpå

DM507 Algoritmer og datastrukturer

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

DM507 Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Grafer og graf-gennemløb

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

DM507 Algoritmer og datastrukturer

Sortering i lineær tid

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Danmarks Tekniske Universitet

Forén og find. Forén og find. Forén og find. Anvendelser

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Forén og find. Forén og find. Forén og find. Forén og find

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Transkript:

Prioritetskøer og hobe Philip Bille

Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering

Prioritetskøer

Prioritetskø Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key. Insert(x): sæt S = S cup {x}. Max(): returner element med største nøgle. Extract-Max(): fjern og returner element med største nøgle. Increase-Key(x, k): sæt x.key = k (vi antager k er større end x.key).

Anvendelser Hvad kan vi bruge en prioritetskø til? Skedulering Korteste veje i grafer (Dijkstras algoritme + venner) Mindste udspændende træer i grafer (Prims algoritme) Kompression (Huffmans algoritme)

Implementation Hvordan kan vi implementere en prioritetkø med nuværende teknikker? Med hægtet liste: O(n) for Insert, Max, Extract-Max og Increase-Key Med sorteret hægtet liste: O(1) for Max, Extract-Max O(n) for Insert og Increase-Key. Kan vi gøre det betydeligt bedre? Kræver nye teknikker!

Træer

Rodfæstet træ T. Består af knuder og kanter. Børn, forælder, efterkommer, forfader, blade, interne knuder. Acyklisk sammenhængende graf.

Lad v være en knude i T. dybden af v = længden af sti fra v til roden. højden af v = længden af længste sti fra v til en bladefterkommer. dybden af T = højden af T = længden af længste sti fra rod til et blad.

Binært træ = alle knuder har 2 børn, kaldet venstre barn og højre barn.

Komplet binært træ = alle interne knuder netop 2 børn. Næsten komplet binært træ = komplet binært træ hvor 0 eller flere blade er fjernet fra højre mod venstre. Hvad er sammenhæng mellem antallet af knuder og højden af (næsten) komplet binært træ?

n = antal knuder, h = højden. Antal blade = 2 h Antal interne knuder = 1 + 2 + 4 + + 2 h-1 = 2 h - 1 n = 2 h + 2 h - 1 = 2 h+1-1 h = Θ(log n) (gælder også for næsten komplet binært træ)

31 20 16 k 7 11 13 10 k k 3 5 2 9 12 En hob (heap) er et næsten komplet binært træ så hver knude indeholder et element hver knudes nøgle et højst ligeså stor som dens forælders (hob-orden) Kaldes en max-hob. Tilsvarende kan man definere min-hob.

Repræsentation af hobe Hvordan kan vi repræsentere en hob? Vi har brug for effektivt at kunne navigere mellem børn og forælder.

31 20 16 7 11 13 10 3 5 2 9 12 root null 31 20 16 7 11 13 null null 10 null 3 null null 5 null null null 2 null null 9 null null 12 null

31 1 20 2 16 3 7 11 13 10 4 5 6 7 3 5 2 9 12 8 9 10 11 12 31 20 16 7 11 13 10 3 5 2 9 12 1 2 3 4 5 6 7 8 9 10 11 12 31 20 16 7 11 13 10 3 5 2 9 12 Tabel H[1..n]. H[1] er rod, H[n] er blad længst til højre. Knude i har venstre barn på 2i, højre barn på 2i+1 og forælder på i/2

Prioritetskøoperationer Hvordan kan vi implementere prioritetskøoperationerne? Insert(x): sæt S = S {x}. Max(): returner element med største nøgle. Extract-Max(): fjern og returner element med største nøgle. Increase-Key(x, k): sæt x.key = k (vi antager k er større end x.key).

Insert(x): Indsæt x på næste ledige plads i tabel. Bobl op. Max(): Returner toppen af hob i A[1] Extract-Max() r = top af hob. Flyt blad længst til højre til top af hob. Bobl ned (Max-Heapify) Returner r. Increase-Key(x,k) Sæt x.key = k Bobl op.

Analyse Køretid: Insert, Extract-Max, Increase-Key i O(log n) tid Max i O(1) tid. Pladsforbrug: O(n) plads. Eksempel på implicit datastruktur.

Konstruktion af hob

Konstruktion af hob Lav A[1..n] være en tabel af heltal. Hvordan kan vi effektivt bygge en hob ud af tallene i A? (præprocessering)

Første forsøg Sæt alle elementer i A ind i hoben med n Insert operationer. Tid: Θ(n log n) Bygger hoben "oppefra og ned". Kan vi gøre det bedre?

Andet forsøg Opfat A som næsten komplet binært træ og Etabler hoborden nedefra og op for alle knuder Blade er allerede hobe af størrelse 1. For hver intern knude, bobl ned. Hvor hurtigt kører det?

For hver knude af højde h: O(h) tid. ~ n/2 knuder af højde 1, n/4 knuder af højde 2, n/8 knuder af højde 3,..., 1 knude af højde h. n/2 1 + n/4 2 + n/8 3 +... + 1 h = O(n) O(n) tid

Konstruktion af hob Givet en tabel A[1..n] kan vi bygge en hob i Θ(n) tid. Bruger kun O(1) ekstra plads.

Hobsortering

Hobsortering Lad A[1..n] være en tabel. Hobsortering: Byg hob af A. Lav n Extract-Max. Indsæt resultater sidst i tabel i stedet for at slette. Analyse. Byg en hob i Θ(n) tid n Extract-Max i Θ(nlog n) tid. i alt Θ(nlog n) tid.

Hobsortering Givet en tabel A[1..n] kan vi sortere i Θ(n log n) tid. Bruger kun O(1) ekstra plads. Ækvivalens af sortering og prioritetskøer.

Opsummering Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering