Konvexní obal a množina

Transkript

Konvexní obal a množina
Konvexní obal a množina
‡
Definice
Množina M se nazývá konvexní, jestliže úsečka spojující libovolné
dva její body je částí této množiny, tj.
∀a, b ∈ M , ∀t ∈ 0,1 : ta + (1 − t )b ∈ M
konvexní
množina
a
b
b
a
nekonvexní
množina
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Definice
Konvexní obal množiny M je nejmenší konvexní množina, která
množinu M obsahuje.
‡
Konvexní obal ve 2D
„
„
‡
konvexní obal = konvexní mnohoúhelník
reprezentace – uspořádaná posloupnost vrcholů (proti směru
hodinových ručiček)
Konvexní obal ve 3D
„
„
konvexní obal = konvexní mnohostěn
reprezentace – planární graf
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
‡
vstup
„ n bodů v rovině
výstup
„
konvexní obal
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
„
volba KSS
nalezneme bod s největší x-ovou souřadnicí -
P
y
‡
P
‡
bod P je vrchol konvexního
obalu
v bodě P určíme tzv. dělící
přímku – nejčastěji & y
(všechny body vstupní
množiny musí ležet v jedné
polorovině, kterou určuje
dělící přímka)
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„ z bodu P vedeme všechny polopřímky směřující do ostatních
bodů vstupní množiny
y
P
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„ z bodu P vedeme všechny polopřímky směřující do ostatních
bodů vstupní množiny
y
2
‡
P =1
‡
vybereme tu polopřímku,
která svírá s první přímkou
(dělící přímka) nejmenší úhel
dostáváme vrchol
konvexního obalu - 2
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„ z bodu P vedeme všechny polopřímky směřující do ostatních
bodů vstupní množiny
y
2
‡
P =1
‡
‡
vybereme tu polopřímku,
která svírá s první přímkou
(dělící přímka) nejmenší úhel
dostáváme vrchol
konvexního obalu – 2
hrana konvexního obalu 12
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
P =1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
4
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
4
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
4
5
6
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
4
7
5
6
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 1
„
opakujeme, dokud se nedostaneme s hranou konvexního obalu
opět do prvního bodu, tj. do P
y
2
3
P =1
4
7
5
6
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 2
„
„
volba KSS
nalezneme bod s největší x-ovou souřadnicí -
P
y
‡
P
‡
bod P je vrchol konvexního
obalu
zvolíme bod Q uvnitř
množiny (např. těžiště)
Q
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 2
„ z bodu Q svazek polopřímek QAi - uspořádáme kladně počínaje
polopřímkou QP
y
Ai
‡ budeme postupovat po
P
‡
Q
jednotlivých bodech Ai dle
uspořádání
rozhodujeme, zda daný
vrchol náleží konvexnímu
obalu
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 2
„ z bodu Q svazek polopřímek QAi - uspořádáme kladně počínaje
polopřímkou QP
y
Ai
‡ A1 , A2 ,..., An seřazené
‡
P
Q
‡
‡
ke každému bodu známe
předchůdce a následníka
Ai −1 , Ai , Ai +1
Ai - je předchůdce Ai +1 a
následník Ai −1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 2
„ Ai −1 , Ai , Ai +1 - zkoumáme, zda bod Ai +1 leží nalevo nebo napravo
od polopřímky Ai −1 Ai
Ai +1
nalevo
Ai +1
Ai
Ai
Ai −1
Q
za
Ai −1 , Ai , Ai +1 dosadíme následníky
Počítačová geometrie
napravo
Ai −1
Q
za
Ai
Ai
- vymažeme
dosadíme
Ai +1
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 2
„
při průchodu konvexním obalem leží vždy následující body nalevo
od zkoumané polopřímky
Ai +1
nalevo
Ai +1
Ai
Ai
Ai −1
Q
Počítačová geometrie
napravo
Ai −1
Q
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
vybereme libovolné tři body, které tvoří trojúhelník = počáteční
konvexní obal – uspořádáme proti směru hod. ruč.
y
‡
2
‡
3
nalezneme množinu
vnějších bodů
libovolný bod vnější
množiny přidáme do
konvexního obalu
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
vybereme libovolné tři body, které tvoří trojúhelník = počáteční
konvexní obal – uspořádáme proti směru hod. ruč.
y
‡
2
4
3
1
‡
‡
nalezneme množinu
vnějších bodů
libovolný bod vnější
množiny přidáme do
konvexního obalu
pomocí determinantu –
zjišťuji, které hrany jsou z
přidávaného bodu vidět – ty
vymažeme z konvexního
obalu
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
opakujeme, dokud množina
vnějších bodů není prázdná
3
2
4
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
5
opakujeme, dokud množina
vnějších bodů není prázdná
3
2
4
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
5
4
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
6
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
2
opakujeme, dokud množina
vnějších bodů není prázdná
6
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
2
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
6
2
4
1
5
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
4
2
5
1
6
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
4
2
5
1
6
7
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
‡
3
opakujeme, dokud množina
vnějších bodů není prázdná
4
2
5
1
6
7
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
3
8
‡
opakujeme, dokud množina
vnějších bodů není prázdná
4
2
5
1
6
7
x
Počítačová geometrie
Petra Surynková
Konvexní obal a množina
‡
Algoritmus 3 - přírůstkový
„
v následujícím kroku znovu určíme množinu vnějších bodů a
přečíslujeme vrcholy
y
3
‡
opakujeme, dokud množina
vnějších bodů není prázdná
4
2
5
1
6
7
x
Počítačová geometrie
Petra Surynková

Podobné dokumenty