Beruflich Dokumente
Kultur Dokumente
Mezclando Ay B
recursivamente.
4. Mezclamos A y B : computamos conv{AUB}
Mezclando a y b
ALGORITMO DE CHAN
17/12/2010
ALGORITMO DE CHAN
Como ya se vio, los algoritmos para calcular la cubierta convexa
toma al menos un tiempo O(n) y que el factor log n se da porque se requiere ordenar al menos n puntos en la cubierta .
El algoritmo de Chan busca tener un tiempo de ejecucin O(n
log h), siendo h un numero inicialmente desconocido e igual al numero de puntos en la cubierta; para esto combina inteligentemente dos algoritmos ms lentos (algoritmo de Graham y la Caminata de Jarvis), pero que da como resultado un algoritmo que es ms rpido que cualquiera de los dos anteriores.
grande como h: digamos ( h <= m <= h2). Adems chan ide particionar los puntos en grupos, cada uno de tamao m (r = n/m). Se calcula la cubierta para cada grupo formado con el algoritmo de Graham (O(n log m)), pero dado que m <=h2 resulta en O(n log h) como tiempo total. Ahora lo que falta es combinar estas r cubiertas individuales para formar una sola, para esto usa el algoritmo de Caminata de Jarvis, pero tratando a cada grupo de puntos como si fuera un solo y gran punto, calculando las tangentes entre puntos (polgono de m lados) en un tiempo O(log m). Dado que el prximo vrtice de la cubierta puede estar en el mismo grupo actual, esto puedo convertirse en una especie de bsqueda binaria.
sucesivamente valores ms grandes de m, cada vez elevando al cuadrado el valor anterior hasta que el algoritmo regrese un resultado exitoso: m = 21, 22, 24, ., 22t
Como ya se sabe
, el tiempo de ejecucin
aproximado es:
Hull(P ) :
Tenga en cuenta que 2 ^ 2 ^ t tiene el efecto de la cuadratura del valor anterior de "m". Cunto dura esta toma? La iteracin t-simo tiene: O(n log 2^2^t ) = O(n* 2^t )
Algoritmo de Chan.
PartialHull(P; m) : (1) Let r = (n/m).Particionar P en subconjuntos
n = 32
EJEMPLO:
(2)
m=8 r=4
(3) (4)
(2)
(3)
(5)
17/12/2010
DIAGRAMA POLAR
Sea S un conjunto de puntos en el plano. El Diagrama polar consiste en asignarle a cada punto s[i] del
conjunto, una regin polar, dentro de la cual todos los puntos ven primero a s[i], antes que a cualquier otro punto de S, al realizar un barrido en sentido antihorario empezando desde los 0.
convexo aquellos puntos cuyo eje oblicuo no intercepta a ningn semieje horizontal que parte de algn s[i] por debajo de ellos.
ALGORITMO DP Entrada: Conjunto S de n puntos Salida: Parte derecha de la envolvente convexa de S [ CH(S)] Proceso: Ondenar_descendente(S,n); PilaCrea(Env); PilaPush(Env,S(0)); PilaPush(Env,S(1)); Para i Desde 2 Hasta n Repetir t PilaPop(Env); Mientras (NOT PilaVacia(Env) AND Segmento formado por TopePila(Env) y t intercepta con el semieje horizontal que parte de S(i) ) t PilaPop(Env); Fin Mientras PilaPush(Env,t); PilaPush(Env,S(i)); Fin Para FIN
17/12/2010
2 0
17/12/2010
4 0
5 4 0
4 0
6 5 4 0
5 4 0
17/12/2010
4 0
7 4 0
4 0
8 7 4 0
7 4 0
17/12/2010
4 0
9 7 4 0
GRACIAS
9 7 4 0