Sie sind auf Seite 1von 26

Tema 4

G
e
o
m
e
t
r

a

C
o
m
p
u
t
a
c
i
o
n
a
l
Localizacin de puntos
Curso: 1 de Ingeniera Informtica, Plan 2004
Profesora: Lidia Ortega Alvarado
Departamento: Informtica
Curso acadmico: 2011/12
Ubicacin: http://wwwdi.ujaen.es/asignaturas/gc/tema4.odp
Actualizado: 03/11/2010
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
ndice

Introduccin

Punto en Polgono

Localizacin en subdivisin plana

Mtodo de las franjas

Mapas trapezoidales

Mtodo de la cadena

Bibliografa
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Introduccin
Los problemas de localizacin responden a la siguiente
pregunta: en qu posicin pinchamos en el mapa?
o lo que es lo mismo, dada un subdivisin del plano, cual es
la regin donde se encuentra el punto p?
una divisin del plano (del espacio, de un polgono, etc.) es
una particin en regiones, de modo que la unin de ellas es
el plano (polgono, espacio, etc.) y la interseccin es el conjunto
de ejes o semiejes que les sirven de frontera entre las regiones.
Punto en polgono
q
est q dentro de P?
P
1
2 3 4
5
si el nmero de intersecciones es impar q est dentro
si el nmero de intersecciones es par q no est dentro
1
2
3
4
5
q
6
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
P x y
0
1
2
...
n-2
n-1
Suponemos
P como un
array nx2
p
2
Punto en polgono
q
P
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
origen de
coordenadas
FUNCTION PuntoEnPoligono (P:Poligono; q:Punto; n:Entero):Lgico
ENTRADA: El punto q que est dentro o no del polgono P de tamao n
SALIDA: Verdadero si q est dentro de P
Falso en caso contrario
INICIO
PARA i <- 0 HASTA n-1 REPETIR
PARA j <- 0 HASTA 1 REPETIR
P[i,j] <- P[i,j]-q[j]
cross <- 0
PARA i <- 0 HASTA n-1 REPETIR
i1 <- (i+n-1) mod n
SI (((P(i,1)>0 AND P(i1,1)<=0)) OR
((P(i1,1)>0 AND P(i,1)<= 0 )))
ENTONCES
x <- P(i,0)*P(i1,1)-P(i1,0)*P(i,1)/(P(i1,1)-P(i,1))
SI x > 0 ENTONCES cross <- cross + 1
SI (cross mod 2) = 1
ENTONCES PuntoEnPoligono <- verdad
SINO PuntoEnPoligono <- false
FIN.
1
2
3
4
5
6
Punto en polgono
P
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Tiempo de ejecucin: O(n)
Mejora para polgonos
convexos O(logn)
q
Los vrtices de un polgono
convexo estn ordenados
angularmente con algn punto
interior, por ejemplo el centroide
0
1
2
3
4
5
6
7
8
9
c
Punto en polgono
P
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
q
0
1
2
3
4
5
6
7
8
9
c
Bsqueda dicotmica:

Izquierda(q,c,4) = F

Izquierda(q,c,5) = F
Buscar a la izquierda

Izquierda(q,c,2) = V

Izquierda(q,c,3) = V
Buscar a la derecha

Izquierda(q,c,3) = V

Izquierda(q,c,4) = F
Encontrado
r
Diferenciar entre dentro y fuera:

Izquierda(3,4,q) = V
Dentro

Izquierda(3,4,r) = F
Fuera
Punto en polgono
P
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Tiempo de ejecucin: O(logn)
Este mtodo es tambin
vlido para polgonos
estrellados
Un polgono es estrellado cuando existe al menos un punto en su
interior desde el cual todos los segmentos qp
i
estn dentro de P.
Al conjunto de puntos que cumplen esta condicin se le llama
ncleo del polgono.
0
1
2
3
4
5
6
7
8
9
c
c
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Mtodo de las franjas
1.- Pintamos fanjas verticales
(horizontales) infintias en cada
vrtice. Cada una de las n-1
franjas carece de vrtices
2.- Ordenamos las franjas en
tiempo O(n logn)
3.- Buscar en las franjas
verticales en tiempo O(logn)
4.- Buscar horizontalmente en
la franja elegida
Es importante que las bsquedas se realicen en tiempo
logartmico utilizando estructuras de datos adecuadas
q
q
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
q
Tiempo de ejecucin (Mtodo de las franjas): O(logn)
Carga de datos: O(n
2
), aunque normalmente es O(n*n
1/2
)
Una mejora al mtodo de las franjas en cuanto a la carga
de datos es el mapa trapezoidal
Mapas trapezoidales
1.- Metemos la subdivisin plana
en un rectngulo.
Si q est fuera del rectngulo,
tambin lo est fuera de la
subdivisin plana
2.- Pintamos fanjas verticales
(horizontales) hacia arriba y hacia
abajo hasta encontrar un
obstculo.
La carga de datos es lineal
6n+4 vrtices y 3n+1 trapecios
Una cara de un mapa trapezoidal tiene una
o dos lados verticales y exactamente dos no
verticales, es decir, es un trapecio o un
tringulo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Bsqueda binaria en mapas
trapezoidales
3.- Contruir un grafo acclico que
soporte dicha particin:

1 raz,

1 hoja por trapecio,

x-nodo para los vrtices


est q a la izda o la decha?

y-nodo para los segmentos


est q arriba o abajo?
A
B
C
D
F
E
G
p
1
r
1
p
2
r
2
s
1
s
2
p
1
r
1
A
s
1
r
2
s
2
p
2
s
2
B
C
D
F
G
E
q
decha
izda
abajo
decha
abajo
Tiempo de bsqueda
esperado
O(logn)

Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Algoritmo aleatorio incremental
(mapas trapezoidales)
A
B
C
D
p
1
r
1
s
1
p
1
r
1 A
s
1
B C
D
s
2
p
2
r
2
T =mapa trapezoidal
D =rbol o estructura de datos
Para cada uno de los n segmentos
1.- Elegir un segmento s
i
aleaoriamente
2.- Encontrar los k trapecios en T
intersectados tras colocar s
i
3.- Eliminar esos k trapecios
en T e insertar los nuevos
tras colocar s
i
4.- Eliminar las k hojas
de D y crear nuevas hojas
de acuerdo con el siguiente
mtodo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
A
B
C
D
F
E
G
p
1
r
1
p
2
r
2
s
1
s
2
p
1
r
1 A
s
1
B C
D
Algoritmo aleatorio incremental
(mapas trapezoidales)
T =mapa trapezoidal
D =rbol o estructura de datos
Para cada uno de los n segmentos
1.- Elegir un segmento s
i
aleaoriamente
2.- Encontrar los k trapecios en T
intersectados tras colocar s
i
3.- Eliminar esos k trapecios en T
e insertar los nuevos tras colocar s
i
4.- Eliminar las k hojas de D y
crear nuevas hojas de acuerdo con
el siguiente mtodo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
A
B
C
D
F
E
G
p
1
r
1
p
2
r
2
s
1
s
2
p
1
r
1
s
1
r
2
s
2
B
p
2
s
2 C
D
F
G
E
T =mapa trapezoidal
D =rbol o estructura de datos
Modificar D despus de colocar a s
i

4.1.- Colocar p
i
y s
i
en D
4.2.- Colocar r
i
y s
i
en D
A Tiempos:
Carga de datos:
O(n), esperado
Tiempo de construccin:
O(nlogn), esperado
Tiempo de localizacin:
O(logn), esperado
Algoritmo aleatorio incremental
(mapas trapezoidales)
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Mtodo de la cadena

Consiste en encontrar una serie de separadores que dividan la


particin plana en franjas, con objeto de realizar bsquedas
binarias. A estos separadores denominamos cadenas montonas
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Mtodo de la cadena

Consiste en encontrar una serie de separadores que dividan la


particin plana en franjas, con objeto de realizar bsquedas
binarias. A estos separadores denominamos cadenas montonas

Una cadena o lnea poligonal es una coleccin de


vrtices unidos entre s de modo
que cada vrtice est unido
nicamente con otros dos
(excepto los extremos)
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Mtodo de la cadena

Consiste en encontrar una serie de separadores que dividan la


particin plana en franjas, con objeto derealizar bsquedas
binarias. A estos separadores denominamos cadenas montonas

Una cadena o lnea poligonal es una coleccin de


vrtices unidos entre s de modo
que cada vrtice est unido
nicamente con otros dos
(excepto los extremos)

Un cadena es montona con


respecto al eje de coordenadas y
(y-montona) si cualquier recta
horizontal slo intersecta con ella
como mximo una vez
Existe una restriccin:
slo es vlido para grafos regulares
no y-monnona
y-monnona
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

Un grafo es regular cuando todos sus vrtices son vrtices


regulares

En un grafo ordenado, el vrtice i es menor que el vrtice j, i<j,


sii y(v
i
)<y(v
j
). Se dice que v
i
es un vrtice regular si se cumple que
j<i<k, es decir, existe al menos un vrtice con menor ordenada y otro
vrtice con menor ordenada (excepto en los extremos, v
0
, v
i
)

Los vrtices no regulares deben


convertirse aadindose nuevos
ejes. El resultado son subdivisiones
planas montonas
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

Una vez regularizado el PSLG (planar straight-line graphs), el


siguiente paso consiste en construir las cadenas montonas, para
ello es necesario asignar pesos a los distintos ejes.

Los pesos de los ejes siempre deben ser positivos.


El eje v
i
v
j
es entrante en el nodo v
j
si i<j, es decir, la ordenada de
v
i
es menor que la de v
j
El eje v
k
v
r
es saliente en el nodo v
k
si k<r, es decir,
la ordenada de v
k
es menor que la de v
r

Los vrtices acumulan pesos de los


ejes salientes y entrantes de modo que
la suma de los pesos entrantes debe
ser igual a la sumade los ejes salientes.
1
1
2
1
1
1
2
1
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
Algoritmo para asignar pesos
1.- Asignar a todos los vrtices el peso 1
Peso(e
i
)=1, para todo i
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
2.- PARA i = 1 HASTA n-2 REPETIR
Pesos_entrada(V
i
)= suma de los pesos de entrada de los ejes de V
i

SI (Pesos_entrada(V
i
) > Pesos_salida(V
i
)) {
d
1
= el eje de salida ms a la izquierda de V
i

Pesos(d
1
) = Pesos_entrada(V
i
) Pesos_salida(V
i
) + 1
FIN_SI
FIN_PARA 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1X 2
4>2
3 X
2>1
X 2
1=1
1=1
3>2
2=2
1<3
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
3.- PARA i = n-2 HASTA 1 REPETIR
Pesos_salida(V
i
)= suma de los pesos de entrada de los ejes de V
i

SI (Pesos_salida(V
i
) > Pesos_entrada(V
i
)) {
d
2
= el eje de entrada ms a la izquierda de V
i

Pesos(d
2
) = Pesos_salida(V
i
) Pesos_entrada(V
i
) + Pesos(d
2
)
FIN_SI
FIN_PARA
1
1
1
1
1
1
1
1
1
1
2
1
3
1
1
2
2=2
1=1
4=4
3=3
2=2
3>1
3 X
1=1
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

Finalmente, una vez determinados los pesos de los ejes, se


localizan las cadenas montonas.

El mtodo: se buscan cadenas de arriba hacia abajo, siempre


lo ms hacia la izquierda posible mientras el peso asociado sea
mayor que cero.

Restar 1 cada vez que se pasa por un eje


1
1
1
1
1
1
1
1
1
1
2
1
3
1
3
2
2
0
0
2
0
1
1
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
C
1
C
2
C
3
C
4
C
5
C
6 C4
C2 C6
C1 C3 C5
Tiempo para regularizar un PSLG con n vrtices: O(n logn)
Carga de datos: O(n)
Tiempo de construccin: O(n logn)
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
C
1
C
2
C
3
C
4
C
5
C
6
C4
C2 C6
C1 C3 C5
Ejemplo de localizacin: dnde est q?
q decha
izda
decha
q
Tiempo de localizacin
(Mtodo de la cadena):
O(log
2
n)
Bibliografa
P
r
o
b
l
e
m
a
s

d
e

l
o
c
a
l
i
z
a
c
i

n
OROURKE Joseph. Computational Geometry in C. Cambridge University
Press. 1998 (captulo 2 y 7)
PREPARATA F.P., SHAMOS M.I. Computational Geometry. An Introduction.
Springer-Verlag. 1985 (captulo 2)
BERG, KREVELD, OVERMARS, SCHWARZKOPF. Computational
Geometry, Algorithms and Applications. Springer. 1997 (captulo 6)

Das könnte Ihnen auch gefallen