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

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

Algoritmisk geometri

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

Søgning og Sortering. Philip Bille

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

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

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

Sortering. Eksempel: De n tal i sorteret orden

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

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Danmarks Tekniske Universitet

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

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.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Sortering af information er en fundamental og central opgave.

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

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

BRP Sortering og søgning. Hægtede lister

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Danmarks Tekniske Universitet

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.

Danmarks Tekniske Universitet

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

Sortering ved fletning (merge-sort)

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Planfejning. Skæring. Geometrisk skæring. Anvendelser

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: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Affine transformationer/afbildninger

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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

Netværksalgoritmer 1

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

Mindste udspændende træ

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

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)

Danmarks Tekniske Universitet

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

Sortering i lineær tid

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Introduktion til GeoGebra

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Prioritetskøer og hobe. Philip Bille

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

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

Datastrukturer (recap)

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

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

Værktøjskasse til analytisk Geometri

Afstandsformlen og Cirklens Ligning

Værktøjskasse til analytisk Geometri

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

Geometriske eksperimenter

Sådan gør du i GeoGebra.

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

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

Kompendium til Geogebra

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

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

Danmarks Tekniske Universitet

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

Projekt 1.4 Tagrendeproblemet en instruktiv øvelse i modellering med IT.

Introducerende undervisningsmateriale til Geogebra

Vektorer og lineær regression

Sådan kommer du i gang med GeomeTricks

Vektorer og lineær regression. Peter Harremoës Niels Brock

Grundlæggende køretidsanalyse af algoritmer

Tilhørende: Robert Nielsen, 8b. Geometribog. Indeholdende de vigtigste og mest basale begreber i den geometriske verden.

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

På opdagelse i GeoGebra

Undersøgelser af trekanter

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard

Stx matematik B maj 2009

Analytisk plangeometri 1

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

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

Transkript:

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

Anvendelser Design af integrerede kredsløb: Computergrafik (fjernelse af skjulte linjer) 4

Skæring af vandrette og lodrette linjestykker Givet: H = horisontale linjestykker V = vertikale linjestykker S = H V n = antallet af linjestykker, S Find alle par af skærende linjestykker (under antagelse af, at der ikke er sammenfaldende linjestykker) 5

Rå kraft algoritme for each h in H for each v in V if h intersects v report(h, v) Algoritmen kører i O(n H n V ) = O(n2 ) tid Men antallet af skæringer kan være meget mindre end O(n 2 ) Vi ønsker en uddatasensitiv algoritme med køretid f(n, s), hvor s er antallet af skæringer 6

Planfejning En lodret feje-linje l afsøger området fra venstre mod højre, startende til venstre for alle inddatapunkter Under afsøgningen benyttes en ordbog, S, der indeholder alle de vandrette linjestykker, der skæres af l, sorteret i stigende rækkefølge med hensyn til deres y-koordinat Et vandret linjestykke indsættes i S, når l møder dets venstre endepunkt. Et vandret linjestykke fjernes fra S, når l møder dets højre endepunkt l 7

Ændringer i ordbogen h 3 h 2 h 1 S: () (h 3 )(h 1, h 3 ) (h 1, h 2, h 3 ) (h 2, h 3 ) (h 3 ) () 8

1-dimensional områdesøgning benyttes til at bestemme skæringer y 2 y 1 Når et lodret linjestykke mødes, foretages omådesøgning i S med et interval, der er givet ved y-koordinaterne for linjestykkets to endepunkter 9

Hændelser og aktioner Hændelse Et venstre endepunkt for et vandret linjestykke h mødes Et højre endepunkt for et vandret linjestykke h mødes Et lodret linjestykke v mødes Aktion Indsæt h i ordbogen S Fjern h fra ordbogen S Foretag områdesøgning med intervalgrænser givet ved y-koordinaterne for v s endepunkter 10

Datastrukturer Ordbogen skal indeholde vandrette linjestykker skal muliggøre indsættelse, fjernelse og områdesøgning Løsning: et AVL-træ eller et rød-sort-træ (nøglerne er y-koordinaterne) Handlingsplanen skal indeholde x-koordinaterne for hændelserne i den rækkefølge, de indtræffer skal muliggøre et sekventiel gennemløb Løsning: et array eller en liste, der er sorteret med hensyn til hændelsernes x-koordinat 11

Tidskompleksitet Sortering af hændelser O(n log n) Hændelser Venstre endepunkt for vandret linje Højre endepunkt for vandret linje Lodret linje Antal n Tid for hver indsættelse i S: O(log n) Antal n Tid for hver fjernelse fra S: O(log n) Antal n Tid for områdesøgning: O(log n + s h (v)) Samlet tidskompleksitet: O(n log n + Σ v V s h (v))) = O(n log n + s) 12

Konvekst hylster forhinding start slut 13

Konveks polygon En konveks polygon er en polygon uden skæringer, hvis indre vinkler alle er konvekse (d.v.s. mindre end π = 180 ) I en konveks polygon ligger ethvert linjestykke, der forbinder to knuder, helt inden for polygonen konveks ikke-konveks 14

Konvekst hylster Det konvekse hylster for en mængde af punkter er den mindste konvekse polygon, der indeholder punkterne Tænk på en elastik, der lægges stramt rundt om punkterne 15

Specialtilfælde Det konvekse hylster er et linjestykke To punkter Alle punkter ligger på linje Det konvekse hylster er et punkt Der er kun ét punkt Alle punkter er sammenfaldende 16

Anvendelser Planlægning af bevægelse Find en optimal rute for en robot, der undgår forhindringer Geometriske algoritmer Bestemmelse af det konvekse hylster er en form for to-dimensional sortering forhindring start slut 17

Bestemmelse af det konvekse hylster Nedenstående metode bestemmer det konvekse hylster for en mængde af punkter: Fase 1: Find det laveste punkt (ankerpunktet) Fase 2: Dan en ikke-skærende polygon ved at sortere punkterne imod uret rundt om ankerpunktet Fase 3: Så længe polygonen har et ikke-konvekst hjørne, så fjern det 18

Orientering Orienteringen af tre punkter i planet er med uret, mod uret og på linje b orientation(a, b, c) med uret (CW, drej højre om) mod uret (CCW, drej venstre om) på line (COLL, ingen drejning) a c c CW!(a,b,c) > 0 Orienteringen af tre punkter er karakteriseret ved fortegnet af determinanten, hvis absolutte værdi er det dobbelte areal af trekanten med hjørner a, b og c a b CCW!(a,b,c) < 0!(a,b,c) = x a y a 1 x b y b 1 x c y c 1 = x a y b " x b y a + x c y a " x a y c + x b y c " x c y b a b c COLL!(a,b,c) = 0 19

Sortering efter vinkel Bestemmelse af vinkler ud fra koordinater er besværlig og fører til numerisk unøjagtighed Vi kan sortere punkterne efter deres vinkel med hensyn til ankerpunktet a ved hjælp af en comparator-baseret sammenligningsfunktion: b < c orientation(a, b, c) = CCW b = c orientation(a, b, c) = COLL b > c orientation(a, b, c) = CW c CCW b c COLL b b CW c a a a 20

Fjernelse af ikke-konvekse hjørner Afgørelse af, om hjørnet er konvekst, kan foretages ved brug af orienteringsfunktionen: Lad p, q og r være tre konsekutive hjørner for polygonen i rækkefølge mod uret q konveks orientation(p, q, r) = CCW q ikke-konveks orientation(p, q, r) = CW eller COLL r r q q p p 21

Graham-afsøgning Graham-afsøgning er en systematisk procedure til at fjerne ikke-konvekse hjørner fra en polygon Polygonen traverseres imod uret, og en sekvens H af hjørner vedligeholdes for each vertex r of the polygon Let q and p be the last and second last vertex of H while orientation(p, q, r) = CW or COLL remove q from H q p p vertex preceding p in H Add r to the end of H r p r q p r q p q H H H 22

Analyse Bestemmelse af det konvekse hylster for en mængde af punkter tager O(n log n) tid: Bestemmelse af ankerpunktet tager O(n) tid Sortering af punkterne imod uret omkring ankerpunktet tager O(n log n) tid Brug orienterings-comparatoren og en hvilken som helst sorteringsalgoritme, der kører i O(n log n) tid (f.eks., heap-sort eller merge-sort) Graham-afsøgningen tager O(n) tid Ethvert punkt indsættes netop en gang i sekvensen H Ethvert hjørne fjernes højest én gang fra sekvensen H 23

Nærmeste par af punkter 24

Nærmeste punkter Givet en mængde, P, af n punkter i planet (f.eks. byer i Danmark, computere i et netværk, transistorer på en printplade) Find to punkter, p og q, hvis indbyrdes afstand, dist(p, q), er minimal Algoritmer: rå kraft O(n 2 ) planfejning O(n log n) del-og-hersk O(n log n) p q 25

Rå kraft Beregn alle afstande og vælg den mindste (x 1, y 1 ) p 1 p 2 (x 2, y 2 ) dist(p 1, p 2 ) = (x 2! x 1 ) 2 + (y 2! y 1 ) 2 Tidskompleksitet: O(n 2 ) 26

Planfejning fejelinje Vi behøver ikke at beregne alle afstande Planfejning kan benyttes. Vi udnytter følgende observation: Hvis det nærmeste par af punkter til venstre for fejelinjen har en afstand på d, kan det næste punkt, der mødes af linjen ikke være nærmeste par med et punkt, der ligger mere end d enheder til venstre for linjen d d 27

Lagret information Vedligehold følgende information: nærmeste par (p, q) af punkter, der er fundet indtil nu, samt deres afstand, d ordnet ordbog, S, af alle de punkter, der ligger i bæltet med bredde d enheder til venstre for fejelinjen, idet deres y-koordinat bruges som nøgle d fejelinje d 28

Opdatering Når fejelinjen møder et punkt, p: (1) Fjern alle punkter, r, hvor x(p) - x(r) d (2) Find det nærmeste punkt, q, til p ved søgning i S (3) Hvis dist(p, q) < d, så opdater det aktuelt nærmeste par og d (4) Indsæt p i S 29

Søgning i ordbogen Hvor hurtigt kan vi søge i ordbogen? Bemærk: der kan være O(n) punkter i ordbogen! I stedet for at søge i hele bæltet, kan vi nøjes med at søge i en halvcirkel med centrum i p og radius d p d 30

Søgning i ordbogen (fortsat) Hvorledes kan vi søge i en halvcirkel? Et rektangel er næsten en halvcirkel Foretag en områdesøgning i intervallet [y(p) - d, y(p) + d] Brug rå kraft til søgning blandt de punkter, der blev resultatet af områdesøgningen Kan der ikke være mange punkter at søge i? 2d p Nej, områdesøgningen kan aldrig resultere i mere end 6 punkter (bevis herfor baseres på, at ethvert par af punkter i S har en afstand på mindst d) d 31

Tidskompleksitet Sortering af hændelser O(n log n) Hvert punkt indsættes og fjernes Samlet tid for indsættelse og fjernelse: fra S præcis en gang O(n log n) Der søges i ordbogen, hver gang Hver forespørgsel tager O(log n + 6) tid et punkt indsættes i S Samlet tid for forespørgsel: O(n log n) Afstandsberegninger O(6n) Samlet tidskompleksitet: O(n log n) 32

Del og hersk Sorter punkterne efter deres x-koordinat og opdel punktmængden i to halvdele Det nærmeste par er i en af de to halvdele eller har et punkt i hver af de to halvdele P l P r 33

Del og hersk (2) P l P r Fase 1: Sorter punkterne efter deres x-koordinat Opdel punktmængden i to halvdele: p 1, p 2,... p n/2... p n/2 + 1,..., p n x 1 x 2 x n/2 x n/2+1 x n 34

Del og hersk (3) Fase 2: Bestem rekursivt de to nærmeste par og deres indbyrdes afstande, d l og d r, i hver af de to halvdele Find det nærmeste par og deres indbyrdes afstand, d m, i det centrale bælte af bredde 2d, hvor d = min{d l, d r } Returner min{d m, d l, d r } P l 2d P r 35

Del og hersk (4) For ethvert punkt p i bæltet undersøges afstanden til de punkter, der ligger i intervallet [y(p) - d, y(p)] Der er højst 4 sådanne punkter d Benyt en liste af punkterne sorteret efter deres x-koordinat og en liste af punkterne sorteret efter deres y-koordinat Tidskompleksitet: Fase 1: Sortering: O(n log n) Fase 2: Rekursionsligning T(n) = 2T(n/2) + n. Vi får T(n) er O(n log n) Samlet tid: O(n log n) P l 2d P r 36

M. Escher: Concave and Convex 37