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



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

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 Algoritmer på træer og trægennemløb.

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

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Datastrukturer (recap)

Datastrukturer (recap)

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Danmarks Tekniske Universitet

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

Algoritmisk geometri

Datastrukturer (recap) Datastruktur = data + operationer herpå

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

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

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

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

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

Skriftlig eksamen i Datalogi

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Om binære søgetræer i Java

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Introduktion til datastrukturer

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

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

DM507 Algoritmer og datastrukturer

Binære søgetræer og skiplister

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Mindste udspændende træ

Introduktion til datastrukturer. Philip Bille

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

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

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

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

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

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

DM02 Kogt ned. Kokken. Januar 2006

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

Vejledende løsninger

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

DM507 Algoritmer og datastrukturer

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 )?

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

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

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM507 Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

Divide-and-Conquer algoritmer

Sortering. Eksempel: De n tal i sorteret orden

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

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

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

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

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

Søgning og Sortering. Philip Bille

Transkript:

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

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

Nærmeste naboer Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[x] og satellitdata data[x]. Nærmeste naboer operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k): returner element x med mindste nøgle k. INSERT(x): tilføj x til S (vi antager x ikke findes i forvejen) DELETE(x): fjern x fra S. 3 5 6 10 12 20 24 PREDECESSOR(8) k = 8 SUCCESSOR(8)

Nærmeste nabo Anvendelser. Søgning efter relateret data (typisk mange dimensioner). Rutning på internettet.

Hægtet liste Løsning med hægtet liste. Gem S i en dobbelt-hægtet liste. head 66 54 1 96 16 41 13 PREDECESSOR(k): lineær søgning i listen efter element med største nøgle k. SUCCESSOR(k): lineær søgning i listen efter element med mindste nøgle k. INSERT(x): indsæt x i starten af liste. DELETE(x): fjern x fra liste. Tid. PREDECESSOR og SUCCESSOR i O(n) tid. INSERT og DELETE i O(1) tid. Plads. O(n).

Binær søgning Løsning med sorteret tabel. Gem S i tabel sorteret efter nøgle. 1 2 3 4 5 6 7 1 13 16 41 54 66 96 PREDECESSOR(k): binær søgning i listen efter element med største nøgle k. SUCCESSOR(k): binær søgning i listen efter element med mindste nøgle k. INSERT(x): lav ny tabel af størrelse +1 med x tilføjet. DELETE(x): lav ny tabel af størrelse -1 med x fjernet. Tid. PREDECESSOR og SUCCESSOR i O(log n) tid. INSERT og DELETE i O(n) tid. Plads. O(n).

Nærmeste nabo Datastruktur PREDECESSOR SUCCESSOR INSERT DELETE Plads hægtet liste O(n) O(n) O(1) O(1) O(n) binær søgning O(log n) O(log n) O(n) O(n) O(n)

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

Binære søgetræer Binært træ. Et binært træ er enten Tomt. 15 En knude med to binære træer som børn. 8 20 Binært søgetræ. Binært træ der overholder søgetræsinvarianten. 1 3 11 14 Søgetræsinvariant (binary-search-tree property). 13 Alle knuder indeholder et element. For alle knuder v: alle nøgler i venstre deltræ er key[v]. v alle nøgler i højre deltræ er key[v]. key[v] key[v]

Binære søgetræer Repræsentation. Hver knude x består af root key[x] left[x] right[x] null 15 parent[x] (data[x]) Plads. O(n) 8 null 20 null 8 15 20 null 1 14 null 1 14 null 3 null null 11 3 11 13 null 13 null

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

Indsættelse INSERT(x): start i rod. Ved knude v: hvis key[x] key[v] gå til venstre. hvis key[x] > key[v] gå til højre. hvis null, indsæt x 15 15 8 20 8 20 1 14 INSERT(9) 1 14 3 11 3 11 13 9 13

Indsættelse INSERT(x): start i rod. Ved knude v: hvis key[x] key[v] gå til venstre. hvis key[x] > key[v] gå til højre. hvis null, indsæt x Opgave. Indsæt følgende nøglesekvens i binært søgetræ: 6, 14, 3, 8, 12, 9, 34, 1, 7

Indsættelse INSERT(x,v) if (v == null) return x if (key[x] < key[v]) left[v] = INSERT(x, left[v]) if (key[x] > key[v]) right[v] = INSERT(x, right[v]) 1 3 8 11 15 14 20 Tid. O(h) 9 13

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

Predecessor PREDECESSOR(k): start i rod. Ved knude v: k == key[v]: returner v. k < key[v]: fortsæt søgning i venstre deltræ. k > key[v]: fortsæt søgning i højre deltræ. Hvis der ikke findes knude i højre deltræ med nøgle k, returner v. v key[v] key[v]

Predecessor PREDECESSOR(v, k) if (v == null) return null if (key[v] == k) return v if (key[v] < k) return PREDECESSOR(left[v], k) t = PREDECESSOR(right[v], k) if (t null) return t else return v key[v] v key[v] Tid. O(h) SUCCESSOR med tilsvarende algoritme i O(h) tid.

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

Sletning DELETE(x): x har 0 børn: slet x. 0 børn x

Sletning DELETE(x): x har 0 børn: slet x. x har 1 barn: split x ud. 1 barn x

Sletning DELETE(x): x har 0 børn: slet x. x har 1 barn: split x ud. x har 2 børn: find y = SUCCCESSOR(key[x]). Split y ud og udskift y med x 2 børn x x y y y

Sletning DELETE(x): x har 0 børn: slet x. x har 1 barn: split x ud. x har 2 børn: find y = SUCCCESSOR(key[x]). Split y ud og udskift y med x. Tid. O(h)

Binære søgetræer Tid. PREDECESSOR, SUCCESSOR, INSERT og DELETE i O(h) tid. Højden h er afhængig sekvens af operationer. I værstefald er h = Ω(n). I gennemsnit er h = Θ(log n). Med balancerede søgetræer (2-3 træer, AVL-træer, rød-sorte træer,..) tager alle operationer O(log n) tid i værstefald. Plads. O(n).

Nærmeste nabo Datastruktur PREDECESSOR SUCCESSOR INSERT DELETE Plads hægtet liste O(n) O(n) O(1) O(1) O(n) binær søgning O(log n) O(log n) O(n) O(n) O(n) binært søgetræ O(h) O(h) O(h) O(h) O(n) balanceret søgetræ O(log n) O(log n) O(log n) O(log n) O(n)

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

Trægennemløb Inorder gennemløb (inorder traversal). Besøg venstre deltræ rekursivt. Besøg knude. Besøg højre deltræ rekursivt. 15 8 20 1 14 3 11 13 Inorder: 1, 3, 8, 11, 13, 14, 15, 20 Udskriver knuderne i et binært søgetræ i sorteret rækkefølge. Tid. O(n)

Trægennemløb Preorder gennemløb (preorder traversal). Besøg knude. Besøg venstre deltræ rekursivt. Besøg højre deltræ rekursivt. Tid. O(n) 15 8 20 1 14 3 11 13 Preorder: 15, 8, 1, 3, 14, 11, 13, 20

Trægennemløb Postorder gennemløb (postorder traversal). Besøg venstre deltræ rekursivt. Besøg højre deltræ rekursivt. Besøg knude. 15 8 20 1 14 3 11 13 Postorder: 3, 1, 13, 11, 14, 8, 20, 15 Tid. O(n)