Plnfejning Skæring 1 2 Geometrisk skæring Anvenelser Afgørelse f om er fines skæringer lnt geometriske ojekter Bestemmelse f lle skæringsunkter Design f integreree kreslø: Løsningsmetoer: Rå krft Plnfejning (eng. lne swee) 3 Comutergrfik (fjernelse f skjulte linjer) 4
Skæring f vnrette og lorette linjestykker Rå krft lgoritme Givet: H = horisontle linjestykker V = vertikle linjestykker S = H! V n = ntllet f linjestykker, S Fin lle r f skærene linjestykker (uner ntgelse f, t er ikke er smmenflene linjestykker) for eh h in H for eh v in V if h intersets v reort(h, v) Algoritmen kører i O(n H " n V ) = O(n2 ) ti Men ntllet f skæringer kn være meget minre en O(n 2 ) Vi ønsker en utsensitiv lgoritme me køreti f(n, s), hvor s er ntllet f skæringer 5 6 Plnfejning Ænringer i orogen En loret feje-linje l fsøger områet fr venstre mo højre, strtene til venstre for lle intunkter Uner fsøgningen enyttes en orog, S, er ineholer lle e vnrette linjestykker, er skæres f l, sorteret i stigene rækkefølge me hensyn til eres y-koorint h 3 h 2 h 1 Et vnret linjestykke insættes i S, når l møer ets venstre eneunkt. Et vnret linjestykke fjernes fr S, når l møer ets højre eneunkt l S: () (h 3 )(h 1, h 3 ) (h 1, h 2, h 3 ) (h 2, h 3 ) (h 3 ) () 7 8
1-imensionl områesøgning enyttes til t estemme skæringer Hænelser og ktioner y 2 y 1 Når et loret linjestykke møes, foretges omåesøgning i S me et intervl, er er givet ve y-koorinterne for linjestykkets to eneunkter Hænelse Et venstre eneunkt for et vnret linjestykke h møes Et højre eneunkt for et vnret linjestykke h møes Et loret linjestykke v møes Aktion Insæt h i orogen S Fjern h fr orogen S Foretg områesøgning me intervlgrænser givet ve y-koorinterne for v s eneunkter 9 10 Dtstrukturer Tiskomleksitet Orogen skl inehole vnrette linjestykker skl muliggøre insættelse, fjernelse og områesøgning Løsning: et AVL-træ eller et rø-sort-træ (nøglerne er y-koorinterne) Sortering f hænelser O(n log n) Hænelser Venstre eneunkt for vnret linje Antl! n Ti for hver insættelse i S: O(log n) Hnlingslnen skl inehole x-koorinterne for hænelserne i en rækkefølge, e intræffer skl muliggøre et sekventiel gennemlø Højre eneunkt for vnret linje Loret linje Antl! n Ti for hver fjernelse fr S: O(log n) Antl! n Ti for områesøgning: O(log n + s h (v)) Løsning: et rry eller en liste, er er sorteret me hensyn til hænelsernes x-koorint Smlet tiskomleksitet: O(n log n + # v!v s h (v))) = O(n log n + s) 11 12
Konveks olygon Konvekst hylster En konveks olygon er en olygon uen skæringer, hvis inre vinkler lle er konvekse (.v.s. minre en " = 180 ) I en konveks olygon ligger ethvert linjestykke, er foriner to knuer, helt inen for olygonen forhining strt slut konveks ikke-konveks 13 14 Konvekst hylster Det konvekse hylster for en mænge f unkter er en minste konvekse olygon, er ineholer unkterne Tænk å en elstik, er lægges strmt runt om unkterne Det konvekse hylster er et linjestykke To unkter Alle unkter ligger å linje Seiltilfæle Det konvekse hylster er et unkt Der er kun ét unkt Alle unkter er smmenflene 15 16
Anvenelser Plnlægning f evægelse Fin en otiml rute for en root, er ungår forhinringer Geometriske lgoritmer Bestemmelse f et konvekse hylster er en form for to-imensionl sortering Bestemmelse f et konvekse hylster Neenståene metoe estemmer et konvekse hylster for en mænge f unkter: Fse 1: Fin et lveste unkt (nkerunktet) Fse 2: Dn en ikke-skærene olygon ve t sortere unkterne imo uret runt om nkerunktet Fse 3: Så længe olygonen hr et ikke-konvekst hjørne, så fjern et strt forhinring slut 17 18 Orientering Sortering efter vinkel Orienteringen f tre unkter i lnet er me uret, mo uret og å linje orienttion(,, ) me uret (CW, rej højre om) mo uret (CCW, rej venstre om) å line (COLL, ingen rejning) Orienteringen f tre unkter er krkteriseret ve fortegnet f eterminnten, hvis solutte væri er et oelte rel f treknten me hjørner, og x y 1!(,,) = x y 1 = x y " x y + x y " x y + x y " x y x y 1 CW!(,,) > 0 CCW!(,,) < 0 COLL!(,,) = 0 19 Bestemmelse f vinkler u fr koorinter er esværlig og fører til numerisk unøjgtighe Vi kn sortere unkterne efter eres vinkel me hensyn til nkerunktet ve hjæl f en omrtor-seret smmenligningsfunktion: < $ orienttion(,, ) = CCW = $ orienttion(,, ) = COLL > $ orienttion(,, ) = CW CCW COLL CW 20
Fjernelse f ikke-konvekse hjørner Grhm-fsøgning Afgørelse f, om hjørnet er konvekst, kn foretges ve rug f orienteringsfunktionen: L, og r være tre konsekutive hjørner for olygonen i rækkefølge mo uret konveks $ orienttion(,, r) = CCW ikke-konveks $ orienttion(,, r) = CW eller COLL Grhm-fsøgning er en systemtisk roeure til t fjerne ikke-konvekse hjørner fr en olygon Polygonen trverseres imo uret, og en sekvens H f hjørner veligeholes for eh vertex r of the olygon Let n e the lst n seon lst vertex of H while orienttion(,, r) = CW or COLL remove from H % % vertex reeing in H A r to the en of H r r r r r H H H 21 22 Anlyse Bestemmelse f et konvekse hylster for en mænge f unkter tger O(n log n) ti: Bestemmelse f nkerunktet tger O(n) ti Nærmeste r f unkter Sortering f unkterne imo uret omkring nkerunktet tger O(n log n) ti Brug orienterings-omrtoren og en hvilken som helst sorteringslgoritme, er kører i O(n log n) ti (f.eks., he-sort eller merge-sort) Grhm-fsøgningen tger O(n) ti Ethvert unkt insættes neto en gng i sekvensen H Ethvert hjørne fjernes højest én gng fr sekvensen H 23 24
Nærmeste unkter Rå krft Beregn lle fstne og vælg en minste Givet en mænge, P, f n unkter i lnet (f.eks. yer i Dnmrk, omutere i et netværk, trnsistorer å en rintle) Fin to unkter, og, hvis inyres fstn, ist(, ), er miniml Algoritmer: rå krft O(n 2 ) lnfejning O(n log n) el-og-hersk O(n log n) (x 1, y 1 ) (x 2, y 2 ) 1 2 Tiskomleksitet: O(n 2 ) ist( 1, 2 ) = (x 2! x 1 ) 2 + (y 2! y 1 ) 2 25 26 Plnfejning Lgret informtion fejelinje Vi ehøver ikke t eregne lle fstne Plnfejning kn enyttes. Vi unytter følgene oservtion: Hvis et nærmeste r f unkter til venstre for fejelinjen hr en fstn å, kn et næste unkt, er møes f linjen ikke være nærmeste r me et unkt, er ligger mere en enheer til venstre for linjen Veligehol følgene informtion: nærmeste r (, ) f unkter, er er funet intil nu, smt eres fstn, ornet orog, S, f lle e unkter, er ligger i æltet me ree enheer til venstre for fejelinjen, iet eres y-koorint ruges som nøgle fejelinje 27 28
Otering Søgning i orogen Når fejelinjen møer et unkt, : (1) Fjern lle unkter, r, hvor x() - x(r) # (2) Fin et nærmeste unkt,, til ve søgning i S (3) Hvis ist(, ) <, så oter et ktuelt nærmeste r og (4) Insæt i S Hvor hurtigt kn vi søge i orogen? Bemærk: er kn være O(n) unkter i orogen! I steet for t søge i hele æltet, kn vi nøjes me t søge i en hlvirkel me entrum i og rius 29 30 Søgning i orogen (fortst) Tiskomleksitet Hvorlees kn vi søge i en hlvirkel? Sortering f hænelser O(n log n) Et rektngel er næsten en hlvirkel Foretg en områesøgning i intervllet [y() -, y() + ] Hvert unkt insættes og fjernes Smlet ti for insættelse og fjernelse: fr S ræis en gng O(n log n) Brug rå krft til søgning lnt e unkter, er lev resulttet f områesøgningen Der søges i orogen, hver gng Hver foresørgsel tger O(log n + 6) ti et unkt insættes i S Smlet ti for foresørgsel: O(n log n) Kn er ikke være mnge unkter t søge i? 2 Afstnseregninger O(6n) Nej, områesøgningen kn lrig resultere i mere en 6 unkter (evis herfor seres å, t ethvert r f unkter i S hr en fstn å minst ) Smlet tiskomleksitet: O(n log n) 31 32
Del og hersk Del og hersk (2) P l P r Sorter unkterne efter eres x-koorint og oel unktmængen i to hlvele Det nærmeste r er i en f e to hlvele eller hr et unkt i hver f e to hlvele Fse 1: Sorter unkterne efter eres x-koorint Oel unktmængen i to hlvele: 1, 2,... n/2... n/2 + 1,..., n P l P r x 1 x 2 x n/2 x n/2+1 x n 33 34 Del og hersk (3) Del og hersk (4) Fse 2: Bestem rekursivt e to nærmeste r og eres inyres fstne, l og r, i hver f e to hlvele Fin et nærmeste r og eres inyres fstn, m, i et entrle ælte f ree 2, hvor = min{ l, r } Returner min{ m, l, r } P l 2 P r For ethvert unkt i æltet unersøges fstnen til e unkter, er ligger i intervllet [y() -, y()] Der er højst 4 sånne unkter Benyt en liste f unkterne sorteret efter eres x-koorint og en liste f unkterne sorteret efter eres y-koorint Tiskomleksitet: Fse 1: Sortering: O(n log n) Fse 2: Rekursionsligning T(n) = 2T(n/2) + n. Vi får T(n) er O(n log n) Smlet ti: O(n log n) P l 2 P r 35 36
M. Esher: Conve n Convex 37