html5-img
1 / 31

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

zlata
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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)

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

  4. 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í)

  5. 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 - 

  6. Algoritmické techniky – paradigmata • Řazení • Zametací technika (plane sweep) • Rozděl a panuj (divide and conquer) • Geometrické místo (Locus approach)

  7. Řazení

  8. Ř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

  9. Konvexní obálka = nejmenší konvexní mnohoúhelník, který obsahuje všechny body Convex HullCH(V )

  10. Grahamův algoritmus 1/2 1. 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í p p p p p p p p p i-1 i i+1 i-1 i i+1 i-1 i i+1

  11. p i a b p p i-1 i+1 Grahamův algoritmus 2/2 Kontrola ú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 )=> celkemO( n log n )

  12. Jarvisův algoritmus balení dárku (gift wrapping) 1. Vezmeme bod ps 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=> celkemO( k*n ) vhodný pro málo bodů na konvexním obalu

  13. Zametací technikaPlane sweep

  14. 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

  15. Minimální body Od 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

  16. 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ů

  17. Průsečíky úseček • Inicializace • koncové body –> B • T prázdné B: AL,BL, CL,CR, AR,BR T: prázdná1 BL AR b ? CL c ? a CR AL BR b 1 2 3 4 5 6 7 8

  18. Průsečíky úseček 2. 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 ...

  19. 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 s2do B

  20. BL AR b ? CL c ? a AL CR 1 2 3 4 5 6 7 8 Průsečíky úseček B0: AL,BL, CL,CR,AR,BR T0: prázdná 1. AL B1: BL, CL,CR,AR,BR T1: a BR

  21. BL AR b CL c ? a AL CR 1 2 3 4 5 6 7 8 Průsečíky úseček 2. BL p1= s1x s = a x b ... vložit B2: CL,p1, CR, AR,BR T2: a, b s1 s p1 BR

  22. BL AR b CL c a AL CR 1 2 3 4 5 6 7 8 Průsečíky úseček 2. BL B2: CL,p1, CR, AR,BR T2: a, b 3. CL p1= s1x s2 = a x b...smazat p2= s1x s = a x c ... vložit B3: p2, CR, AR,BR T3: a, c, b s1 s s2 p1 p2 BR

  23. Průsečíky úseček • průsečík úseček s a s’ • Najdi v T sousedy sa s’(úsečky s1 a s2) • prohoď sa 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 as’ x s1do B

  24. BL AR b CL c a AL CR 1 2 3 4 5 6 7 8 Průsečíky úseček 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

  25. 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

  26. BL AR b CL c a AL CR 1 2 3 4 5 6 7 8 Průsečíky úseček 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

  27. Průsečíky úseček • Paměť O(n) • Operační složitost • n+k poloh • každá log n => O(k+n) log n

  28. Rozděl a panuj Divide and conquer

  29. Viditelnost objektů • na tabuli • 2n+1 hranic

  30. Geometrické místoLocus approach

  31. Voronoiův diagram • viz průsvitky

More Related