Académique Documents
Professionnel Documents
Culture Documents
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)