Algoritmy výpočetní geometrie

Podobné dokumenty
Základní datové struktury III: Stromy, haldy

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Dynamické programování

Stromy, haldy, prioritní fronty

Rekurzivní algoritmy

Datové struktury 2: Rozptylovací tabulky

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Algoritmy a datové struktury

Radek Mařík

Datové struktury 1: Základní datové struktury

Stromové struktury v relační databázi

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

NPRG030 Programování I, 2018/19 1 / :03:07

Dynamické datové struktury III.

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

ADT STROM Lukáš Foldýna

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Základní datové struktury

Stromy. Jan Hnilica Počítačové modelování 14

1. Vektorové algoritmy jejich výstupem je soubor geometrických prvků, např.

GIS Geografické informační systémy

Semestrální práce 2 znakový strom

Binární vyhledávací stromy

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Datové struktury pro prostorové vyhledávání

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY 6

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

Grafové algoritmy. Programovací techniky

2. přednáška z předmětu GIS1 Data a datové modely

Grafové algoritmy. Programovací techniky

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

a) b) c) Radek Mařík

Spojová implementace lineárních datových struktur

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

GIS Geografické informační systémy

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

k-dimenzionálním prostoru. problém: Zkonstruovat strom, který rozděluje prostor polorovinami

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

6. Základy výpočetní geometrie

4EK311 Operační výzkum. 5. Teorie grafů

5 Rekurze a zásobník. Rekurzivní volání metody

Složitosti základních operací B + stromu

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Programování v C++ 1, 16. cvičení

Dynamické datové struktury IV.

Počítačová geometrie I

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Prioritní fronta, halda

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

9 Prostorová grafika a modelování těles

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

3. přednáška z předmětu GIS1 atributové a prostorové dotazy

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí RASTR RASTROVÉ ANALÝZY

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

GIS Geografické informační systémy

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

Dynamické datové struktury I.

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

TGH07 - Chytré stromové datové struktury

Časová a prostorová složitost algoritmů

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

Rastrová reprezentace

Úvod do GIS. Prostorová data II. část. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium.

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

Abstraktní datové typy FRONTA

Algoritmizace prostorových úloh

Výroková a predikátová logika - III

ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.

Úvod do mobilní robotiky AIL028

Datové struktury. Zuzana Majdišová

Implementace LL(1) překladů

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Jana Dannhoferová Ústav informatiky, PEF MZLU

12. Globální metody MI-PAA

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

Mělká a hluboká kopie

8. přednáška z předmětu GIS1 Rastrový datový model a mapová algebra

Počítačová geometrie. + algoritmy DG

Transkript:

Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS 2010/11, Přednáška 12 Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 1 / 18

Výpočetní geometrie Výpočetní geometrie Definice 1 Cílem výpočetní geometrie je analýza a návrh efektivních algoritmů pro určování vlastností a vztahů geometrických objektů (GO). Řešené problémy: geometrické vyhledávání, reprezentace scény, určení poloh objektů, zjišťování kolizí či vzdálenosti objektů, konstrukce konvexní obálky, konstrukce Voronoi diagramu,.... prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 2 / 18

Definice kvadrantového stromu (QuadTree) Čtvercová nebo obdélníková 2D scéna je rekurzivně dělena do kvadrantů. Každý kvadrant může obsahovat 1 (několik) GO. Pro jednoduchost budeme v BI-EFA předpokládat hmotné body, čili bezrozměrné GO. Definice 2 (Kvadrantový strom) Kvadrantový strom je plný 4-ární strom, který splňuje následující podmínky: 1 Každý vnitřní uzel 1 reprezentuje jeden kvadrant, rozdělený na 4 navzájem disjunktní podkvadranty, postupně značené SZ, SV, JZ a JV, 2 obsahuje souřadnice kříže pro dělení tohoto kvadrantu. 2 Každý list má definovanou maximální kapacitu GO obsažených v daném kvadrantu. Pokud je překročena (u dynamické scény), kvadrant se rozdělí zase na 4 podkvadranty a list se stane vnitřním uzlem. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 3 / 18

Použití kvadrantového stromu Kvadrantové stromy se používají pro efektivní reprezentaci GO (např. hmotných bodů, polygonů) zadaných souřadnicemi (středu) x a y v 2D prostoru (scéně), která umožňuje urychlení 2D grafických algoritmů (sledování paprsku), urychlení zpracování a analýzu obrazu, efektivní uložení a vyhledávání dat pro GIS, snížení paměťových nároků při zobrazování scény. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 4 / 18

PR kvadrantový strom PR kvadrantový strom (Point Region QuadTree) Definice 3 (PR kvadrantový strom) 1 Každý list (koncový kvadrant) obsahuje nejvýše 1 GO. 2 Dělení na podkvadranty se provádí, dokud se do kvadrantu má vložit druhý GO. 3 Kvadrant se pak rozdělí na 4 stejně velké podkvadranty. 4 Dělící kříž má proto střed vždy ve středu kvadrantu. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 5 / 18

PR kvadrantový strom Vložení GO do PR kvadrantového stromu Předpokládejme, že GO jsou reprezentovány trojicí ((x, y), obj). Postup pro vložení GO ((x, y), obj) je podobný vložení prvku do BVS, ve kterém klíče jsou uspořádané dvojice souřadnic (x, y). 1 Nejprve se podle souřadnic (x, y) nalezne list (koncový kvadrant), do kterého vkládaný GO patří: Souřadnice vkládaného GO se postupně porovnávají se středy kvadrantů a vybírá se podkvadrant, do kterého GO patří. 2 Pokud je list prázdný (koncový podkvadrant neobsahuje žádný GO), pak je GO obj vložen do tohoto listu. 3 Pokud list (=koncový kvadrant) obsahuje jiný GO, provede se jeho rozdělení na stejně velké podkvadranty. Vytvoří se jeho čtyři synovské listy-podkvadranty. Původně uložený GO v původním kvadrantu se přesune do odpovídajícího podkvadrantu (podle svých souřadnic). Rekurzivně se provede operace vložení do takto rozděleného kvadrantu. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 6 / 18

PR kvadrantový strom Vložení GO do PR kvadrantového stromu procedure insertprquadtree(r, (x, y), N ewobj) { (1) if (not isleaf(r)) then { (2) child chooseleaf(r, (x, y)); (3) insertprquadtree(child, (x, y), N ewobj) } (4) else (5) if (isempty(r)) then obj[r] N ewobj (6) else { (7) split(r, (x, y), NewObj); (8) child chooseleaf(r, (x, y)); (9) insertprquadtree(child, (x, y), N ewobj) } } prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 7 / 18

PR kvadrantový strom Vložení GO do PR kvadrantového stromu procedure split(r, (x, y), obj) { (1) createfourchildren(r); (2) point obj[r]; (3) obj[r] Null; (4) leaf chooseleaf(r, (x, y)); (5) obj[leaf] point; } procedure isempty(r) { (1) return obj[r] = Null; } procedure chooseleaf(r, (x, y)) Vrátí ukazatel na syna uzlu r, jehož kvadrant obsahuje bod (x, y). prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 8 / 18

PR kvadrantový strom Hledání GO v PR kvadrantovém stromu Algoritmus hledání koncového kvadrantu obsahujícího zadaný GO se souřadnicemi (x, y) v kvadrantovém stromu s kořenem r: Otestuje se, zda je kořen r listem. Pokud ano, otestuje se, zda je kořen plný (=obsahuje GO). Pokud ano, provede se porovnání (x, y) se souřadnicemi tohoto GO. Pokud ne, je hledání ukončeno jako neúspěšné. Pokud ne, provede se rekurzivně totéž pro odpovídající podkvadrant (test 4 možností). prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 9 / 18

PR kvadrantový strom Mazání GO z PR kvadrantového stromu 1 Nalezne se list (=koncový kvadrant), který má obsahovat zadaný GO (předchozí algoritmus). 2 Porovnají se souřadnice a pokud je shoda, dojde k smazání GO. 3 Otestují se sourozenci listu, zda jsou také listy a zda jsou prázdné: Pokud ano, stane se jejich otec listem. A vracíme se na bod 3. Pokud ne, konec. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 10 / 18

PR kvadrantový strom Diskuze vlastností PR kvadrantového stromu 1 Struktura PR kvadrantového stromu je nezávislá na pořadí vkládaných GO. 2 V případě hustých shluků GO roste hloubka stromu. 3 Proto v případě nerovnoměrného rozložení GO ve scéně je strom výškově nevyvážený. 4 Jednoduchá operace mazání. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 11 / 18

PR kvadrantový strom R Kvadrantový strom (Region QuadTree) Jedná se o speciální případ PR kvadrantového stromu. Strom reprezentuje černobílý bitmapový obrázek o velikosti 2 n 2 n pixelů. V listech stromu se uchovává hodnota Black/White. Použití: bezeztrátová komprese, hledání fraktálních artefaktů. 8 x 8 1 2 3 4 4 x 4 2 x 2 1 2 4 3 1 pixel prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 12 / 18

P Kvadrantový strom P kvadrantový strom (Point QuadTree) Definice 4 (P kvadrantový strom) Je to kvadrantový strom s těmito vlastnosti: 1 Dělící kříž není ve středu, ale je umístěn do existujícího GO. 2 Každý kvadrant obsahuje nejvýše 1 GO (=hmotný bod). prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 13 / 18

P Kvadrantový strom Vložení GO do P kvadrantového stromu Postup pro vložení GO, řekněme ((x, y), obj), je velmi podobný vložení do BVS, kde klíče jsou dvojice souřadnic (x, y). 1 Nejprve se podle souřadnic nalezne list (=koncový kvadrant), do kterého nově vkládaný GO patří. Souřadnice (x, y) postupně porovnáváme se souřadnicemi středu dělícího kříže kvadrantu, který reprezentuje navštívený uzel a vybíráme příslušný podkvadrant, do kterého souřadnice patří. 2 Pokud je koncový kvadrant prázdný (list neobsahuje GO), pak je GO ((x, y), obj) do něj vložen. 3 Pokud již obsahuje GO, provede se dekompozice uzlu: Vytvoří se čtyři synovské podkvadranty. Střed dělícího kříže je souřadnice stávajícího GO. Provede se vložení do jednoho z těchto kvadrantů. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 14 / 18

P Kvadrantový strom Hledání GO v P kvadrantovém stromu Algoritmus nalezení GO se zadanými souřadnicemi (x, y) v P kvadrantovém stromu s kořenem r: Otestuje se, zda uzel r obsahuje hledaný GO jako střed kříže. Pokud ano, končíme úspěšně. Pokud ne, otestuje se, zda je kořen r listem. Pokud ano, otestuje se, zda daný koncový kvadrant obsahuje GO. Pokud ano, provede se porovnání (x, y) se souřadnicemi tohoto GO a vrátí se výsledek. Pokud ne, je hledání ukončeno jako neúspěšné. Pokud ne, provede se rekurzivně totéž pro odpovídající podkvadrant (test 4 možností). prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 15 / 18

P Kvadrantový strom Mazání GO z P kvadrantového stromu 1 Nalezne se uzel, který má obsahovat zadaný GO (předchozí algoritmus). 2 Vymaže se GO z uzlu. 3 Pokud není uzel listem, musí být všechny GO v podstromech znovu vloženy. Tento postup mazání je neefektivní. Efektivním postupem je nahradit mazaný GO vhodným GO v podstromech, tak aby bylo potřeba minimum znovu vložení. V následující animaci stačí znovu vložit jen dva uzly. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 16 / 18

Oktalový strom Oktalový strom Používá se pro hierarchickou reprezentaci 3D scén. Zobecnění kvadrantového stromu pro 3D scény. Plný 8-ární strom: Počet synů vnitřního uzlu je právě 8. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 17 / 18

K-D strom K-D strom Definice 5 (K-D strom) K-D strom je BVS provádějící dělení scény střídavě podle x-ové a y-ové souřadnice. 1 Každý vnitřní uzel reprezentuje jedno dělení 2D podscény na 2 navzájem disjunktní oblasti podle x nebo podle y. 2 Každá oblast obsahuje nejvýše jeden GO. Existuje opět několik variant K-D stromů, např. 1 Dělené oblasti jsou vždy stejně velké (PR K-D stromy). 2 Dělení je prováděno podle jedné souřadnice vloženého GO jako u P kvadrantového stromu (tuto variantu budeme prezentovat). Důsledek: Každý vnitřní uzel má právě 2 syny. obsahuje souřadnice dělícího bodu a příznak x/y. prof. Pavel Tvrdík (FIT ČVUT) Výpočetní geometrie BI-EFA, 2010, Předn. 12 18 / 18