Vous êtes sur la page 1sur 49

Tema3

Laenvolventeconvexa

1deIngenieraInformtica,Plan2004
LidiaOrtegaAlvarado
Informtica
2011/12
http://wwwdi.ujaen.es/asignaturas/gc/tema3.odp

GeometraComputacional

Curso:
Profesora:
Departamento:
Cursoacadmico:
Ubicacin:

ndice
DefinicionesdeEnvolventeConvexa
Propiedades
Algoritmosdeclculo
Algoritmoelemental
ElscandeGraham
LamarchadeJarvis
Quickhull
Incremental
DivideyVencers
DiagramaPolar
Bibliografa

Laenvolventeconvexa

Introduccin

Envolvente
Convexa
deobjetos

recubrimientoocoberturaque
encierraatodosloselementos
sinvrticescncavos
depuntos,polgonos,crculos,
objetos3D,etc.

Estudiaremoselcasomssencillo:laenvolventeconvexa
deunconjuntodepuntosenelplano

Laenvolventeconvexa

EsunodelosclculosmsimportantesenGeometra
Computacionalconaplicacionesendistintasreas,dentroy
fueradelaGeometraComputacional

Definiciones

goma
elstica
tensa

gomaal
destensar

Laenvolventeconvexa

Definicinintuitiva:
Supongamosquecadapuntodelplanoestrepresentadocomo
lacabezadeunapuntillahincadaperpendicularmentesobre
unasuperficieplana.Sitomamosunagomaelsticaque
envuelvaatodaslaspuntillas,elresultadoenlaenvolvente
convexa.

Definiciones

S
existeotro
polgonocon
menorrea

menor
polgono
convexo
queenvuelve
atodos
noenvuelve
atodos

Laenvolventeconvexa

Definicin1:
LaenvolventeconvexadeunconjuntodepuntosSesel
polgonoconvexoPquecontieneatodosloselementosdeS
conmenorrea(opermetro)posible

Definiciones

S
nosecumple
lapropiedad
todoslos
posiblessegmentos
quedandentro
delpolgonoP

Laenvolventeconvexa

Definicin2:
LaenvolventeconvexadeunconjuntodepuntosSesel
polgonoconvexoPsiparacadapardepuntosxeydeS,el
segmentoxysiempreestcontenidoenP

Propiedades

S
puntointerior

imposibleencontrar
untringuloquelo
envuelva

Laenvolventeconvexa

Propiedad1:
Elclculodelaenvolventeconvexaconsisteenencontrartodos
lospuntosextremosdelconjuntoS.
UnpuntoxSesnoextremosiexisteuntringuloconvrtices
enS(distintosdex)deformaquexestdentrodeltringulo.

Propiedades

Laenvolventeconvexa

Propiedad2:
UnpuntoxSesextremosiexisteunarectapasandoporx
quedejealrestodepuntosdeShaciaunladodedicharecta

Algoritmoselementales
DadounconjuntoS,encontrartodossuspuntosextremos
ordenadosensentidoantihorario

O(n4)

O(n3)

Propiedad2:
ExistenO(n2)paresdepuntosdistintos
ExistenO(n)puntosquecuestionar

Laenvolventeconvexa

Propiedad1:

CadapuntopSpuedeestaren
O(n3)tringulosdistintos
ExistenO(n)puntosque
cuestionar

Algoritmo:Graham'sscan
BasadoenlaPropiedad1

Laenvolventeconvexa

ALGORITMOGRAHAM(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
S
INICIO
min<PuntoMenorOrdenada(S,n)
OrdenarAngularmente(S,n,min)
PilaCrea(Env)
PilaPush(Env,S[0])
PilaPush(Env,S[1])
PilaPush(Env,S[2])
i<1
MIENTRASi<n1REPETIR
t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI
FIN_MIENTRAS
FIN

Algoritmo:Graham'sscan

Laenvolventeconvexa

ALGORITMOGRAHAM(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
INICIO
min<PuntoMenorOrdenada(S,n)
S
OrdenarAngularmente(S,n,min)
PilaCrea(Env)
PilaPush(Env,S[0])
PilaPush(Env,S[1])
PilaPush(Env,S[2])
i<1
MIENTRASi<n1REPETIR
t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI
min
FIN_MIENTRAS
FIN

Algoritmo:Graham'sscan

Laenvolventeconvexa

ALGORITMOGRAHAM(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
INICIO
min<PuntoMenorOrdenada(S,n)
S
OrdenarAngularmente(S,n,min)
4
PilaCrea(Env)
PilaPush(Env,S[0])
5
PilaPush(Env,S[1])
PilaPush(Env,S[2])
6
i<3
8
MIENTRASi<n1REPETIR
t<PilaPop(Env)
3
7
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
9
PilaPush(Env,i)
i<i+1
min
FIN_SI
FIN_MIENTRAS
FIN

Algoritmo:Graham'sscan

Laenvolventeconvexa

ALGORITMOGRAHAM(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
INICIO
S
4
min<PuntoMenorOrdenada(S,n)
OrdenarAngularmente(S,n,min)
PilaCrea(Env)
5
PilaPush(Env,S[0])
PilaPush(Env,S[1])
6
PilaPush(Env,S[2])
8
i<3
MIENTRASi<n1REPETIR
3
t<PilaPop(Env)
7
SIIzquierda(PilaTope(Env),t,S[i])
9
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
0
i<i+1
FIN_SI
Env
FIN_MIENTRAS
FIN
012

Algoritmo:Graham'sscan

01

Izquierda(1,2,3)=V

Laenvolventeconvexa

ALGORITMOGRAHAM(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
INICIO
S
min<PuntoMenorOrdenada(S,n)
4
OrdenarAngularmente(S,n,min)
PilaCrea(Env)
5
PilaPush(Env,S[0])
PilaPush(Env,S[1])
PilaPush(Env,S[2])
6
i<3
8
MIENTRASi<n1REPETIR
t<PilaPop(Env)
3
7
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
9
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
0
FIN_SI
FIN_MIENTRAS
Env
FIN
i=3t=2

Algoritmo:Graham'sscan
Env
012
01
Env
012

i=4t=2
Izquierda(1,2,4)=V

4
5

i=5t=4
Izquierda(2,4,5)=V
8

6
2
7

t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI

1
0

Laenvolventeconvexa

Env

i=4t=3
Izquierda(2,3,4)=F

Algoritmo:Graham'sscan
Env
0124
01245
Env
012456

i=7t=6
Izquierda(5,6,7)=V
i=8t=7
Izquierda(6,7,8)=F
8

t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI

4
5

6
2
3

1
0

Laenvolventeconvexa

Env

i=6t=5
Izquierda(4,5,6)=V

Algoritmo:Graham'sscan
Env
01245
0124

i=8t=5
Izquierda(4,5,8)=F

Env

012
i=8t=4
Izquierda(2,4,8)=V
t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI

6
2
3

1
0

Laenvolventeconvexa

Env

i=8t=6
Izquierda(5,6,8)=F

Algoritmo:Graham'sscan
Env
0124
012489

i=10

MIENTRASi<n1REPETIR
t<PilaPop(Env)
SIIzquierda(PilaTope(Env),t,S[i])
ENTONCES
PilaPush(Env,t)
PilaPush(Env,i)
i<i+1
FIN_SI
FIN_MIENTRAS

4
5

6
2
3

1
0

Laenvolventeconvexa

Env

i=9t=8
Izquierda(4,8,9)=V

Algoritmo:Graham'sscan
Env

Tiempodeejecucin:
mnimoO(n)
ordenacinO(nlogn)
bucleprincipalO(2n)

5
8

Teorema:
9
Elclculodelaenvolvente
convexautilizandoelmtodo
deGrahamserealizaentiempo
ptimo(nlogn)

6
2
3

1
0

Laenvolventeconvexa

012489

Lasolucinsonlospuntosdela
envolventeordenados
S

Algoritmo:LamarchadeJarvis(giftwrapping)

LamejoradeJarvis:sielsegmentoxy
pertenecealaenvolvente,elsiguiente
segmentoseryz
z

y
x

Laenvolventeconvexa

BasadoenlaPropiedad2
Unsegmentodefinidopordospuntosx,ySesunaaristade
laenvolventeconvexasiielrestodepuntosdeSquedaaun
ladodelsegmentoxy
S

Algoritmo:LamarchadeJarvis

elsegmentoconmenorngulo
partiedodes0

3.Encontrarelpuntos2talques1s2sea
elsegmentoconmenorngulo
partiedodelngulodes0s1
.....
n1.Encontrarelpuntosn1talque
sn2sn1seaelsegmentoconmenor

ngulopartiendodelngulodesn3sn2

Laenvolventeconvexa

1.Encontrarelpuntodemenorordenada
(pertenecealaenvolvente)
2.Encontrarelpuntos1talques0s1sea

Algoritmo:LamarchadeJarvis

elsegmentoconmenorngulo
partiedodes0

Laenvolventeconvexa

1.Encontrarelpuntodemenorordenada
(pertenecealaenvolvente)
2.Encontrarelpuntos1talques0s1sea
S

3.Encontrarelpuntos2talques1s2sea
elsegmentoconmenorngulo
partiedodelngulodes0s1
.....

n1.Encontrarelpuntosn1talque
sn2sn1seaelsegmentoconmenor

ngulopartiendodelngulodesn3sn2 0

Algoritmo:LamarchadeJarvis

elsegmentoconmenorngulo
partiedodes0

3.Encontrarelpuntos2talques1s2sea
elsegmentoconmenorngulo
partiedodelngulodes0s1

.....

n1.Encontrarelpuntos0talque
sn1s0seaelsegmentoconmenor

ngulopartiendodelngulodesn2sn1 0

Laenvolventeconvexa

1.Encontrarelpuntodemenorordenada
(pertenecealaenvolvente)
2.Encontrarelpuntos1talques0s1sea

Algoritmo:LamarchadeJarvis
Lasolucinsonlospuntosdelaenvolventeordenados

Teorema:
Elclculodelaenvolvente
convexautilizandoelmtodo
deJarvis(giftwrapping)se
realizaentiempoO(n2)

2
1
0

Laenvolventeconvexa

Tiempodeejecucin:
mnimoO(n)
Parakpuntos
O(n)O(kn)

Algoritmo:LamarchadeJarvis
Eltiempodeejecucindependedelvalordek

Laenvolventeconvexa

Tiempodeejecucin:
O(3n)

Tiempodeejecucin:
O(n2)

Algoritmo:Quckhull
Basadoenelmtododeordenacinquicksort

max_y

max_y
min_x

min_y

Laenvolventeconvexa

puntosinteriores
(nosevuelvenaprocesar)

Algoritmo:Quckhull
Localizar2puntosextremosa,bdeS

Laenvolventeconvexa

FUNCIONQuickHull(a,b,S)
SINOTVacio(S)
c puntomslejanodeab
A puntosaladerechadeac
B puntosaladerechadecb
RETURNQuickHull(a,c,A)+c+
+QuickHull(c,b,B)
FIN_SI
FIN_FUNCION

Algoritmo:Quckhull
Localizar2puntosextremosa,bdeS

c
b
b

aa

Laenvolventeconvexa

FUNCIONQuickHull(a,b,S)
SINOTVacio(S)
c puntomslejanodeab
A puntosaladerechadeac
B puntosaladerechadecb
RETURNQuickHull(a,c,A)+c+
+QuickHull(c,b,B)
FIN_SI
FIN_FUNCION

Algoritmo:Quckhull

Tiempodeejecucinenel
mejordeloscasos:
ocurrecuandoserealizauna
soladivisin

Laenvolventeconvexa

Tiempodeejecucinenelpeordeloscasos:
ocurrecuandotodoslospuntosestnenlaenvolvente
T(n)=T(n1)+O(n)O(n2)

Algoritmo:Incremental

descartarestospuntos

{s0,...,si1}

siCH(s0,...,si1)

siCH(s0,...,si1)

Laenvolventeconvexa

Basadoenelsiguienteparadigma:seresuelveelproblemapara
untamaoi1,seaadeunnuevopuntoi,obtenindoseunnuevo
resultado

Algoritmo:Incremental
Conocerpuntostangentes

{s0,...,si1}

i1
i
i+1
D
q

puntotangente

Laenvolventeconvexa

FUNCINPuntosTangentes(S,n,q):k,l
ENTRADA:
S:polgonoconvexodetamaon
q:nuevopunto
SALIDA:kyl,puntostangentes
INICIO
k 1l 1
PARAi0HASTAn1REPETIR
SIXOR(Izquierda_sobre(S[i1],S[i],q),
Izquierda_sobre(S[i],S[i+1],q))
ENTONCES
SIk=1
ENTONCESki
SINO li;SALIR_BUCLE;
FIN_SI
I
FIN_PARA
FIN

Algoritmo:Incremental
Conocerpuntostangentes

{s0,...,si1}

puntoNO
tangente

i1
i
D
q

i+1

Laenvolventeconvexa

FUNCINPuntosTangentes(S,n,q):k,l
ENTRADA:
S:polgonoconvexodetamaon
q:nuevopunto
SALIDA:kyl,puntostangentes
INICIO
k 1l 1
PARAi0HASTAn1REPETIR
SIXOR(Izquierda_sobre(S[i1],S[i],q),
Izquierda_sobre(S[i],S[i+1],q))
ENTONCES
SIk=1
ENTONCESki
SINO li;SALIR_BUCLE;
FIN_SI
D
FIN_PARA
FIN

Algoritmo:Incremental
Conocerpuntostangentes

Laenvolventeconvexa

FUNCINPuntosTangentes(S,n,q):k,l
ENTRADA:
S:polgonoconvexodetamaon
{s0,...,si1}
q:nuevopunto
SALIDA:kyl,puntostangentes
INICIO
k 1l 1
PARAi0HASTAn1REPETIR
SIXOR(Izquierda_sobre(S[i1],S[i],q),
puntoNO
Izquierda_sobre(S[i],S[i+1],q))
tangente
ENTONCES
SIk=1
ENTONCESki
i1
SINO li;SALIR_BUCLE;
FIN_SI
i+1
i
D
FIN_PARA
D
FIN

Algoritmo:Incremental
Conocerpuntostangentes

Laenvolventeconvexa

FUNCINPuntosTangentes(S,n,q):k,l
ENTRADA:
S:polgonoconvexodetamaon
{s0,...,si1}
q:nuevopunto
SALIDA:kyl,puntostangentes
INICIO
k 1l 1
PARAi0HASTAn1REPETIR
SIXOR(Izquierda_sobre(S[i1],S[i],q),
puntotangente
Izquierda_sobre(S[i],S[i+1],q))
ENTONCES
SIk=1
ENTONCESki
SINO li;SALIR_BUCLE;
FIN_SI
i1
D
FIN_PARA
I
FIN
i

i+1

Algoritmo:Incremental
Aadirelpuntoalaenvolvente

{s0,...,si1}

l+1

Nota:
kylsonlospuntos
tangentes,perosabemos
elordendeaparicinen
lasecuencia

l
l1

k
k+1

k1

Laenvolventeconvexa

CH(s0,...,si1,q)={s0,s1,...,sk1,sk,q,sl,sl+1,sl+2}

Algoritmo:Incremental

Tiempodeejecucinparaalgoritmomejorado:
1.OrdenarlospuntosdeizquierdaaderechaO(nlogn)
1.Comenzarcontrespuntos
(untringulosiempreesconvexo)
2.Parai=0HASTAn3puntosO(nlogn)
calculartangentesentiempoO(logi)

Laenvolventeconvexa

Tiempodeejecucin:
1.Comenzarcontrespuntos
(untringulosiempreenconvexo)
2.Parai=0HASTAn3puntosO(n2)
calcularsiestcontenidoenelpolgonoO(i)
calculartangentesO(i)

Algoritmo:DivideyVencers
Basadoenelparadigma:CH(S)=CH(s0,...,sk1)CH(sk,...,sn1)

delaizquierdaySDeldeladerecha,

ambosdetamaon/2
3.ConstruirCH(SI)yCH(SD)

recursivamente
4.MezclarCH(SI)yCH(SD)consiguiendo
CH(S)

SI

SD

Laenvolventeconvexa

1.OrdenarSporlacoordenadax
2.DividirSendossubconjuntos,SIel

Algoritmo:DivideyVencers
Mezclarlasdosenvolventesconvexas

c
SI

b
a

Laenvolventeconvexa

FUNCIONMezclarEnvolventes(EI,ED:Poligono,n,m:Entero):E:Poligono
INICIO
MenorTangente(EI,ED,n,m,a,b)
S
d
MayorTangente(EI,ED,n,m,c,d)
E<a+b+b+1,...,d1+d+c+c+1,...,a1
FIN
SD

Algoritmo:DivideyVencers
Mezclarlasdosenvolventesconvexas

b
a

Laenvolventeconvexa

FUNCIONMezclarEnvolventes(EI,ED:Poligono,n,m:Entero):E:Poligono
INICIO
MenorTangente(EI,ED,n,m,a,b)
S
d
MayorTangente(EI,ED,n,m,c,d)
E<a+b+b+1,...,d1+d+c+c+1,...,a1
FIN

Algoritmo:DivideyVencers
Clculodelamenortangente

Laenvolventeconvexa

FUNCIONMenorTangente(EI,ED:Poligono,n,m:Entero):a,b:Entero
INICIO
a<MasDecha(EI,n)
b<MasIzda(ED,m)
0
REPETIR
aa<a
1
bb<n
5
MIENTRASNO
4
(TangenteMenor(EI,n,a,b))
2
a<(a1+n)modn
3
FIN_MIENTRAS
MIENTRASNO
(TangenteMenor(ED,m,a,b))
3
2
b<(b+1)modn
1
0
FIN_MIENTRAS
HASTA(aa=aANDbb=b)
FIN

Algoritmo:DivideyVencers
Clculodelamenortangente

Laenvolventeconvexa

FUNCIONMenorTangente(EI,ED:Poligono,n,m:Entero):a,b:Entero
INICIO
a<MasDecha(EI,n)
b<MasIzda(ED,m)
0
REPETIR
aa<a
1
bb<n
5
MIENTRASNO
(TangenteMenor(EI,n,a,b))
4
2
a<(a1+n)modn
FIN_MIENTRAS
3
MIENTRASNO
(TangenteMenor(ED,m,a,b))
3
2
b<(b+1)modn
1
FIN_MIENTRAS
0
HASTA(aa=aANDbb=b)
FIN

Algoritmo:DivideyVencers
Clculodelamenortangente

Laenvolventeconvexa

FUNCIONMenorTangente(EI,ED:Poligono,n,m:Entero):a,b:Entero
INICIO
a<MasDecha(EI,n)
b<MasIzda(ED,m)
0
REPETIR
aa<a
1
bb<n
5
MIENTRASNO
(TangenteMenor(EI,n,a,b))
4
2
a<(a1+n)modn
FIN_MIENTRAS
3
MIENTRASNO
(TangenteMenor(ED,m,a,b))
3
2
b<(b+1)modn
1
FIN_MIENTRAS
0
HASTA(aa=aANDbb=b)
FIN

Algoritmo:DivideyVencers
Tiempodeejecucin:
1.OrdenarO(nlogn)
2.Procesorecursivo
MenorymayortangenteO(n)

Ecuacionesderecurrencia:

Algoritmo:diagramapolar
BasadoenlaPropiedad2,peromejorandolamarchadeJarvis
Eldiagramapolaresunateselacindelplanoqueasignauna
reginpolaracadapuntosideS,demodoquedicharegin
esellugardelospuntosmscercanosangularmenteasique
aningnotrosjdeS.

Lacercanaangulardebeserconsideradatomandounngulo
departidayunadireccindepartida.

DealgnmodoeldiagramapolaresundiagramadeVoronoique
utilizaelcriteriodelmenorngulopolarenvezdelamenor
distanciaeucldea

Algoritmo:diagramapolar
S

Cualquierpuntoxsituadoenestaregin
veprimeroalpuntosiantesquea
cualquierotro,alrealizarunbarrido
angularensentidoantihorarioy
partiendodelngulo0

si

Algoritmo:diagramapolar
S
Existeunapropiedaddeldiagramapolar
quepermiteelclculodelaenvolvente
convexa:aquellosejespolaresoblicuos
quenointersectanconotrosejesparten
depuntosqueestnenlaporcin
derechadelaenvolventeconvexa

Algoritmo:diagramapolar
ALGORITMODP(VARS:NubePuntos,n:entero,VAREnv:Poligono)
ENTRADA:LanubedepuntosSdetamaon
SALIDA:LaenvolventeconvexadeS,CH(S)
INICIO
OrdenarDescendiente(S,n)
PilaCrea(Env)
PilaPush(Env,S[0])
PilaPush(Env,S[1])
PARAi=2;i<n;i<i+1REPETIR
t<PilaPop(Env)
MIENTRAS(NOTPilaVacia(Env)AND(larectaquepasaporlospuntos
TopePila(Env)ytintersectaconelsemiejehorizontalquepartedes[i]))
t<PiPop(Env)
FIN_MIENTRAS
PilaPush(t)
PilaPush(S[i])
FIN_MIENTRAS
FIN

Algoritmo:diagramapolar
Enrealidadlaenvolventeconvexaesunsubproductodelclculodeldiagrama
polar:elconjuntodepuntosquepermanecenenlapilatraselprocesocoincide
conlaporcinderechadelaenvolventeconvexadeS.
Elsiguienteejemplomuestraelestado
i=2
delapilaalfinaldecadaiteracin
02

S
0
1
4
5

8
9

i=3

04

i=4

045

023

i=5

0456

i=6

047

i=7

0478

i=7

0479

i=7

Bibliografa
OROURKE Joseph. Computational Geometry in C. Cambridge
UniversityPress.1998(captulo3)

Laenvolventeconvexa

PREPARATAF.P.,SHAMOSM.I.ComputationalGeometry.An
Introduction.SpringerVerlag.1985(captulo3)

Vous aimerez peut-être aussi