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

Slides:



Advertisements
Lignende præsentationer
Den danske befolknings syn på handicappedes rettigheder
Advertisements

VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Triangulering i 3D vha. kd-træer
NemID og Fællesskema 2014 v/Signe Hansen Blegmand
Funktioner Grundbegreber.
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
v/ Professor Lars Ehlers, Aalborg Universitet
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS 15] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Funktioner Graf og forskrift Venstreklik på musen for at komme videre
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Statistik.
Planfejning.

Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Representations for Path Finding in Planar Environments.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Titel: Arial, fed, skriftstr. 20, mørkegrå. Tekst: Arial, normal, fed eller kursiv, skriftstr. 10, 12 og 14 til print – 16 og 18 til projektor – mørkegrå.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
LINEÆR FUNKTIONER MATEMATIK A.
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Induktion og rekursion
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
1 Algoritme til at løse knude P-center problemet Algoritmen brugte set covering problemet Virker derfor kun til knude problemer Vi vil alligevel bruge.
Datastrukturer og Collections Rasmus D. Lehrmann DM
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
Multi-vejs hobe med ekstra bytes Foredrag: Claus Jensen Projektmedlemmer: Jyrki Katajainen, Fabio Vitale, Claus Jensen.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
1 Søgning I. 2 Plan Sekventiel søgning Binær søgning Binære søgetræer Balancerede binære søgetræer træer.
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Matematik B 1.
1 Vi ser nu på en general graf Men antager at alle afstande er heltallige (Det er ikke så restriktivt) Algoritmen leder efter den mindst mulige dækningsdistance.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
Grunde til at jeg elsker dig
1 Søgning. 2 Binære søgetræer og skiplister     S0S0 S1S1 S2S2 S3S3    2315.
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
1 Søgetræer. 2 Binære søgetræer Definition Operationer Balancerede binære søgetræer AVL-træer Rød-sort-træer (AA-træer) B-træer Plan.
Lektion 7 Læsestof: Kopier fra Caranno
Et eller andet datalogi…
Fundamentale datastrukturer
Design, verifikation og analyse
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
Grafalgoritmer II.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
1 Kap. 4, Jordens Tyngdefelt = Torge, 2001, Kap. 3. Tyngdekraftens retning og størrelse g (m/s 2 ) Acceleration Tyngdepotentialet (W): evene til at udføre.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
Eksempler på en beregningsprocess… Puslespil ved ombytninger Maximum delsum.
1 Center problems Placer et givet antal nye faciliteter Alt efterspørgsel skal dækkes Dækningsdistancen skal minimeres.
Et eller andet datalogi… Gerth Stølting Brodal Institut for Datalogi Aarhus Universitet Voronoi Diagrammer Datalogi, Studiestart 2013.
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Grundlæggende Algoritmer og Datastrukturer
Præsentationens transcript:

1 Algoritmisk geometri

2 Intervalsøgning

3 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Alder Løn Ansættelsesdato Ansat post i databasen Antag, at vi ønsker at finde alle ansatte med en løn i intervallet [20000, 50000] Vi kan undersøge samtlige poster og udtage dem, hvor lønnen ligger i dette interval Men hvis databasen er stor, er denne fremgangsmåde for langsom Det samme gør sig gældende, hvis vi ønsker at finde alle ansatte, for hvilke Løn  [20000, 50000] ^ Alder  [25, 40]

4 Intervalsøgning Vi kan opfatte en ansat som et punkt i et 3-dimensionalt rum Alder: [15, 67] Løn: [0, ] Ansættelsesdato: [1/1 1900, 1/1 2100] Alder Løn Ansættelsesdato

5 Ortogonal intervalsøgning … … Alder Løn i 1000 kr Forespørgsel (Løn , Alder 25-40) Vi kan opnå hurtigere søgning end lineært gennemløb ved hjælp af passende datastrukturer Vi vil tilstræbe O(log n + s) køretid, hvor s er antallet af fundne elementer

6 1-dimensional intervalsøgning Data: Punkter P = {p 1, p 2,.., p n } i 1 dimension (mængde af reelle tal) Forespørgsel: Find alle punkter i et 1-dimensionalt interval, [x 1, x 2 ] Datastruktur 1: Sorteret array Algoritme: 1.Søg efter x 1 og x 2 ved binær søgning. Køretid O(log n) 2.Udskriv alle punkter imellem dem.Køretid O(s) Samlet køretid O(log n + s)

7 1-dimensional intervalsøgning (fortsat) Datastruktur 2: Balanceret binært søgetræ (f.eks. et rød-sort-træ) De interne knuder indeholder nøglerne og bruges til at styre søgningen Algoritme: Benyt rekursion startende i roden Når en intern knude v mødes gøres følgende: (1) hvis key(v) < x 1, så søg rekursivt i v’s højre barn (2) hvis x 1 ≤ key(v) ≤ x 2, så søg rekursivt i begge v’s børn (3) hvis key(v) > x 2, så søg rekursivt i v’s venstre barn key(v)

8 Algoritme til 1-dimensional intervalsøgning Algorithm 1DTreeRangeSearch(x 1, x 2, v) Input Search keys x 1 and x 2, and a node v of a binary search tree T Output The elements stored in the subtree of T rooted at v, whose keys are greater than or equal to x 1 and less than or equal to x 2 if T.isExternal(v) then return Ø if x 1 ≤ key(v) ≤ x 2 then L  1DTreeRangeSearch(x 1, x 2, T.leftChild(v)) R  1DTreeRangeSearch(x 1, x 2, T.rightChild(v)) return L  {element(v)}  R else if key(v) < x 1 then return 1DTreeRangeSearch(x 1, x 2, T.rightChild(v)) else if x 2 < key(v) then return 1DTreeRangeSearch(x 1, x 2, T.leftChild(v))

9 1-dimensional intervalsøgning (Eksempel: søgning for x 1 = 30 og x 2 = 80)

10 Analyse Balanceret binært søgetræ: Pladsforbrug: O(n) Tid for konstruktion: O(n log n) Tid for forespørgsel: Vi besøger s knuder inden for intervallet Vi besøger højst 2h knuder, som ikke er i intervallet (de stiplede knuder på forrige figur), hvor h er træets højde Da træet er balanceret, h er O(log n), er køretiden for søgning O(log n + s)

11 2-dimensional intervalsøgning TxTx Ty(v)Ty(v) v Lad T x være et 1-dimensionalt intervaltræ baseret på punkternes x-koordinater Knyt til hver interne knude v i T x et 1-dimensionalt træ T y (v), der indeholder knuderne i undertræet for v og er ordnet efter disses y-koordinat Søg i T x efter punkter i intervallet [x 1, x 2 ] Undervejs opsamles de knuder, der tilhører [x 1, x 2 ] x [y 1, y 2 ] Når algoritmen møder en knude, v, hvor alle knuder i dens undertræ tilhører [x 1, x 2 ], søges i det tilknyttede hjælpetræ, T y (v) Efterkommere til v i T x undersøges ikke

12 2-dimensional intervalsøgning x1x1 x2x2 y1y1 y2y2

13 Algoritme til 2-dimensional intervalsøgning Algorithm 2DTreeRangeSearch(x 1, x 2, y 1, y 2, v, t) Input Search keys x 1, x 2, y 1, and y 2 ; node v in the primary structure T of a two-dimensional range tree; type t of node v Output The items in the subtree rooted at v, whose coordinates are in the x-range [x 1,x 2 ] and in the y-range [y 1,y 2 ] if T.isExternal(v) then return Ø if x 1 ≤ x(v) ≤ x 2 then if y 1 ≤ y(v) ≤ y 2 then M  {element(v)} else M  Ø { to be continued on next page }

14 if t = “left” then L  2DRangeSearch(x 1, x 2, y 1, y 2, T.leftChild(v), “left”) R  1DRangeSearch(y 1, y 2, T.rightChild(v)) else if t = “right” then L  1DRangeSearch(y 1, y 2, T.leftChild(v)) R  2DRangeSearch(x 1, x 2, y 1, y 2, T.rightChild(v), “right”) else if t = “middle” then L  2DRangeSearch(x 1, x 2, y 1, y 2, T.leftChild(v), “left”) R  2DRangeSearch(x 1, x 2, y 1, y 2, T.rightChild(v), “right”) else { x(v) x 2 } M  Ø if x(v) < x 1 then L  Ø R  2DRangeSearch(x 1, x 2, y 1, y 2, T.rightChild(v), t) else { x(v) > x 2 } L  2DRangeSearch(x 1, x 2, y 1, y 2, T.leftChild(v), t) R  Ø return L  M  R

15 Et 2D-intervaltræ bruger O(n log n) plads Bevis: Et punkt, der lagres i T x, lagres også i enhver hjælpestruktur T y (u), hvor u er en forfader til v i T x Der er O(log n) forfædre for hver knude, og derfor O(log n) kopier af ethvert punkt Analyse (plads)

16 Søgning i et 2D-intervaltræ bruger O(log 2 n + s) tid, hvor s er antallet af fundne punkter Bevis: Tidsforbruget for knuder på de to søgeveje er O(log n) For hver af de indvendige knuder, der er børn af knuder på de to søgeveje, besøges deres hjælpetræ Der er O(log n) af denne type knuder, og hver søgning i et hjælpetræ bruger O(log n) tid Analyse (tid)

17 Prioritetsøgetræer Et prioritetsøgetræ er et træ, der er et binært søgetræ med hensyn til punkternes x-koordinat og en max-hob med hensyn punkternes y-koordinat I et sådan træ indeholder roden (1) det punkt, der har den største y-koordinat samt (2) medianen for punkternes x-koordinater (bemærk, at denne værdi ikke behøver at være x-koordinaten for punktet) Det venstre og højre undertræ er begge prioritetstræer og repræsenterer punkter med x-koordinat mindre end, henholdsvis større end, medianen

18 Prioritetsøgetræer Konstruktion Et priorioritetsøgetræ kan konstrueres i O(n log n) tid Bevis: Punkterne sorteres først i forhold til deres x-koordinat. Det kan gøres i O(n log n) tid Medianen for punkternes x-kordinater kan bestemmes i O(1) tid Punktet med størst y-koordinat kan bestemmes i O(n) tid Dermed er roden bestemt, og dennes venstre og højre undertræ kan bestemmes på samme måde (rekursivt, ud fra to punktmængder, der hver er cirka halvt så stor som den oprindelige punktmængde) Køretiden for konstruktion T(n) kan derfor udtrykkes ved rekursionsligningen T(n) = 2T(n/2) + bn, T(1) = b Ved brug af mestersætningen får vi, at T(n) er O(n log n)

19 Prioritetsøgetræer Søgning Et prioritetsøgetræ kan benyttes til at finde alle punkter i et område af formen [x 1, x 2 ] x [y 1,  ) Søgningen foretages som en normal 1-dimensional intervalsøgning efter [x 1, x 2 ], men et undertræ for en knude v undersøges kun, hvis y(v) ≥ y 1 Søgningen bruger O(log n + s) tid, hvor s er antallet af fundne punkter

20 Prioritetintervaltræ Hvad gør vi, hvis ønsker at søge i et område af formen [x 1, x 2 ] x [y 1, y 2 ]? Benyt et prioritetintervaltræ, d.v.s. et binært søgetræ for y-koordinaterne, hvor der til alle interne knuder, undtagen roden, er knyttet et prioritettræ Et venstre barn har et prioritetsøgetræ, der ikke er opad begrænset Et højre barn har et et prioritetsøgetræ, der ikke er nedad begrænset Forælderen tjener som den manglende grænse ved søgningen, så den 3-sidede søgning er tilstrækkelig Søgning bruger O(log n + s) tid, hvor s er antallet af fundne punkter

21 Quad-træer Et quad-træ kan bruges til at gemme punkter i planet, således at intervalsøgning bliver let Der benyttes et 4-vejs træ, der repræsenterer kvadranter, delkvadranter, o.s.v. Da træets dybde afhænger af punkternes nærhed, kan det være meget dybt. Sædvanligvis angives derfor en maksimal dybde, D, for træet j f l i bd k m a e c g h ab c d e f gh ijklm

22 Søgning i quad-træer Ved søgning efter punkter i et område R undersøges hvert delkvadrant, der overlapper R Når R omslutter et delkvadrant, opregner vi blot alle de eksterne knuder, der er efterkommere af knuden Når quad-træet har begrænset dybde, D, er køretiden for søgning O(Dn). Hele træet traverseres i værste tilfælde

23 k-d-træer Et k-d-træ er en generalisering af et 1D-områdetræ til højere dimensioner Et k-d-træ er et binært træ, hvor hver interne knuder repræsenterer en opsplitning af punkterne i en given dimension, og de eksterne knuder indeholder punkterne To typer af k-d-træer: Interval-baserede (opsplitning i forhold til den længste side i rektanglet) Punkt-baserede (opsplitning i forhold til fordeling af punkter i rektanglet) egcpjfnlhakmibod j f l ib d k m a e c h n o p g

24 l1l1 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 Konstruktion af k-d-Tree (punktbaseret)

25 Konstruktion af k-d-Tree l1l1 l2l2 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2

26 Konstruktion af k-d-Tree l1l1 l2l2 l3l3 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3

27 Konstruktion af k-d-Tree l1l1 l2l2 l3l3 l4l4 P1P1 P2P2 P3P3 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3 l4l4

28 Konstruktion af k-d-Tree l1l1 l2l2 l3l3 l5l5 l4l4 P1P1 P2P2 P3P3 P4P4 P5P5 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3 l4l4 l5l5

29 Konstruktion af k-d-Tree P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3 l4l4 l5l5 l1l1 l2l2 l6l6 l3l3 l5l5 l5l5 P1P1 P2P2 P3P3 P4P4 P5P5 l6l6

30 Konstruktion af k-d-Tree P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3 l4l4 l5l5 l6l6 l1l1 l2l2 l6l6 l3l3 l5l5 l7l7 l4l4 P1P1 P2P2 P3P3 P4P4 P5P5 l7l7

31 Konstruktion af k-d-Tree l1l1 l2l2 l6l6 l3l3 l5l5 l7l7 l4l4 l8l8 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 P 10 l1l1 l2l2 l3l3 l4l4 l5l5 l6l6 l8l8 l7l7

32 Konstruktion af k-d-Tree l1l1 l2l2 l6l6 l3l3 l5l5 l7l7 l9l9 l4l4 l8l8 P1P1 P2P2 P3P3 P4P4 P5P5 P6P6 P7P7 P8P8 P9P9 P 10 P1P1 P4P4 P6P6 P2P2 P3P3 P8P8 P5P5 P7P7 P9P9 l1l1 l2l2 l3l3 l4l4 l5l5 l6l6 l8l8 l7l7 l9l9

33 Konstruktion af et k-d-træ kan foretages i O(n log n) tid Medianbestemmelse kan ske med Quickselect i lineær tid Søgning kan i værste tilfælde være O(dn), men i praksis er søgning hurtig Et k-d-træ kan benyttes til at finde nærmeste nabo til et punkt: (1) Find ved søgning efter punktet et lille rektangel, der indeholder punktet (2) Benyt dette rektangel til en intervalsøgning. Formindsk om muligt rektanglet undervejs Køretiden er typisk O(log n) Kompleksitet