Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Datové struktury a algoritmy Část 12 Výpočetní geometrie Computational Geometry Petr Felkel."— Transkript prezentace:

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

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

3 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

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

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

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

7 Řazení

8 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

9 9 / 33 DSA Konvexní obálka = nejmenší konvexní mnohoúhelník, který obsahuje všechny body Convex Hull CH(V )

10 10 / 33 DSA Grahamův algoritmus 1/2 1. Seřadíme body p  V dle x; 2. Najdeme horní, pak dolní řetěz a) p min a p max  CH(V) b) přidáme bod p i+1 c) kontrola úhlu (p i-1, p i, p i+1 ) i=i-1 vypustíme pi konvexní konkávní p i p i+1 p i-1 p i p i+1 p i-1 p i p i+1 p i-1

11 11 / 33 DSA Grahamův algoritmus 2/2 Kontrola úhlu (p i-1, p i, p i+1 ) Vektorový součin b x a x i+1 – x i y i+1 – y i > 0 => konvexní x i – x i-1 y i – y i-1 konkávní Složitost 1. O( n log n ) 2. O( n ) => celkem O( n log n ) p i p i+1 p i-1 b a

12 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  p 0 ) jdi na 2 Složitost: O( n ) + O( n ) * k => celkem O( k*n ) vhodný pro málo bodů na konvexním obalu

13 Zametací technika Plane sweep

14 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

15 15 / 33 DSA 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 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ů

17 17 / 33 DSA Průsečíky úseček ALAL ARAR a b BLBL BRBR CLCL CRCR b c Inicializace koncové body –> B T prázdné B: A L, B L, C L, C R, A R, B R T:prázdná1 ? ?

18 18 / 33 DSA 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 19 / 33 DSA Průsečíky úseček L Najdi v T sousedy s (úsečky s 1 a s 2 ) (s je úsečka s počátečním bodem p) if( protíná s 1 x s 2 ) odstraň průsečík (už nejsou sousedy) vlož průs. s 1 x s a s x s 2 do B

20 20 / 33 DSA Průsečíky úseček ALAL ARAR a BLBL CLCL CRCR b c ? ? B 0 : A L,B L, C L,C R,A R,B R T 0 :prázdná 1. A L B 1 : B L, C L,C R,A R,B R T 1 : a BRBR

21 21 / 33 DSA Průsečíky úseček ALAL ARAR a BLBL CLCL CRCR b c ? 2. B L p 1 = s 1 x s = a x b... vložit B 2 : C L,p 1, C R, A R,B R T 2 : a, b s 1 s p1p1 BRBR

22 22 / 33 DSA Průsečíky úseček ALAL ARAR a BLBL CLCL CRCR b c B L B 2 : C L,p 1, C R, A R,B R T 2 : a, b 3. C L p 1 = s 1 x s 2 = a x b...smazat p 2 = s 1 x s = a x c... vložit B 3 : p 2, C R, A R,B R T 3 : a, c, b s 1 s s 2 p1p1 p2p2 BRBR

23 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 s 1 a s 2 ) prohoď s a s’ v T if( protíná s x s 1 ) odstraň průsečík z B if( protíná s’ x s 2 ) odstraň průsečík z B (už nejsou sousedy) vlož průs. s x s 2 a s’ x s 1 do B

24 24 / 33 DSA Průsečíky úseček ALAL ARAR a BLBL CLCL CRCR b c B 3 : p 2, C R, A R,B R T 3 : a, c, b 4. p 2 změna pořadí úseček a,c B 4 : p 1, C R, A R,B R T 4 : c, a, b 5. p 1 změna pořadí úseček a,b B 5 : C R, A R,B R T 5 : c, b, a p1p1 p2p2 BRBR

25 25 / 33 DSA Průsečíky úseček R Najdi v T sousedy s (úsečky s 1 a s 2 ) (s je úsečka s koncovým bodem p) smaž s z T if( protíná s 1 x s 2 ) vlož průs do B

26 26 / 33 DSA Průsečíky úseček ALAL ARAR a BLBL CLCL CRCR b c B 5 : C R, A R,B R T 5 : c, b, a 6. C R B 6 : A R,B R T 6 : b, a 7. A R B 7 : B R T 7 : b 8. B R B 7 : prázdná T 7 : prázdná p1p1 p2p2 BRBR

27 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

28 Rozděl a panuj Divide and conquer

29 29 / 33 DSA Viditelnost objektů na tabuli 2n+1 hranic

30 Geometrické místo Locus approach

31 31 / 33 DSA Voronoiův diagram viz průsvitky


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

Podobné prezentace


Reklamy Google