31
Datové struktury a algoritmy Část 12 Výpočetní geometrie Computational Geometry Petr Felkel

Datové struktury a algoritmy Část 12 Výpočetní geometrie Computational Geometry

  • Upload
    zlata

  • View
    53

  • Download
    0

Embed Size (px)

DESCRIPTION

Datové struktury a algoritmy Část 12 Výpočetní geometrie Computational Geometry. Petr Felkel. Výpočetní geometrie (CG). Úvod Algoritmické techniky – paradigmata řazení zametací technika ( scan-line ) rozděl a panuj ( divide and conquer ) geometrické místo ( L ocus approach ). - PowerPoint PPT Presentation

Citation preview

Page 1: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

Datové struktury a algoritmy

Část 12

Výpočetní geometrie Computational Geometry

Petr Felkel

Page 2: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

2 / 33 DSA

Výpočetní geometrie (CG)• Úvod

• Algoritmické techniky – paradigmata • řazení

• zametací technika (scan-line)

• rozděl a panuj (divide and conquer)

• geometrické místo (Locus approach)

Page 3: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

3 / 33 DSA

Výpočetní geometrie?• Vznikla v roce 1975 – M. I. Shamos

• Hledá optimální algoritmy pracující s geometrickými objekty• body, přímky, úsečky, mnohoúhelníky -

polygony

• Aplikace v řadě dalších oblastí:• databázové systémy, robotika, počítačová

grafika, počítačové vidění, rozpoznávání obrazců

• řadu problémů lze formulovat geometricky

Page 4: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

4 / 33 DSA

Výpočetní geometrie?• Charakteristická je

• velká probádanost algoritmů v rovině

• nárůst složitosti v prostoru či n-dimenzích

• méně znalostí o řešení v n-dimenzích

• Podle kompletnosti vstupu• off-line – data známe naráz

• on-line – data dodávána postupně(udržujeme řešení)

Page 5: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

5 / 33 DSA

Algoritmické techniky – paradigmata

= principy návrhu efektivních algoritmů, které zůstávají stejné i pro velmi odlišné aplikace

• hrubá síla – prohledá / zkusí všechno• efektivní algoritmus – co nejúspornější

• optimální algoritmus – dosáhl dolní meze složitosti -

Page 6: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

6 / 33 DSA

Algoritmické techniky – paradigmata

• Řazení

• Zametací technika (plane sweep)

• Rozděl a panuj (divide and conquer)

• Geometrické místo (Locus approach)

Page 7: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

Řazení

Page 8: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

8 / 33 DSA

Řazení• předzpracování dat, které

• vede k jednoduššímu zpracování

• typicky • podle některé ze souřadnic

(např. dle osy x či y)

• nebo dle úhlu kolem daného bodu/ů

• Př. konvexní obálka

Page 9: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

9 / 33 DSA

Konvexní obálka= nejmenší konvexní mnohoúhelník,

který obsahuje všechny body

Convex Hull CH(V )

Page 10: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

10 / 33 DSA

Grahamův algoritmus 1/21. Seřadíme body p V dle x;

2. Najdeme horní, pak dolní řetěz

a) pmin a pmax CH(V)

b) přidáme bod pi+1

c) kontrola úhlu (pi-1, pi, pi+1)

i=i-1 vypustíme pi

konvexní

konkávní

pi

pi+1

pi-1

pi

pi+1

pi-1

pi

pi+1

pi-1

Page 11: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

11 / 33 DSA

Grahamův algoritmus 2/2Kontrola úhlu (pi-1, pi, pi+1)

Vektorový součin b x a

xi+1 – xi yi+1 – yi > 0 => konvexní

xi – xi-1 yi – yi-1 < 0 => konkávní

Složitost

1. O( n log n )

2. O( n ) => celkem O( n log n )

pi

pi+1

pi-1

ba

Page 12: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

12 / 33 DSA

Jarvisův algoritmus balení dárku (gift wrapping)

1. Vezmeme bod p s minimální souřadnicí y a

vodorovnou přímku

2. Otáčíme přímku kolem p

dokud nenarazí na bod q

3. p = nový bod q

4. Dokud (p p0) jdi na 2

Složitost: O( n ) + O( n ) * k => celkem O( k*n ) vhodný pro málo bodů na konvexním obalu

B o d s m in .ú h lem

p0

p1

pk

Page 13: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

Zametací technikaPlane sweep

Page 14: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

14 / 33 DSA

Zametací technika – princip• Svislou přímku (scanline, SL, zametací přímku)

suneme zleva doprava přes množinu objektů

• Pamatujeme si informace o objektech nalevo od přímky (y-stuktura, T)

• Při průchodu nad objektem ji aktualizujeme

• Nesuneme se spojitě, ale skáčeme mezi body, kde je nutno zastavit

• Body jsou v prioritní frontě (x-struktura, B, postupový plán) – odebírám je zleva-doprava

Page 15: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

15 / 33 DSA

Minimální bodyOd nich nalevo ani dolů není žádný bod

1. Seřadíme body dle souřadnice x -> x-struktura

2. Inicializujeme y-strukturu na

3. Scanline umísťujeme zleva doprava do bodů v x-str.

4. Do y-strukt. ukládám minimální y-souřadnici

O(n log n) - řazení

O(1) na bod

Page 16: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

16 / 33 DSA

Průsečíky úseček• Vyloučení neviditelných ploch ze

zpracování

• T, y-str. = úsečky v pořadí průsečíků se SL

• B, x-struk., body, kde se mění pořadí úseček• na začátku koncové body

• průběžně průsečíky sousedů

Page 17: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

17 / 33 DSA

Průsečíky úseček

AL

AR

a

b

BL

BR

CL

CR

b

c

2 3 4 5 6 7 81

1. Inicializace

• koncové body –> B

• T prázdné

B: AL, BL, CL, CR, AR, BR

T: prázdná1

?

?

Page 18: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

18 / 33 DSA

Průsečíky úseček2. dokud není B prázdná

• vezmi bod p z B (a smaž ho v B)

• dle typu bodu p aktualizuj T strukturu:

• L ...

• P ...

• průsečík ...

Page 19: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

19 / 33 DSA

Průsečíky úseček• L

• Najdi v T sousedy s (úsečky s1 a s2)

(s je úsečka s počátečním bodem p)

• if( protíná s1 x s2 ) odstraň průsečík

(už nejsou sousedy)

• vlož průs. s1 x s a s x s2 do B

Page 20: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

20 / 33 DSA

Průsečíky úseček

AL

AR

a

BL

CL

CR

b

c

2 3 4 5 6 7 81

?

?

B0: AL,BL, CL,CR,AR,BR

T0: prázdná

1. AL

B1: BL, CL,CR,AR,BR

T1: aBR

Page 21: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

21 / 33 DSA

Průsečíky úseček

AL

AR

a

BL

CL

CR

b

c

2 3 4 5 6 7 81

?

2. BL

p1= s1 x s = a x b ... vložit

B2: CL,p1, CR, AR,BR

T2: a, b s1 s

p1

BR

Page 22: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

22 / 33 DSA

Průsečíky úseček

AL

AR

a

BL

CL

CR

b

c

2 3 4 5 6 7 81

2. BL

B2: CL,p1, CR, AR,BR

T2: a, b

3. CL

p1= s1 x s2 = a x b...smazat

p2= s1 x s = a x c ... vložit

B3: p2, CR, AR,BR

T3: a, c, b s1 s s2

p1

p2

BR

Page 23: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

23 / 33 DSA

Průsečíky úseček• průsečík úseček s a s’

• Najdi v T sousedy s a s’(úsečky s1 a s2)

• prohoď s a s’ v T

• if( protíná s x s1 ) odstraň průsečík z B

• if( protíná s’ x s2 ) odstraň průsečík z B

(už nejsou sousedy)

• vlož průs. s x s2 a s’ x s1 do B

Page 24: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

24 / 33 DSA

Průsečíky úseček

AL

AR

a

BL

CL

CR

b

c

2 3 4 5 6 7 81

B3: p2, CR, AR,BR

T3: a, c, b

4. p2 změna pořadí úseček a,c

B4: p1, CR, AR,BR

T4: c, a, b

5. p1 změna pořadí úseček a,b

B5: CR, AR,BR

T5: c, b, a

p1

p2

BR

Page 25: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

25 / 33 DSA

Průsečíky úseček• R

• Najdi v T sousedy s (úsečky s1 a s2)

(s je úsečka s koncovým bodem p)

• smaž s z T

• if( protíná s1 x s2 ) vlož průs do B

Page 26: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

26 / 33 DSA

Průsečíky úseček

AL

AR

a

BL

CL

CR

b

c

2 3 4 5 6 7 81

B5: CR, AR,BR

T5: c, b, a

6. CR

B6: AR,BR

T6: b, a

7. AR

B7: BR

T7: b

8. BR

B7: prázdná

T7: prázdná

p1

p2

BR

Page 27: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

27 / 33 DSA

Průsečíky úseček• Paměť O(n)

• Operační složitost• n+k poloh

• každá log n => O(k+n) log n

Page 28: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

Rozděl a panuj Divide and conquer

Page 29: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

29 / 33 DSA

Viditelnost objektů• na tabuli

• 2n+1 hranic

Page 30: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

Geometrické místoLocus approach

Page 31: Datové struktury a algoritmy Část 12 Výpočetní geometrie  Computational Geometry

31 / 33 DSA

Voronoiův diagram• viz průsvitky