Semestrální práce z předmětu KMA/MM
Voroneho diagramy
Jméno a příjmení: Osobní číslo: Studijní obor: Datum:
Lenka Skalová A08N0185P Finanční informatika a statistika 22. 1. 2010
Obsah Obsah....................................................................................................................................................... 2 1
Historie ............................................................................................................................................ 3
2
Formulace problému ....................................................................................................................... 3
3
Jak vypadají Voroneho diagramy..................................................................................................... 4 3.1
Terminologie............................................................................................................................ 4
3.2
Počet hran a vrcholů................................................................................................................ 5
4
Výpočet Voroneho diagramu .......................................................................................................... 6
5
Delaunyho triangulace .................................................................................................................... 6
6
Poštovní problém řešený pomocí Voroneho diagramů .................................................................. 8
7
Použití .............................................................................................................................................. 9 7.1
Příroda ..................................................................................................................................... 9
7.2
Počítačová grafika ................................................................................................................... 9
7.3
Geografie ............................................................................................................................... 10
7.4
Chemie................................................................................................................................... 10
7.5
Mozaiky ................................................................................................................................. 11
Seznam použité literatury ..................................................................................................................... 12
1 Historie První Voroneho diagramy se objevili v roce 1644 v Descartově práci Principy filozofie. S jejich použitím ukazoval uspořádání hmoty ve sluneční soustavě a jejím okolí. První, kdo se těmito diagramy začal zabývat, byl německý matematik Johann Peter Gustav Lejeune Dirichlet. Používal 2D a 3D Voroneho diagramy ve studiích kvadratických forem v roce 1850. Proto je někdy možné setkat se s pojmem Dirichletovy mozaiky. Struktury jsou pojmenovány po ruském matematikovi Georgy Fedoseevichovi Voronoi, který je v roce 1908 nadefinoval. V meteorologii a hydrologii se Voroneho diagramy používají pod názvem Thiessenovy polygony (pojmenováno po americkém meteorologovi Alfredu Thiessenovi). Slouží k vyhodnocení prostorových dat, zejména pro určení výšky srážky na daném území. Voroneho diagramy se používají i v dalších oborech jako například biologie, medicína, robotika, atd. V matematice jsou Voroneho diagramy speciálním případem dekompozice metrického prostoru určené vzdálenostmi od specifické diskrétní množiny objektů v prostoru, například diskrétní množinou bodů.
2 Formulace problému Je dána množina bodů , , … , v a hledáme Voronoi diagram množiny P.
Definice 1: Voroneho diagram představuje rozklad množiny bodů P na n uzavřených či otevřených oblastí
, , … , takových, že každý bod je blíže bodu než k jakémukoliv bodu . Uzavřenou oblast nazýváme Voroného buňku. Pro libovolný bod a libovolnou buňku platí
, , .
Definice 2: Voroneho diagram představuje průsečnici n – 1 polorovin. Voroneho diagram dané množiny bodů je kolekce oblastí, které rozdělují rovinu. Každá oblast koresponduje s jedním ze zadaných bodů a všechny ostatní body náležící jedné oblasti jsou v dané metrice blíž svému odpovídajícímu bodu než všem ostatním.
3 Jak vypadají Voroneho diagramy 3.1 Terminologie
Obrázek 1: Terminologie Voroneho diagramu
Protože Voroneho diagram představuje oblast danou průnikem n – 1 polorovin, jde o otevřenou konvexní mnohoúhelníkovou oblast ohraničenou nejvýše n – 1 vrcholy a nejvýše n – 1 hranami. Voroneho diagram je vždy souvislý.
Obrázek 2: Ukázky Voroneho diagramů pro n = 2, 3, 4, 5
Obrázek 3: Ukázka Voroneho diagramů pro pravidelně rozložené vstupní množiny
3.2 Počet hran a vrcholů Nejvyšší počet hran a vrcholů diagramu spočítáme pomocí Eulerovy věty, která udává vztah mezi počtem vrcholů (v), hran (h) a stěn (s) konvexního mnohostěnu: 2 přidáme nevlastní vrchol 1 2
∑ ! 12& 2 " 3 1 32 & 2 " 32 & 3& 6 "
! " #$ % 1 2 & 2 2 1 4 2& 2 1 2& 4 " 3 1 2& 5 "
Počet vrcholů je nejvýše 2n – 5 a počet hran nejvýše 3n – 6, kde n je počet bodů sítě množiny.
4 Výpočet Voroneho diagramu Pro výpočet Voroneho diagramu můžeme použít několik algoritmů: •
Naivní (průnik polorovin) – přímá aplikace definice Voroneho diagramu – složitost výpočtu jedné buňky je O (n logn), tedy O (n2 logn) pro výpočet celého diagramu.
•
Inkrementální – najdeme diagram pro nějaký jednoduchý případ (například dva nebo tři body z množiny generátorů) a pak postupně přidáváme po jednom zbylé body.
•
Rozděl a panuj – zadanou generující množinu rekurzivně rozdělujeme, dokud nemáme množinu tří bodů, ze kterých jednoduše sestrojíme diagram, a následuje zpětný chod. Algoritmus je náchylný na numerické chyby, ale vypočítá celý diagram v čase O (n logn).
•
Zametací „Fortuneho“ - používá se tzv. zametací přímka, kterou postupně pohybujeme jedním směrem. Jak přímka prochází body generující množiny, z každého bodu konstruujeme parabolu --množinu bodů, které jsou stejně vzdálené od generujícího bodu a zametací přímky. S rostoucí vzdáleností přímky a bodu se parabola postupně rozevírá. Setkají-li se dvě paraboly, jejich průsečík leží na hraně Voroného diagramu. V místě, kde se setkají tři paraboly, vzniká bod diagramu. Vypočítá celý diagram v čase O (n logn).
•
Metoda zdvihu – transformací přiřazujeme bodu P = [px, py]paraboloid paraboloid + , + a rovinu - 2. , 2/ + . / , která je tečnou roviny paraboloidu v bodě 0 1. , / , . / 2 (0 odpovídá kolmému průmětu bodu P na paraboloid). Najdeme všechny obrazy bodů generující množiny na paraboloid, odpovídající tečné roviny a projekce konvexního mnohostěnu vzniklého průnikem rovin je hledaný Voroneho diagram.
•
Z Delaunayovy triangulace – máme-li k dispozici Delaunayovu triangulaci na zadané množině bodů, můžeme na základě duality sestrojit Voroneho diagram. Najdeme středy opsaných kružnic všech trojúhelníků. Tyto jsou z principu duality Voroneho body.
5 Delaunyho triangulace Delaunyho triangulaci dostaneme, pokud spojíme navzájem úsečkami ty body sítě, jejichž buňky ve Voroneho diagramu sousedí. Taková triangulace lokálně minimalizuje nejmenší úhly a uvnitř kružnice opsané každému jejímu trojúhelníku neleží žádný další vrchol triangulace (to vyplývá z konstrukce diagramu). Zjednodušený popis algoritmu: Algoritmus vezme 3 body, proloží jimi kružnici, když uvnitř kružnice neleží bod, vytvoří trojúhelník. Pokud tam bod je, vybere jiné 3 body.
Obrázek 4: Delaunyho triangulace
Obrázek 5: Ukázka Delaunyho triangulace se znázorněním kružnic opsaných trojúhleníků
Vlastnosti Delaunyho triangulace: •
Dualita k Voroneho diagramu – tedy jedno určuje druhé, tzn., pokud máme spočítaný Voroneho diagram, snadno dostaneme Delaunyho triangulaci a naopak.
•
Vlastnost prázdné kružnice – kružnice opsaná libovolnému trojúhelníku z Delaunyho triangulace neobsahuje žádný další bod sítě.
•
Rovinný graf – z Eulerovy věty má maximálně 3n – 6 hran a 2n – 5 trojúhelníků. Tato vlastnost může být využitá při redukci problémů z třídy kvadratické složitosti na lineární.
6 Poštovní problém řešený pomocí Voroneho diagramů Ve městě se nachází pošty a je potřeba zjistit, kteří obyvatelé budou každou z pošt navštěvovat. Budeme předpokládat některá zjednodušení (která pak můžeme zobecňovat):
•
Neuvažujeme překážky v cestě – domy, zatáčky, řeky, atd., takže náklady na cestu se rovnají součtu ceny dopravy a ceny služeb (ty by měly být všude stejné).
•
Cenu dopravy získáme jako součin ceny za jednotku vzdálenosti (konstantní) a Euklidovské vzdálenosti na poštu.
Obrázek 6: Poštovní problém řešený pomocí Voroneho diagrama
Místo pošty bychom mohli chtít vyzkoumat, do jakého supermarketu chodí lidé nakupovat. V tom případě je třeba minimalizovat celkové náklady, kromě cesty tedy ještě přibývá cena zboží. V tomto modelu je nutné přidat ještě další zjednodušení:
•
Cena zboží je stejná v každém obchodě.
•
Náklady na získání zboží jsou rovné součtu ceny zboží a ceny dopravy
•
Zákazník se snaží minimalizovat náklady na získání zboží.
•
Faktory typu úroveň služeb, šíře sortimentu atd. neuvažujeme.
Samozřejmě zejména předpoklady stejných cen a lineárního růstu ceny dopravy uvnitř města nejsou ideální, proto nám tento model poskytuje pouze hrubou aproximaci problému. Při vymodelování situace se vytvoří takové oblasti, že lidé bydlící v jedné z nich budou jezdit na poštu či obchodu odpovídajícímu danému regionu. To přesně odpovídá definici Voroneho diagramu, kde pošty jsou body generující sítě a regiony jsou Voroneho oblasti. Jakmile tedy sestrojíme Voroneho diagram, můžeme pomocí něj vyřešit poštovní problém.
7 Použití 7.1 Příroda V přírodě můžeme Voroneho diagramy spatřit docela snadno. Ať už se jedná o zvířata či rostliny. Příkladem může být také poušť Atacama v Jižní Americe, která v důsledku náhlých teplotních výkyvů připomíná právě Voroneho diagramy. Je možné je také použít k modelování teritorií jednotlivých zvířat, stád, atd.
Obrázek 7: Voroneho diagramy v přírodě – žirafa, křídlo vážky, poušť Atacama
7.2 Počítačová grafika V počítačové grafice se pomocí Voroneho diagramů vytvářejí barevné mozaiky. V obrázku se vybere množina obrazových bodů jako generující množina diagramu a každá buňka se pak obarví podle barvy příslušného bodu, čímž vznikne efekt mozaiky. Tohoto postupu můžeme využít při kompresi digitálního obrazu.
Obrázek 8: Dekompozice fotky na mozaiku pomocí Voroneho diagramu
7.3 Geografie V geografii se Voroneho diagramy využívají k analýze sídel. Například rozložíme Zemi na polygony založené na lidské populaci. Kde je vysoká hustota obyvatel, bude víc buněk. Tam, kde žije obyvatel málo, bude málo velkých regionů.
Obrázek 9: Rozložení lidské populace
7.4 Chemie Voroneho mozaikový rozklad - běžný 3D model buněk, chemických prvků apod. – se vykresluje jako Voroneho mozaika generujících bodů v prostoru. Kolem každého bodu je oblast, jejíž všechny body jsou k bodu sítě blíž než ke kterémukoliv dalšímu. Při konstrukci 3D diagramu necháme z každého bodu sítě růst kouli, všechny stejnou rychlostí. Tam, kde se dvě sousední dotknou, dostáváme kontaktní bod. Po projití všech bodů můžeme sestrojit Voroneho diagram, kde jsou všechny oblasti konvexními mnohostěny. Polygony náležící bodům konvexního obalu jsou otevřené. Pokud potřebujeme namodelovat tvar krystalu nějaké látky, stačí nám znát rozložení atomů v něm. Ty pak bereme jako generující množinu bodů pro Voroneho diagram, ten sestrojíme, najedeme Delaunyho triangulaci a ta je pak velmi dobrou aproximací tvaru krystalu. Voroneho diagramy se také používají k určení strukturálních vlastností proteinů (nalezení největšího volného prostoru, konstrukce povrchu molekul atd.).
Obrázek 10: Voroneho diagram v chemii
7.5 Mozaiky Pokud zvolíme určité speciální rozložení bodů generující sítě, můžeme dostat Voroneho diagramy jako zajímavé pravidelné mozaiky
Obrázek 11: Voroneho diagramy jako mozaiky
Seznam použité literatury [1] [2] [3] [4] [5]
Světlana Tomiczková: Voroneho diagramy Tomáš Bayer: Voronoi diagram Bohumír Bastl: Aplikace geometrie 2 – pomocný učební text http://images.google.cz http://cs.wikipedia.org