Binære søgetræer og skiplister

Størrelse: px
Starte visningen fra side:

Download "Binære søgetræer og skiplister"

Transkript

1 Søgning 1

2 Binære søgetræer og skiplister < 6 S > 9 S = 8 S S

3 Ordbog ADT (Dictionary) En ordbog lagrer en samling af emner, der kan søges i Hvert emne er et par (nøgle, element) De centrale operationer for en ordbog er søgning, indsættelse og fjernelse af emner Anvendelser: Adressebog Kontokort-autorisering Afbildning fra værtsnavne (f.eks. akira.ruc.dk) til internetadresser (f.eks ) Metoder: findelement(k): Hvis ordbogen indeholder et emne med nøgle k, så returneres dets element. Ellers returneres det specielle element NO_SUCH_KEY insertitem(k, o): Indsætter emnet (k, o) i ordbogen removeelement(k): Hvis ordbogen har et emne med nøglen k, så fjernes det, og dets element returneres. Ellers returneres det specielle element NO_SUCH_KEY size(), isempty() keys(), elements() 3

4 Ordnede ordbøger Nøglerne antages at opfylde en total ordningsrelation Nye operationer: closestkeybefore(k) closestelembefore(k) closestkeyafter(k) closestelemafter(k) hvor k er en nøgle 4

5 Binær søgning Binær søgning udfører operationen findelement(k) på en ordbog implementeret ved en array-baseret sekvens, der er sorteret i forhold til nøglerne I hvert skridt halveres antallet af kandidat-emner Algoritmen terminerer efter O(log n) skridt Eksempel: findelement(7) 0 l 0 l m h l m h l = m = h m h 5

6 Opslagstabel En opslagtabel er en ordbog, der er implementeret ved hjælp af en sorteret sekvens Emnerne lagres i en array-baseret sekvens, der holdes sorteret efter nøglerne Der benyttes et comparator-objekt til sammenligning af nøgler Effektivitet: findelement tager O(log n) tid ved brug af binær søgning insertitem tager O(n) tid, da vi værste tilfælde skal parallelforskyde n 1 emner for at gøre plads til det nye emne removeelement tager O(n) tid, da vi i værste tilfælde skal parallelforskyde n 1 emner for at placere tabellens emner kompakt i tabellen En opslagtabel er kun effektiv for små ordbøger, eller for hvilke søgning er den mest almindelige operation, mens indsættelse og sletning er sjældne operationer (f.eks. autorisering af kontokort) 6

7 Binært søgetræ Et binært søgetræ er et binært træ, der indeholder nøgler (eller nøgle-elementpar) og opfylder følgende betingelse: En inorder-traversering af et binært søgetæ besøger knuderne i stigende orden Lad u, v og w være tre knuder, hvor u er i v s venstre undertræ, og w er i v s højre undertræ. Vi har, at key(u) key(v) key(w) De eksterne knuder indeholder ikke emner

8 Indsættelse For at udføre operationen insertitem(k, o) søges efter nøglen k Antag at k ikke allerede findes i træet, og lad w være det blad, der nås ved søgningen Så indsættes k i knuden w, og knuden omdannes til en intern knude Eksempel: indsættelse af 5 < 6 2 > 1 4 > 8 w w

9 Fjernelse For at udføre operationen removeelement(k) søges efter nøglen k Antag at k er i træet, og lad v være den knude, der indeholder k 6 < 2 > 1 4 v 8 w 5 9 Hvis v har et blad w som barn, så fjernes v og w fra træet Eksempel: fjernelse af

10 Fjernelse (fortsat) Betragt det tilfælde, hvor nøglen k, der skal fjernes findes i en knude v, hvis børn begge er interne knuder v 8 Find den interne knude w, som besøges efter v in ved en inorder-traversering z w Kopier key(w) til knuden v 1 5 v Fjern w og dennes venstre barn, z (som må være et blad) Eksempel: fjernelse af

11 Effektivitet Betragt en ordbog med n emner, der er implementeret ved hjælp af et binært søgetræ med højden h Pladsforbruget er O(n) Metoderne findelement, insertitem og removeelement tager O(h) tid Højden h er O(n) i værste tilfælde, og O(log n) i bedste tilfælde 11

12 Det gennemsnitlige tilfælde Hvis n emner indsættes i tilfældig rækkefølge i et fra starten tomt binært søgetræ, vil længden af søgevejen i det frembragte træ i gennemsnit være 1.39log 2 n I praksis er udførelsestiden for de tre grundoperationer O(log n) for tilfældigt input. Det er dog endnu ikke blevet påvist analytisk 12

13 Balancerede søgetræer Balancering er en teknik, der garanterer, at de værste tilfælde ved søgning ikke forekommer Ideen er at omorganisere træet under indsættelse og sletning, så det bliver fuldt (eller næsten fuldt) Et fuldt træ siges at være i perfekt balance. For enhver knude gælder nemlig, at antallet af knuder i dens venstre undertræ er lig med antallet af knuder i dens højre undertræ I det følgende præsenteres en række datastrukturer, der garanterer O(log n) kompleksitet for såvel søgning, indsættelse som sletning 13

14 AVL-træer (Adelson-Velskii og Landis, 1962) AVL-træer er balancerede Et AVL-træ er et binært søgetræ, hvor det for enhver intern knude gælder, at højderne af dens børn højst afviger med 1 Eksempel på et AVL-træ Højderne er angivet ved siden af knuderne

15 Højden af et AVL-træ n(2) 3 4 n(1) Sætning: Højden af et AVL-træ med n nøgler er O(log n) Bevis: Lad n(h) betegne det minimale antal interne knuder i et AVL-træ med højden h Det er let at se, at n(1) = 1 og n(2) = 2 For h > 2 indeholder et AVL-træ med højden h og med et minimalt antal interne knuder roden et AVL-træ med højden h-1 et AVL-træ med højden h-2 Derfor gælder n(h) = 1 + n(h-1) + n(h-2) Da n(h-1) > n(h-2), fås n(h) > 2n(h-2), og derfor n(h) > 4n(h-4), n(h) > 8n(h-6),..., n(h) > 2 i n(h-2i) Ved løsning med basistilfældet, n(1) = 1, fås n(h) > 2 h/2-1 Ved at tage logaritmen på begge sider af ulighedstegnet fås h < 2log n(h) +2 Derfor er højden af et AVL-træ O(log n) 15

16 Indsættelse i et AVL-træ Indsættelse sker i et binært søgetræ Sker altid ved at udvide en ekstern knude Eksempel: a=y c=z ubalance b=x w 54 inden indsættelse af 54 efter indsættelse 16

17 Omstrukturering Lad (a, b, c) være en inorder-opremsning af x, y, z Udfør de rotationer, der skal til for at gøre b til den øverste knude af de tre knuder ubalance a=z b=y (de to andre tilfælde er symmetriske) a=z c=y tilfælde 2: dobbelt-rotation (en højre-rotation efterfulgt af en venstre-rotation) T 0 T 0 c=x b=x T 1 b=y T 3 b=x T 2 T 3 a=z c=x T 1 T 2 a=z c=y tilfælde 1: enkelt-rotation (en venstre-rotation) T 0 T 1 T 2 T 3 T 0 T 1 T 2 T 3 17

18 Eksempel på indsættelse ubalanceret z y x T 0 T 2 T 3 T balanceret y x z 1 T 2 T 0 T 1 T 3 18

19 Indsættelse i AVL-træ 4 tilfælde Ved indsættelse i et af z s undertræer er der 4 mulige tilfælde: 1. Indsættelsen sker i det venstre undertræ af z s venstre søn. z 2. Indsættelsen sker i det højre undertræ af z s venstre søn. 3. Indsættelsen sker i det venstre undertræ af z s højre søn. 4. Indsættelsen sker i det højre undertræ af z s højre søn. z z z Tilfælde 1 og 4 er symmetriske. Tilfælde 2 og 3 er symmetriske. 19

20 Tilfælde 1 z y y z A B C A B C En højre-rotation genskaber balancen 20

21 Tilfælde 2 y z y z A B C A B C En højre-rotation genskaber ikke balancen 21

22 Tilfælde 2 (fortsat) x y z x z y z A B x C D A y B C D A B C D En venstre-højre-dobbeltrotation genskaber balancen 22

23 Fjernelse fra et AVL-træ Fjernelse starter som i et binært søgetræ Forælderen w til en fjernet knude og dennes forfædre kan komme ud af balance Eksempel: ubalance w inden fjernelse af 32 efter fjernelse 23

24 Omstrukturering efter fjernelse Lad z være den første ubalancerede knude, der mødes, når der gås op igennem træet fra w. Lad desuden y være det barn af z, der har størst højde, og lad x være det barn af y, der har størst højde Balancen i z kan genskabes (med en enkelt- eller dobbelt-rotation) Men dermed kan balancen i en anden knude højere oppe i træet blive ødelagt Vi fortsætter derfor på samme måde, indtil roden nås a=z w b=y c=x

25 Køretid for AVL-træer Omstrukturering (rotation) tager O(1) ved brug af et hægtet binært træ Søgning tager O(log n) højden af træet er O(log n) omstrukturering er ikke nødvendig Indsættelse tager O(log n) søgningen tager O(log n) højst 1 omstrukturering, som tager O(1) Fjernelse tager O(log n) søgningen tager O(log n) omstrukturering op igennem træet tager O(log n) 25

26 Flervejs-søgetræer Et flervejs-søgetræ er et ordnet træ, hvor Hver knude har mindst 2 børn og indeholder d 1 nøgle-element-par (k i, o i ), hvor d er antallet af børn For en knude med børn v 1 v 2 v d og nøglerne k 1 k 2 k d 1 gælder nøglerne i undertræet med rod v 1 er mindre end k 1 nøglerne i undertræet med rod v i ligger imellem k i 1 og k i (i = 2,, d 1) nøglerne i undertræet med rod v d er større end k d 1 Bladene indeholder ingen emner

27 Svarer til søgning i et binært søgetræ Flervejs-søgning For hver interne knude med børnene v 1 v 2 v d og nøglerne k 1 k 2 k d-1 k = k i (i = 1,, d - 1): søgningen terminerer succesfuldt k < k 1 : søgning fortsætter med barnet v 1 k i-1 < k < k i (i = 2,, d - 1): søgningen fortsætte med barnet v i k > k d-1 : søgningen fortsætter med barnet v d Hvis en ekstern knude nås, terminerer søgningen uden succes Eksempel: søgning efter

28 Flervejs inorder-traversering Vi kan udvide begrebet inorder-traversering fra binære træer til flervejs-søgetræer Emnet (k i, o i ) i en knude v besøges imellem de rekursive kald for de to undertræer, der har børnene v i og v i+1 som rod En inorder-traversering for et flervejs-søgetræ besøger nøglerne i stigende orden

29 (2,4)-træ Et (2,4)-træ (også kaldet et 2-4-træ, eller et træ) er et flervejs-træ med følgende egenskaber: Knude-størrelse-egenskaben: enhver intern knude har højst 4 børn Dybde-egenskaben: alle eksterne knuder har samme dybde Afhængigt af antallet af børn, kaldes en intern knude for en 2-knude, en 3-knude eller en 4-knude

30 Højden af et (2,4)-træ Sætning: Et (2,4)-træ med n emner har højden O(log n) Bevis: Lad h være højden af et (2,4)-træ med n emner Da der er mindst 2 i emner på dybden i = 0,, h 1 og ingen emner på dybden h, har vi n h 1 = 2 h 1 Ved at tage logaritmen på begge sider af ulighedstegnet fås h log(n + 1) dybde 0 1 h 1 h emner h

31 Indsættelse Et nyt emne (k, o) indsættes i forælderen v til det blad, der nås ved søgning efter k Dybde-egenskaben kan bevares, men det kan resultere i overløb (knude v bliver til en 5-knude) Eksempel: indsættelse af nøgle 30 giver overløb v v 31

32 Overløb og splitning Et overløb ved en 5-knude v håndteres med en splitning: Lad v 1 v 5 være v s børn og k 1 k 4 være v s nøgler Knude v erstattes med knuderne v' og v, hvor v' er en 3-knude med nøgler k 1 k 2 og børn v 1 v 2 v 3 v" er en 2-knude med nøgle k 4 og børn v 4 v 5 Nøglen k 3 indsættes i forælderen u til v (en ny rod kan blive skabt) Overløbet kan brede sig til forælderen u u v u v' v" v 1 v 2 v 3 v 4 v 5 v 1 v 2 v 3 v 4 v 5 32

33 Analyse af indsættelse Algorithm insertitem(k, o) 1. Vi søger efter nøglen k for at lokalisere indsættelsesknuden v 2. Vi tilføjer det ny emne (k, o) til knuden v 3. while overflow(v) do if isroot(v) then skab en ny tom rod over v v split(v) Lad T være et (2,4)-træ med n emner T s højde er O(log n) Trin 1 tager O(log n) tid, da vi besøger O(log n) knuder Trin 2 tager O(1) tid Trin 3 tager O(log n) tid, da hver splitning tager O(1) tid, og vi udfører O(log n) splitninger Derfor tager indsættelse i et (2,4)- træ O(log n) tid 33

34 Fjernelse Fjernelse af et emne reduceres til det tilfælde, hvor emnet findes i en knude, der kun har blade som børn. I andre tilfælde erstattes emnet med dets inorderefterfølger (eller med dets preorder-forgænger), og sidstnævnte emne fjernes Eksempel: for at slette nøglen 24 erstattes den med 27 (dens inorder-efterfølger)

35 Underløb og fusionering Fjernelse af et emne kan forårsage et underløb, hvor knuden v bliver til en 1-knude, d.v.s. en knude med et barn og ingen nøgler For at behandle underløb betragtes to tilfælde: Tilfælde 1: en tilstødende søskende er en 2-knude Fusionering: vi sammensmelter v med en tilstødende søskende w og flytter et emne fra deres forælder u ned til den sammensmeltede knude v Efter en fusionering kan underløbet brede sig til forælderen u u 9 14 u w v v' 35

36 Underløb og overførsel Tilfælde 2: en tilstødende søskende, w, er en 3-knude eller en 4-knude Overførsel: 1. Flyt et barn af w til v 2. Flyt et emne fra w to u 3. Flyt et emne fra u til v Efter en overførsel kan der ikke opstå underløb u 4 9 u w v w v 36

37 Analyse af fjernelse Lad T være et (2,4)-træ med n emner T s højde er O(log n) Ved fjernelse Besøges O(log n) knuder for at lokalisere den knude, hvorfra emnet skal fjernes Vi behandler underløb ved en serie af O(log n) fusioner, efterfulgt af højst 1 overførsel Hver fusion og overførsel tager O(1) tid Fjernelse af et emne fra et (2,4)-træ tager O(log n) tid 37

38 Fra (2,4)- til rød-sort-træer Et rød-sort-træ en en repræsentation af et (2,4)-træ ved hjælp af et binært træ, hvis knuder er farvet enten rød eller sort Et rød-sort-træ har ligesom et (2,4)-træ logaritmisk effektivitet, men det er simplere at implementere, da der kun er én knudetype ELLER

39 Rød-sort-træ (Bayer, 1972) Et rød-sort-træ kan også defineres om et binært søgetræ, der har følgende fire egenskaber: Rod-egenskaben: roden er sort Ekstern-egenskaben: ethvert blad er sort Intern-egenskaben: alle børn af en rød knude er sorte Dybde-egenskaben: alle blade har samme sorte dybde

40 Højden af rød-sort-træer Sætning: Højden af et rød-sort-træ med n emner er O(log n) Bevis: Højden af et rød-sort-træ er højst 2 gange højden af sit tilsvarende (2,4)-træ, som er O(log n) Søgealgoritmen for et rød-sort-træ er den samme som for et binært søge-træ Søgning i et rød-sort-træ tager derfor O(log n) tid 40

41 Indsættelse For at udføre operationen insertitem(k, o), udføres en indsættelse som for et binært søgetræ, og den indsatte knude farves rød, med mindre den er roden Vi opretholder dermed rod-, ekstern- og dybde-egenskaben, men ikke nødvendigvis intern-egenskaben Hvis forælderen, v, til z er sort, opretholdes også intern-egenskaben, og vi er færdige Ellers (v er rød) har vi dobbelt-rødt, hvilket kræver en omstrukturering af træet Eksempel, hvor indsættelsen af 4 giver dobbelt-rødt: v z v z 41

42 Afhjælpning af dobbelt-rødt Betragt en dobbelt-rød-situation med barn z og forælder v, og lad w være søskende til v Tilfælde 1: w er sort Dobbelt-rødt svarer til en ukorrekt repræsentation af en 4-knude Omstrukturering: vi ændrer 4-knuderepræsentationen w 2 4 z v Tilfælde 2: w er rød Dobbelt-rødt svarer til overløb Omfarvning: Vi udfører en operation svarende til en splitning w 2 4 z v

43 Omstrukturering En omstrukturering afhjælper barn-forældre-dobbelt-rødt, når forældreknuden har en sort søskende Det svarer til at skabe en korrekt repræsentation af en 4-knude Intern-egenskaben genskabes, og de øvrige egenskaber bevares w 4 v z w z 7 v

44 Omstrukturering (fortsat) Der er fire muligheder for omstrukturering afhængigt af, om de dobbelt-røde knuder er venstre eller højre-børn

45 Omfarvning En omfarvning afhjælper børn-forælder-dobbelt-rødt, når forælder-knuden har en rød søskende Forælderen v og dens søskende w farves sort, og bedsteforælderen farves rød, medmindre den er roden Det svarer til at udføre en splitning af en 5-knude Dobbelt-rødt kan brede sig til bedsteforælderen u w 2 4 z u 6 7 v w 2 u 4 z 6 7 v

46 Analyse af indsættelse Algorithm insertitem(k, o) 1. Vi søger efter nøglen k for at lokalisere indsættelsesknuden z 2. Vi tilføjer det ny emne (k, o) til knuden z og farver knuden rød 3. while doublered(z) do if isblack(sibling(parent(z))) then z restructure(z) else z recolor(z) Lad T være et (2,4)-træ med n emner T s højde er O(log n) Trin 1 tager O(log n) tid, da vi besøger O(log n) knuder Trin 2 tager O(1) tid Trin 3 tager O(log n) tid, da vi udfører O(log n) omfarvninger, som hver tager O(1) tid, samt højst en omstrukturering, som tager O(1) tid Derfor tager indsættelse i et rød-sorttræ O(log n) tid 46

47 Fjernelse For at udføre operationen remove(k), udføres en fjernelse som for et binært søgetræ Lad v være den fjernede interne knude, w den fjernede eksterne knude, og lad r være w s søskende Hvis enten v eller r var røde, farver vi r sort, og vi er færdige Ellers (både v og r var sorte) farver vi r dobbelt-sort, hvilket ødelægger internegenskaben og nødvendiggør en omstrukturering Eksempel: Fjernelse af 8 giver dobbelt-sort w v r r 47

48 Afhjælpning af dobbelt-sort Algoritmen til afhjælpning af dobbelt-sort knude r med søskende y behandler tre tilfælde: Tilfælde 1: y er sort og har et rødt barn Der udføres en omstrukturering (svarende til en overførsel), og vi er færdige Tilfælde 2: y er sort, og begge dens børn er sorte Der udføres en omfarvning (svarende til fusionering), hvilket kan give dobbelt-sort opad i træet Tilfælde 3: y er rød Der udføres en justering (svarende til valg af anden repræsentation for en 3-knude), hvorved tilfælde 1 eller 2 opstår Fjernelse fra et rød-sort-træer tager O(log n) tid 48

49 AVL-træer contra Rød-Sort-træer Et rød-sort-træ er sædvanligvis mere effektivt Indsættelse i et AVL-træ kræver (i værste tilfælde) 2 gennemløb af en vej (ned til et blad og tilbage til roden), mens indsættelse i et rød-sort-træ kan klares med 1 gennemløb 49

50 Splay-træer v z 50

51 I splay-træer foretages rotation efter enhver operation (selv efter søgning) Ny operation: splay flytter en knude op som rod ved hjælp af rotationer to splay at forvride 51

52 start med knude x Splaying: at x er et højre-venstre barnebarn betyder, at x er et højre barn af sin forælder, som selv er et venstre barn af sin forælder p er x s forælder; g er p s forælder er x roden? nej ja stop er x et venstrevenstre barnebarn? ja zig-zig højre-rotér om g, højre-rotér om p er x et barn af roden? ja nej er x et højre-højre barnebarn? ja er x et højre-venstre barnebarn? zig-zig venstre-rotér om g, venstre-rotér om p zig-zag er x det venstre barn af roden? nej ja venstre-rotér om p, højre-rotér om g ja zig zig er x et venstre-højre barnebarn? zig-zag højre-rotér om roden venstre-rotér om roden ja højre-rotér om p, venstre-rotér om g 52

53 Visualisering af tilfældene g g zig-zag x p p g p x T 4 T 1 x T 4 T 1 T 2 T 3 T 4 T 3 zig-zig T 2 T 3 T 1 T 2 x p zig T 1 p x T 3 x g p T 2 T 1 T 2 T 1 T 3 T 4 T 2 T 3 53

54 Rækkefølgen af rotationer for zig-zig er vigtig g p T 4 x T 3 zig-zig Ikke x højre-rotér om p, højre-rotér om g T 1 T 2 x g T 1 p T 1 p g T 4 højre-rotér om g, højre-rotér om p T 2 T 3 T 4 T 2 T 3 54

55 Eksempel Lad x = (8,N) x er det højre barn af sin forælder, der er det venstre barn af bedsteforælderen venstre-rotér om p og højre-rotér om g (zig-zag) g p (20,Z) (10,A) (35,R) (14,J) (7,T) (21,O) (1,Q) (8,N) (36,L) x (1,C) (5,H) (7,P) (10,U) (37,P) (40,X) 1. (inden rotation) (2,R) (5,G) (20,Z) (5,I) (6,Y) g (10,A) (35,R) (20,Z) p x (7,T) (8,N) (10,U) (14,J) (21,O) (36,L) (37,P) (40,X) p x (7,T) (8,N) (10,A) g (21,O) (35,R) (37,P) (1,Q) (7,P) (1,Q) (7,P) (14,J) (36,L) (40,X) (1,C) (2,R) (5,H) (5,I) (5,G) (6,Y) 2. (efter første rotation) (1,C) (2,R) (5,H) (5,I) (5,G) (6,Y) (10,U) 3. (efter anden rotation) x er endnu ikke rod, så der skal splayes igen 55

56 Eksempel (fortsat) (20,Z) nu er x venstre barn af roden højre-rotér om roden (zig) x (8,N) (35,R) (7,T) (10,A) (21,O) (37,P) (1,C) (1,Q) (2,R) (5,H) (7,P) (5,G) (10,U) (14,J) (36,L) 1. (inden rotation) (40,X) (1,Q) (7,T) x (7,P) (8,N) (10,A) (20,Z) 2. (efter rotation) (35,R) (5,I) (6,Y) (1,C) (5,H) (14,J) (21,O) (37,P) (2,R) (5,G) (10,U) (36,L) (40,X) (5,I) (6,Y) x er roden, så stop 56

57 Definition af splay-træ Et splay tree er et binært søgetræ, hvor hver knude splayes, efter at den er tilgået (efter en søgning eller en opdatering) Den dybeste interne knude, der er tilgået, bliver splayet Splaying koster O(h), hvor h er højden af træet - i værste tilfælde O(n) [ O(h) rotationer, som hver koster O(1) ] 57

58 Splay-knuder Hvilken knude splayes efter en operation? operation findelement insertelement removeelement splay-knude hvis nøglen findes i en knude, da denne knude hvis nøglen ikke findes, så forælderen til til den eksterne knude, hvor søgningen stoppede den nye knude, der indeholder det indsatte element forælderen til den interne knude, der blev fjernet 58

59 Eksempel på resultatet af splaying inden (7,T) (10,A) (14,J) (20,Z) (21,O) (35,R) (37,P) Træet behøver ikke at blive mere balanceret Eksempel: splay (40,X) før er dybden af det højeste blad 3, og dybden af det dybeste er 7 efter er dybden af det højeste blad 1, og dybden af det dybeste er 8 (1,C) (1,Q) (2,R) (5,H) (8,N) (7,P) (5,G) (10,U) (36,L) (40,X) (40,X) (20,Z) (5,I) (6,Y) (20,Z) (10,A) (40,X) (10,A) (37,P) (7,T) (14,J) (37,P) (7,T) (14,J) (35,R) (1,Q) (8,N) (35,R) (1,Q) (8,N) (21,O) (36,L) (1,C) (5,H) (7,P) (10,U) (21,O) (36,L) (1,C) (5,H) (7,P) (10,U) (2,R) (5,I) (5,G) (6,Y) efter første splay (2,R) (5,I) (5,G) (6,Y) efter andet splay 59

60 Amortiseret analyse af splay-træer Køretiden for enhver operation er proportional med den tid, der bruges på splaying Omkostninger: zig = 1 krone, zig-zig = 2 kroner, zig-zag = 2 kroner Dermed bliver omkostningen for at splaye en knude, der har dybde d, lig med d kroner Definer rank(v) som logaritmen til antallet af knuder i undertræet med rod v Antag, at vi lagrer rank(v) kroner i enhver knude v i splay-træet 60

61 Omkostning per zig y zig w x T 4 w x y T 3 T 1 T 2 T 1 T 2 T 3 T 4 Udførelse af en zig koster højst rank (x) - rank(x): cost = rank (x) + rank (y) - rank(y) - rank(x) < rank (x) - rank(x) [ rank (y) rank(y) ] 61

62 Omkostning per zig-zig og zig-zag z x x y T 3 T 4 zig-zig y T 1 T 2 z T 1 T 2 T 3 T 4 Udførelse af zig-zig eller zig-zag koster højst 3(rank (x) - rank(x)) - 2 Bevis: side 192 i lærebogen z zig-zag x y z y T 1 x T 4 T 1 T 2 T 3 T 4 T 2 T 3 62

63 Omkostning for splaying Omkostningen for at splaye en knude x på dybden d i et træ med rod r er højst 3(rank(r) - rank(x)) - d + 2 Bevis: Splaying af x bruger d/2 deltrin: cost = d / 2! cost i i=1 d / 2 "!(3(rank i (x) # rank i#1 (x)) # 2) + 2 i=1 = 3(rank(r) # rank 0 (x)) # 2(d /2) + 2 " 3(rank(r) # rank(x)) # d

64 Effektiviteten af splay-træer Husk, at rangen af en knude er logaritmen til dets undertræs størrelse Derfor er den amortiserede omkostning for enhver splay-operation O(log n). Splay-træer kan faktisk tilpasse sig, så der udføres søgning på ofte forespurgte emner hurtigere end O(log n) 64

65 Hvad er en skipliste? En skipliste er en mængde S af forskellige (nøgle, element)-par i en række af lister S 0, S 1,, S h, hvor Hver liste S i indeholder de specielle nøgler and + Listen S 0 indeholder alle nøgler i S i ikke-aftagende orden Hver liste er en delsekvens af den forrige, d.v.s. S 0 S 1 S h Listen S h indeholder kun de to specielle nøgler S 3 + S S S

66 Søgning Vi søger efter en nøgle x i en skipliste således: Start i første position i den øverste liste I den aktuelle position, p, sammenlignes x med y = key(after(p)) Hvis x = y, returneres element(after(p)) Hvis x > y, søges videre fremad Hvis x < y, søges videre nedad Hvis der forsøges at gå nedad fra den nederste liste, returneres NO_SUCH_KEY Eksempel: søgning efter 78 S 3 + S S S

67 Randomiserede algoritmer En randomiseret algoritme udfører møntkast (d.v.s. bruger tilfældige bit) til at styre sin udførelse Den indeholder sætninger af typen b random() if b = 0 then do A else { b = 1} do B Den forventede køretid af en randomiseret algoritme analyseres ud fra følgende forudsætninger: Mønten er upartisk Møntkastene er uafhængige Køretiden for det værste tilfælde for en randomiseret algoritme er ofte stor, men sandsynligheden for, at det indtræffer, er meget lille (det indtræffer, når alle møntkast giver samme udfald) Køretiden afhænger af møntkastenes udfald 67

68 Indsættelse For at indsætte et emne (x, o) i en skipliste benyttes en randomiseret algoritme: Vi kaster gentagne gange en mønt, indtil vi får plat. Vi betegner med i det antal gange, vi har fået krone Hvis i h, tilføjes de nye lister S h+1,, S i +1, som hver kun indeholder de to specielle nøgler Herefter søges efter x i skiplisten, og vi bestemmer positionerne p 0, p 1,, p i på de emner, der har størst nøgle mindre end x i hver af listerne S 0, S 1,, S i For j 0,, i indsættes (x, o) i listen S j efter position p j Eksempel: indsættelse af nøgle 15 med i = 2 S 3 + S 2 p 2 + S S 1 p S S 0 p S

69 Fjernelse For at fjerne et emne med nøgle x fra en skipliste benyttes følgende fremgangsmåde: Søg efter x i skiplisten og find positionerne p 0, p 1,, p i for de emner med nøgle x, hvor position p j er i listen S j Fjern positionerne p 0, p 1,, p i fra listerne S 0, S 1,, S i Med undtagelse af en, fjernes alle lister, der nu kun indeholder de to specielle nøgler Eksempel: fjernelse af nøglen 34 S 3 + S 2 p S 2 + S 1 p S S 0 p S

70 Implementering En skipliste kan implementeres ved hjælp af quad-knuder En quad-knude indeholder: emnet hægte til knuden før hægte til knuden efter hægte til knuden under hægte til knuden over quad-knude x Desuden defineres de specielle nøgler MINUS_INF og PLUS_INF, og comparator-objektet ændres, så det kan håndtere disse nøgler 70

71 Pladsforbrug Pladsen, der bruges af en skipliste afhænger af de tilfældige bits, der bruges til indsættelsesalgoritmen. Følgende sandsynlighedsteoretiske fakta benyttes: Faktum 1: Sandsynligheden for at få i kroner i træk ved kast med en mønt er 1/2 i Faktum2: Hvis ethvert af n emner findes i en mængde med sandsynlighed p, vil det forventede antal elementer i mængden være np Betragt en skipliste med n emner Ud fra faktum 1 indsættes et emne i listen S i med sandsynligheden 1/2 i Ud fra faktum 2 vil den forventede størrelse af listen S i være n/2 i Det forventede antal knuder i en skipliste er h! i= 0 h n 1 = n 2n i! < i 2 2 i= 0 Derfor er det forventede pladsforbrug for en skipliste med n emner O(n) 71

72 Højde Køretiden for søgning og indsættelse i en skipliste afhænger af højden h af skiplisten Vi kan vise, at en skipliste med n elementer har højde O(log n) med høj sandsynlighed Hertil benyttes endnu et sandsynlighedsteoretisk faktum: Faktum 3: Hvis enhver af n hændelser har sandsynlighed p, vil sandsynligheden for at mindst én hændelse indtræffer være højst np (summen af deres sandsynligheder) Betragt en skipliste med n emner Ud fra faktum 1 indsættes et emne i listen S i med sandsynligheden 1/2 i Ud fra faktum 3 vil sandsynligheden for at listen S i har mindst ét emne være højst n/2 i Ved at vælge i = 3log n fås, at sandsynligheden for at S 3log n har mindst ét element er højst n/2 3log n = n/n 3 = 1/n 2 En skipliste med n emner har derfor en højde, der højst er 3log n med en sandsynlighed, der mindst er 1 1/n 2 72

73 Effektivitet af søgning Søgetiden for en skipliste er proportional med antallet af nedadgående skridt, plus antallet af fremadgående skridt De nedadgående skridt er begrænset af højden af skiplisten og er således O(log n) med høj sandsynlighed For at analysere de fremadgående skridt benyttes endnu et sandsynlighedsteoretisk faktum: Faktum 4: Det forventede antal møntkast, der kræves for at slå plat, er 2 Når der søges fremad i en liste, vil enhver af de nøgler, der undersøges, ikke tilhøre en højereliggende liste Et fremadgående skridt er knyttet til et tidligere møntkast Ud fra faktum 4 er det forventede antal fremadgående skridt i hver liste lig med 2 Derfor er det forventede antal fremadgående skridt O(log n) Vi kan derfor konkludere, at søgning forventes at tage O(log n) tid Analyse af indsættelse og fjernelse giver tilsvarende resultater 73

74 Treaps

75 Treap En treap er et binært søgetræ, der samtidig opfylder hobbetingelsen Prioriteterne vælges tilfældigt 2 9 prioritet nøgle Indsættelse, søgning og fjernelse forventes at tage O(log n) tid

76 Indsættelse 1. Vælg en tilfældig prioritet 2. Indsæt i det normale binære søgetræ 3. Roter opad, indtil hobbetingelsen er opfyldt 2 9 insert(15)

77 Fjernelse 1. Find elementet, der skal fjernes 2. Sæt dets prioritet til 3. Roter nedad, indtil det bliver et blad 4. Fjern det remove(9) =

78 Implementering af en ordbog Sammenligning af effektive implementationer Søg Indsæt Fjern Noter Hashtabel 1 forventet 1 forventet 1 forventet ingen ordning simpel at implementere Skipliste Treap log n høj sands. log n høj sands. log n høj sands. randomiseret indsættelse simpel at implementere (2,4)-træ Rød-sort træ log n værste tilfælde log n værste tilfælde log n værste tilfælde svær at implementere 78

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Datastrukturer (recap) Datastruktur = data + operationer herpå

Datastrukturer (recap) Datastruktur = data + operationer herpå Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også

Læs mere

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

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 Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.

Læs mere

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

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan

Læs mere

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. Philip Bille 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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

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

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 Side af 0 sider Opgave (%) Ja Nej n er O(0n logn)? n er O(n )? n +n er O(n )? n logn er O(n )? n logn er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n Eksamen. kvarter 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) Ja Nej n er O(n )? n er O(n )? n er O(n + 0 n)? n + n er O(n )? n log n er Ω(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

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

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 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 en unik simpel vej mellem ethvert par af punkter i

Læs mere

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.

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. Eksamen august Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n + n er O(n )? n / er O(n / )? n er O(n log n)? n er O((log n) )? n er Ω(n )? Ja Nej Opgave (%) Opskriv følgende funktioner

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

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 Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):

Læs mere

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

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:

Læs mere

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

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 Eksamen. kvarter 00 Side 1 af sider Opgave 1 ( %) Ja Nej n log n er O(n / )? n 1/ er O(log n)? n + n er O(n )? n( n + log n) er O(n / )? n er Ω(n )? Opgave ( %) Opskriv følgende funktioner efter stigende

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Prioritetskøer og hobe. Philip Bille

Prioritetskøer og hobe. Philip Bille 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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

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

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. 22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327

Læs mere

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

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet Side af 1 sider Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Dette eksamenssæt består af en kombination af små skriftlige opgaver og multiplechoice-opgaver. Opgaverne

Læs mere

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)

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) Eksamen august 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave ( %) n er O(n log n)? n n er O(n )? Ja Nej n er O(n log n)? n + n log n er O(n n)? n + n er O(n )? Opgave ( %) Opskriv følgende

Læs mere

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort Sortering Sortering ved fletning (merge-sort) 7 2 9 4! 2 4 7 9 7 2! 2 7 9 4! 4 9 7! 7 2! 2 9! 9 4! 4 1 2 Del-og-hersk Merge-sort Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4 Eksamen august 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er O(n )? n(log n) er O(n )? n n + (log n) er O(n )? n er O(n )? n er Ω( n )? Opgave (%) Opskriv følgende funktioner

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n er O(n 7 )? (logn) er O( n)? n(logn) er O(n)? n er O( n )? n er Ω(n )? Opgave (%) Opskriv følgende funktioner efter stigende orden med

Læs mere

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

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

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2 Side af sider Opgave (%) Ja Nej n er O(n n)? n er O(n+n )? ( n ) er O( n )? logn er O(n / )? n +n er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn)

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7 Side af 0 sider Opgave (%) Ja Nej /n er O(n )? n (logn) er O(n 3 )? n + n er O(3 n )? n er O((logn) 3 )? nlogn er Ω(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen:

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

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: n 3/2. n logn (3/2) n. 2 3logn (3/2) n Side af 0 sider Opgave (4%) Ja Nej n er O(n / )? n +n er O(n )? (logn) er O( logn )? n er O()? /n er O(logn)? Opgave (4%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: logn

Læs mere

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: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er Ω(n)? n er O( n )? n er O(8logn)? + er O(n)? n er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n +n er O(n )? Ja Nej n er O(n )? n+n er O(n. )? n+n er O(8n)? n logn er O(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

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. Mandag den 22. marts 2004, kl Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Mandag den. marts 00, kl..00 11.00 Navn Gerth Stølting Brodal Årskort 1 Dette eksamenssæt består af en kombination

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n Side af sider Opgave (%) Ja Nej n er O( n )? n er O(log n)? n er O(n )? n + er O(0n)? nlogn er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: nlogn logn

Læs mere

Søgning. Binære søgetræer og skiplister. Ordnede ordbøger. Ordbog ADT (Dictionary) Nøglerne antages at opfylde en total ordningsrelation

Søgning. Binære søgetræer og skiplister. Ordnede ordbøger. Ordbog ADT (Dictionary) Nøglerne antages at opfylde en total ordningsrelation Søgning Binære søgetræer og skilister < S 3 "! > = S "! 5 S "! 5 3 S 0 "! 0 5 3 3 Ordbog ADT (Dictionar) Ordnede ordbøger En ordbog lagrer en samling af emner, der kan søges i Hert emne er et ar (nøgle,

Læs mere

Sortering ved fletning (merge-sort)

Sortering ved fletning (merge-sort) Sortering 1 Sortering ved fletning (merge-sort) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 2 Del-og-hersk Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data S i to disjunkte

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

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

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

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

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

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

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 )? Eksamen juni Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) I det følgende angiver log n -tals-logaritmen af n. n+n er O(n)? n 6 er O(n )? nlogn er O(n /logn)? n er O(n )? n er O(n )?

Læs mere

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

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer 1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO

Læs mere

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

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille (priority-queues). Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX():

Læs mere

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

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er) Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 16. august 2013,

Læs mere

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

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 1. april 200, kl..00-11.00

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 10. august 2012, kl. 9.00-11.00 Eksamenslokale: Finlandsgade

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F0 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 00. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tolv) Eksamensdag: Fredag den 7. august 009, kl.

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 21. marts 2013,

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

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

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

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 26. marts 2009, kl.

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Onsdag den 31. marts 2010, kl.

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 13. august 2010, kl.

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Vejledende løsninger

Vejledende løsninger Roskilde Universitetscenter side 1 af 8 sider Vejledende løsninger Opgave 1 Spørgsmål 1.1 a = b - a; b = b - a; a = b + a; Opgaven har flere løsninger. En anden løsning er: a = b + a; b = a - b; a = a

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Onsdag den. august 200, kl. 9.00.00 Opgave (25%) Lad A = A[] A[n] være et array af heltal. Længden af det længste

Læs mere

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

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/ Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning

Læs mere

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

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer... Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Tirsdag den 20. marts 2012, kl.

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 Eksamensdag: Tirsdag den 7. juni 16, kl. 9.-11. Tilladte medbragte

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 11. august 2011,

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer 1 (003-ordning) Antal sider i opgavesættet (incl. forsiden): 10 (ti)

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af

Læs mere

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3 02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................

Læs mere

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Planfejning 1 Skæring 2 Geometrisk skæring Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Løsningsmetoder: Rå kraft Planfejning (eng. plane sweep)

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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.

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. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere