7. Geometrické algoritmy (sepsal Pavel Klavík)

Podobné dokumenty
6. Geometrické algoritmy

Geometrické vyhledávání

1 Linearní prostory nad komplexními čísly

1. Geometrické algoritmy

1. Geometrické algoritmy

64. ročník matematické olympiády Řešení úloh krajského kola kategorie A

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

9 Kolmost vektorových podprostorů

Konvexní obal a množina

1 Determinanty a inverzní matice

8. Geometrie vrací úder (sepsal Pavel Klavík)

[1] Vzhledem ke zvolené bázi určujeme souřadnice vektorů...

Úlohy krajského kola kategorie A

Eukleidovský prostor a KSS Eukleidovský prostor je bodový prostor, ve kterém je definována vzdálenost dvou bodů (metrika)

7 Konvexní množiny. min c T x. při splnění tzv. podmínek přípustnosti, tj. x = vyhovuje podmínkám: A x = b a x i 0 pro každé i n.

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

7 Ortogonální a ortonormální vektory

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.

1 Lineární prostory a podprostory

5. Lokální, vázané a globální extrémy

VĚTY Z LINEÁRNÍ ALGEBRY

Soustavy linea rnı ch rovnic

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

10 Přednáška ze

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Kreslení elipsy Andrej Podzimek 22. prosince 2005

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Výběr báze. u n. a 1 u 1

Lineární algebra : Metrická geometrie

Vzorce počítačové grafiky

6 Lineární geometrie. 6.1 Lineární variety

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

1 Řešení soustav lineárních rovnic

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

AVDAT Nelineární regresní model

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

Klauzurní část školního kola kategorie A se koná

Transformace souřadnic

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

10. DETERMINANTY " # $!

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Lingebraické kapitolky - Počítání s maticemi

6. Vektorový počet Studijní text. 6. Vektorový počet

Binární vyhledávací stromy pokročilé partie

4.3.3 Základní goniometrické vzorce I

vyjádřete ve tvaru lineární kombinace čtverců (lineární kombinace druhých mocnin). Rozhodněte o definitnosti kvadratické formy κ(x).

6 Samodružné body a směry afinity

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

MATURITNÍ TÉMATA Z MATEMATIKY

2. kapitola: Euklidovské prostory

2. prosince velikosti symboly a, b, je b ω a b = a b cosω (1) a. ω pro ω π/2, π platí a b = b a a (3) a b = a 1 b 1 + a 2 b 2 + a 3 b 3 (5)

Cvičné texty ke státní maturitě z matematiky

Derivace funkcí více proměnných

19 Eukleidovský bodový prostor

( ) ( ) ( ) Tečny kružnic I. Předpoklady: 4501, 4504

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Úlohy k přednášce NMAG 101 a 120: Lineární algebra a geometrie 1 a 2,

x 2 = a 2 + tv 2 tedy (a 1, a 2 ) T + [(v 1, v 2 )] T A + V Příklad. U = R n neprázdná množina řešení soustavy Ax = b.

Algoritmy I, složitost

Afinita je stručný název pro afinní transformaci prostoru, tj.vzájemně jednoznačné afinní zobrazení bodového prostoru A n na sebe.

1 Vektorové prostory.

M - Kvadratické rovnice a kvadratické nerovnice

1 Analytická geometrie

Úlohy nejmenších čtverců

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

0.1 Úvod do lineární algebry

CVIČNÝ TEST 5. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

1 Soustavy lineárních rovnic

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

Matematický ústav Slezské univerzity v Opavě Učební texty k přednášce ALGEBRA II, letní semestr 2000/2001 Michal Marvan. 14.

12. Lineární programování

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

NALG 001 Lineární algebra a geometrie 1, zimní semestr MFF UK Doba řešení: 3 hodiny

Obr. P1.1 Zadání úlohy v MS Excel

6.1 Vektorový prostor

Operace s maticemi. 19. února 2018

Lineární algebra : Násobení matic a inverzní matice

12 DYNAMIKA SOUSTAVY HMOTNÝCH BODŮ

M - Kvadratické rovnice

Kreslení grafů na plochy Tomáš Novotný

Soustavy nelineárních rovnic pomocí systému Maple. Newtonova metoda.

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

5 Orientované grafy, Toky v sítích

Pavel Klavík. Katedra aplikované matematiky, Matematicko-fyzikální fakulta, Univerzita Karlova v Praze

Požadavky k opravným zkouškám z matematiky školní rok

55. ročník matematické olympiády

Transkript:

7. Geometrické algoritmy (sepsal Pavel Klavík) Ukážeme si několik základních algoritmů na řešení geometrických problémů v rovině. Proč zrovna v rovině? Inu, jednorozměrné problémy bývají triviální a naopak pro vyšší dimenze jsou velice komplikované. Rovina je proto rozumným kompromisem mezi obtížností a zajímavostí. Celou kapitolou nás bude provázet pohádka ze života ledních medvědů. Pokusímesevyřešitjejich každodenní problémy... Hledání konvexního obalu Daleko na severu žili lední medvědi. Ve vodách tamního moře byla hojnost ryb a jak je známo, ryby jsou oblíbenou pochoutkou ledních medvědů. Protože medvědi z naší pohádky rozhodně nejsou ledajací a ani chytrost jim neschází, rozhodli se všechny ryby pochytat. Znají přesná místa výskytu ryb a rádi by vyrobili obrovskou síť, do které by je všechny chytili. Pomozte medvědům zjistit, jaký nejmenší obvod taková síť může mít. Problém ledních mědvědů: Jaký je nejmenší obvod sítě? Neboli v řeči matematické, chceme pro zadanou množinu bodů v rovině nalézt její konvexní obal. Co je to konvexní obal? Množina bodů je konvexní, pokud pro každé dva body obsahuje i celou úsečku mezi nimi. Konvexní obal je nejmenší konvexnípodmnožinaroviny,kteráobsahujevšechnyzadanébody. 1 Zalgoritmického hlediska nás však bude zajímat jenom jeho hranice, kterou budeme dále označovat jako konvexní obal. 1 Pamatujetesinalineárníobalyvevektorovýchprostorech?Lineárníobalmnožiny vektorů je nejmenší vektorový podprostor, který tyto vektory obsahuje. Není náhoda, že tato definice připomíná definici konvexního obalu. Na druhou stranu každý vektor z lineárního obalu lze vyjádřit jako lineární kombinaci daných vektorů. Podobněplatíiprokonvexníobaly,žekaždýbodzobalujekonvexníkombinacídanýchbodů.Taselišíodlineárnívtom,ževšechnykoeficientyjsouvintervalu[0,1] a navíc součet všech koeficientů je 1. Tento algebraický pohled může mnohé věci zjednodušit. Zkuste si dokázat, že obě definice konvexního obalu jsou ekvivalentní. 1 2010-02-09

Naším úkolem je nalézt konvexní obal konečné množiny bodů. To je vždy konvexní mnohoúhelník, navíc s vrcholy v zadaných bodech. Řešením problému tedy bude posloupnost bodů, které tvoří konvexní obal. Pro malé množiny je konvexní obal nakreslen na obrázku, pro více bodů je však situace mnohem složitější. n = 1 n = 2 n = 3 n = 4 Konvexní obaly malých množin. Pro jednoduchost budeme předpokládat, že všechny body mají různé x-ové souřadnice.tedyutříděníbodůzlevadopravajeurčenéjednoznačně. 2 Tímmáme zajištěné, že existují dva body, nejlevější a nejpravější, pro které platí následující invariant: Invariant: Nejlevější a nejpravější body jsou vždy v konvexním obalu. Algoritmus na nalezení konvexního obalu funguje na následujícím jednoduchém principu, kterému se někdy říká zametání roviny. Procházíme body zleva doprava a postupně rozšiřujeme doposud nalezený konvexní obal o další body. Na začátku bude konvexní obal jediného bodu samotný bod. Na konci k-tého kroku algoritmu známe konvexní obal prvních k bodů. Když algoritmus skončí, známe hledaný konvexní obal. Podle invariantu musíme v k-tém kroku přidat do obalu k-tý nejlevější bod. Zbývá si jen rozmyslet, jak přesně tento bod přidat. Přidání dalšího bodu do konvexního obalu funguje, jak je naznačeno na obrázku. Podle invariantu víme, že bod nejvíc vpravo je součástí konvexního obalu. Za něj napojíme nově přidávaný bod. Tím jsme získali nějaký obal, ale zpravidla nebude konvexní. To lze však snadno napravit, stačí odebírat body, v obou směrech podél konvexního obalu, tak dlouho, dokud nezískáme konvexní obal. Na příkladu z obrázku nemusíme po směru hodinových ručiček odebrat ani jeden bod, obal je v pořádku. Naopak proti směru hodinových ručiček musíme odebrat dokonce dva body. Přidání bodu do konvexního obalu. 2 Tosimůžemedovolitpředpokládat,neboťsevšemibodystačínepatrněpootočit. Tím konvexní obal určitě nezměníme. Avšak jednodušší řešení je naprogramovat třídění lexikograficky(druhotně podle souřadnice y) a vyřadit identické body. 2 2010-02-09

Pro případnou implementaci a rozbor složitosti si nyní popíšeme algoritmus detailněji. Aby se lépe popisoval, rozdělíme si konvexní obal na dvě části spojující nejlevější a nejpravější bod obalu. Budeme jim říkat horní obálka a dolní obálka. horní obálka L P dolní obálka Horní a dolní obálka konvexního obalu. Obě obálky jsou lomené čáry, navíc horní obálka pořád zatáčí doprava a dolní naopak doleva. Pro udržování bodů v obálkách stačí dva zásobníky. V k-tém kroku algoritmu přidáme zvlášť k-tý bod do horní i dolní obálky. Přidáním k-tého bodu se však může porušit směr, ve kterém obálka zatáčí. Proto budeme nejprve body zobálkyodebíratak-týbodpřidámeažvechvíli,kdyjehopřidánísměrzatáčení neporuší. Algoritmus: 1.Setřídímebodypodle x-ovésouřadnice,označmebody b 1,..., b n. 2.Vložímedohorníadolníobálkybod b 1 : H= D=(b 1 ). 3.Prokaždýdalšíbod b=b 2,..., b n : 4. Přepočítáme horní obálku: 5. Dokud H 2, H=(..., h k 1, h k )aúhel h k 1 h k bjeorientovaný doleva: 6. Odeberemeposledníbod h k zobálky H. 7. Přidáme bod b do obálky H. 8. Symetricky přepočteme dolní obálku(s orientací doprava). 9. Výslednýobaljetvořenbodyvobálkách Ha D. Rozebereme si časovou složitost algoritmu. Setřídit body podle x-ové souřadnicedokážemevčase O(nlog n).přidánídalšíhobodudoobálektrválineárněvzhledem k počtu odebraných bodů. Zde využijeme obvyklý postup: Každý bod je odebrán nejvýše jednou, a tedy všechna odebrání trvají dohromady O(n). Konvexní obaldokážemesestrojitvčase O(nlog n),apokudbychomměliseznambodůjiž utřídený, dokážeme to dokonce v O(n). 3 2010-02-09

Algebraický dodatek: Existuje jednoduchý postup, jak zjistit orientaci úhlu? Ukážeme si jeden založený na lineární algebře. Budou se hodit vlastnosti determinantu. Absolutní hodnota determinantu je objem rovnoběžnostěnu určeného řádkovými vektorymatice.důležitějšívšakje,žeznaménkodeterminantuurčuje orientaci vektorů, zda je levotočivá či pravotočivá. Protože náš problém je rovinný, budeme uvažovat determinanty matic 2 2. Uvažme souřadnicový systém v rovině, kde x-ová souřadnice roste směrem dopravaay-ovásměremnahoru.chcemezjistitorientaciúhlu h k 1 h k b.položme u=(x 1, y 1 )jakorozdílsouřadnic h k a h k 1 apodobně v=(x 2, y 2 )jerozdílsouřadnic bah k.matice Mjedefinovánanásledovně: M= ( ) u = v ( x1 y 1 x 2 y 2 Úhel h k 1 h k bjeorientovándoleva,právěkdyždetm= x 1 y 2 x 2 y 1 jenezáporný, 3 a spočítat hodnotu determinantu je jednoduché. Možné situace jsou nakresleny na obrázku. Poznamenejme, že k podobnému vzorci se lze také dostat přes vektorový součin vektorů u a v. ). h k 1 det(m) > 0 b u u v h k h k 1 h k 1 det(m) = 0 h k v b u det(m) < 0 Jak vypadají determinanty různých znamének v rovině. h k v b Šlo by to vyřešit rychleji? Také vám vrtá hlavou, zda existují rychlejší algoritmy? Nazávěrsiukážemeněco,conapřednášcenebylo. 4 Nejrychlejšíznámýalgoritmus, jehožautoremjet.chan,fungujevčase O(nlog h),kde hjepočetbodůležícíchna konvexním obalu, a přitom je překvapivě jednoduchý. Zde si naznačíme, jak tento algoritmus funguje. Algoritmus přichází s následující myšlenkou. Předpokládejme, že bychom znali velikostkonvexníhoobalu h.rozdělímebodylibovolnědo n h množin Q 1,...,Q k tak,že Q i h.prokaždouztěchtomnožinnaleznemekonvexníobalpomocívýše popsanéhoalgoritmu.todokážemeprojednuvčase O(hlog h)aprovšechnyvčase O(n log h). V druhé fázi spustíme hledání konvexního obalu pomocí provázkového algoritmu a pro zrychlení použijeme předpočítané obaly menších množin. Nejprve popíšeme jeho myšlenku. Použijeme následující pozorování: 3 Nebolivektory ua vodpovídajíroztaženíazkosenívektorůbáze x=(1,0)a y =(0, 1), pro něž je determinant nezáporný. 4 Atakésenebudezkoušet. 4 2010-02-09

Pozorování: Úsečka spojující dva body a a b leží na konvexním obalu, právě když všechnyostatníbodyležípouzenajednéjejístraně. 5 Algoritmu se říká provázkový, protože svojí činností připomíná namotávání provázku podél konvexního obalu. Začneme s bodem, který na konvexním obalu určitě leží, to je třeba ten nejlevější. V každém kroku nalezneme následující bod po obvodu konvexního obalu. To uděláme například tak, že projdeme všechny body a vybereme ten, který svírá nejmenší úhel s poslední stranou konvexního obalu. Nově přidaná úsečka vyhovuje pozorování a proto do konvexního obalu patří. Po h krocích se dostaneme zpět k nejlevějšímu bodu a výpočet ukončíme. V každém kroku potřebujeme projít všechny body a vybrat následníka, což dokážeme v čase O(n). Celková složitost algoritmu je tedy O(n h). Q i Provázkový algoritmus. Hledání kandidáta v předpočítaném obalu. Provázkový algoritmus funguje, ale má jednu obrovskou nevýhodu je totiž ukrutně pomalý. Kýženého zrychlení dosáhneme, pokud použijeme předpočítané konvexníobaly.tyumožní rychlejihledatnásledníka.prokaždouzmnožin Q i najdeme zvlášť kandidáta a poté z nich vybereme toho nejlepšího. Možný kandidátvždyležínakonvexnímobalumnožiny Q i.využijemetoho,žebodyobalujsou uspořádané,ikdyžtrochunetypickydokruhu.kandidátamůžemehledatmetodou půlení intervalu, i když detaily jsou maličko složitější než je obvyklé. Jak půlit zjistíme podle směru zatáčení konvexního obalu. Detaily si rozmyslí čtenář sám. Časovásložitostpůleníje O(log h)projednumnožinu.množinjenejvýše O( n h ), tedynásledujícíbodkonvexníhoobalunaleznemevčase O( n hlog h).celýobalnalezneme ve slibovaném čase O(n log h). Popsanému algoritmu schází jedna důležitá věc: Ve skutečnosti většinou neznáme velikost h. Budeme proto algoritmus iterovat s rostoucí hodnotou h, dokud konvexní obal nesestrojíme. Pokud při slepování konvexních obalů zjistíme, že konvexníobaljevětšínež h,výpočetukončíme.zbýváještězvolit,jakrychlemá h růst. Pokud by rostlo moc pomalu, budeme počítat zbytečně mnoho fází, naopak při rychlém růstu by nás poslední fáze mohla stát příliš mnoho. 5 Formálnějepodmínkanásledující:Přímka aburčujedvěpoloroviny.úsečkaleží na konvexním obalu, právě když všechny body leží v jedné z polorovin. 5 2010-02-09

V k-téiteracipoložíme h=2 2k.Dostávámecelkovousložitostalgoritmu: O(loglog h) m=0 O(nlog2 2m )= O(loglog h) m=0 O(n 2 m )=O(nlog h), kde poslední rovnost dostaneme jako součet prvních O(log log h) členů geometrické řady 2 m. 6 2010-02-09