mithesisGC Intro2 PDF
mithesisGC Intro2 PDF
mithesisGC Intro2 PDF
net/publication/304782087
CITATIONS READS
0 446
1 author:
Osmer Montilla
Simon Bolívar University
1 PUBLICATION 0 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Osmer Montilla on 04 July 2016.
Mayo 2015
Caracas, Venezuela
A mis Padres y Amigos, en especial al Prof. Francisco
Rivero
AGRADECIMIENTOS
Agradezco a los profesores y todo el personal del Centro Local Metropolitano con
quienes he convivido y que considero muy valiosos para mí: Eddy Abreu, Luis
Cappellucci, Oscar Neira, Giusseppe Lanza, Efraín Salas, Yulimar, W. Sánchez,
Cassandra y otros más. En el área de Biblioteca: César P., Jonathan V. En Ad-
ministración: Danny Rodríguez. Además, profesores y personal del Nivel Central:
Carla, Gilberto, Alfredo, Alvaro, José Gascón.
Mis compañeros de carrera: Henry Peñalver, Ernesto Ruiz, Alexander Bravo, Al-
fredo Duarte, Javier Ovalles (primer egresado del nuevo pensum de la carrera de
Matemática).
Y a todos aquellos que no he nombrado pero que sin duda me han prestado su
apoyo, su colaboración, en especial, la familia Angarita. Les agradezco desde lo
más profundo de mi corazón.
vii
RESUMEN
Introducción 1
1.2. MOTIVACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3. ANTECEDENTES . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5. OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6. METODOLOGÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2. PRELIMINARES 15
2.1. GEOMETRÍA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
xv
Índice general Índice general
2.5. POLÍGONOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9.2. Recursividad . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.10. GRAFOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5. APLICACIONES DE LA CC . . . . . . . . . . . . . . . . . . . . 53
xvi
Índice general
4.7. APLICACIONES DE LA TD . . . . . . . . . . . . . . . . . . . . 68
5.3. DUALIDAD Y TD . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6. IMPLEMENTACIÓN EN SCILAB 95
xvii
Índice general Índice general
xviii
Índice general
8. APÉNDICE 171
xix
Índice general Índice general
Bibliografía 193
Nomenclatura 203
xx
Índice de algoritmos
2. Marcha de Jarvis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3. CC Incrementable . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. Concatenación puentes . . . . . . . . . . . . . . . . . . . . . . . . . 51
6. Puente inferior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8. Incremental AT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
xxi
ÍNDICE DE ALGORITMOS ÍNDICE DE ALGORITMOS
xxii
Listados de código
xxiii
Índice de figuras
2.2. Mediatriz de A y B . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3. Tangentes a Hk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3. Estrella de pn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
xxv
Índice de figuras Índice de figuras
4.6. 3 posiciones de D . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4. Hiperplanos de p y q . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.9. Dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
xxvi
Índice de figuras
xxvii
Índice de figuras Índice de figuras
xxviii
INTRODUCCIÓN
Existen paquetes de libre descarga como Geogebra y el Scilab, que son herramien-
tas poderosas para el aprendizaje individual. Lo que nos motiva es el estudio de
los conjuntos finitos de puntos en tres aspectos a saber: encontrar una estructura
poligonal convexa que los encierre a ellos (capítulo III), encontrar la mejor manera
1
de modelar una superficie (capítulo IV) y encontrar la estructura que nos indique
el sitio más cercano para un punto de prueba dado ubicado en el plano (capítulo
V).
La parte práctica del trabajo está en un CD con los archivos del Scilab (Capítulo
2
VI). En este capítulo se explican muchos comandos básicos del Scilab y los códigos
fuente implementados allí. Se comienza con algoritmos de introducción de datos.
Se usan funciones de librería y el módulo Metanet para realizar la CC, los Puentes
de Interconexión y TD. Para el DV se realizan funciones para encontrar el dual
del TD. Se verifican las entradas y salidas en la consola y las ventanas gráficas.
Se verifica la eficiencia con la función timer().
El capítulo VII es una reflexión sobre lo desarrollado hasta ahora. Se dan las
conclusiones y recomendaciones.
3
1 UBICACIÓN DEL TRABAJO
1
Ver por ejemplo los eventos http://www.dais.is.tohoku.ac.jp/~socg2014/ y http://
www.win.tue.nl/SoCG2015/.
5
UBICACIÓN DEL TRABAJO
1.2. MOTIVACIÓN
De manera que la Geometría con regla y compás sube un mayor nivel. Se suma
una nueva herramienta que potencia el estudio de la resolución de problemas
geométricos, esta herramienta es la computadora. Ahora hablamos de Geometría
Computacional.
6
1.3 ANTECEDENTES
Se tratarán los conjuntos finitos de puntos, que pueden representar cualquier con-
junto de objetos distribuidos en el espacio en la vida real. Sobre ellos se realizarán
los algoritmos para encontrar su Envoltura o Cápsula Convexa (CC), la Trian-
gulación de Deloné (TD) y el Diagrama de Voronoi (DV), tres estructuras muy
relacionadas entre sí y con muchas aplicaciones, como bien dice Abellanas en su
artículo [4]. La profundización del estudio de la GC podrá ser de mucho provecho
a la hora de crear o mejorar la productividad y la eficiencia tanto en el sector
público como privado que requiera el auxilio de la Geometría en sus operaciones.
1.3. ANTECEDENTES
Mientras los algoritmos formales han existido por milenios (el algoritmo de Eu-
clides2 para determinar el máximo común divisor de dos números es aun usado
en computación), después de Euclides, el análisis de algoritmos enfrentó casi 2000
años de decadencia.
7
UBICACIÓN DEL TRABAJO
co. Finalmente, entre 1931 y 1936 Gödel, Church, y Stephen Kleene introdujeron
la noción de funciones “recursivas3 ”.
Una vez que la noción de funciones “recursivas” habían sido formuladas, Church
afirmó que la clase de funciones recursivas era exactamente la misma que la clase
de funciones “efectivamente calculables”. Esto no pudo ser demostrado y se llamó
la “Tesis de Church”.
Una de las más fuertes piezas de evidencia para la Tesis de Church es que en 1936
Turing4 encontró una manera diferente de formalizar la noción de algoritmo, el
cual demostró que era equivalente, es decir, toda función computable en su nuevo
sentido también es recursiva y viceversa.
Casi todos los matemáticos se pondrían de acuerdo de que existe una diferencia
notable entre demostraciones constructivas y demostraciones indirectas de exis-
tencia, una diferencia que ha llegado a ser más clara con el surgimiento de la
ciencia de la computación.
8
1.3 ANTECEDENTES
Como actores principales de los conceptos básicos que veremos tenemos a Ronald
Graham (1972), Boris Delone (1924) y Georgy Voronoi (1908), quienes dieron
los primeros resultados de sus investigaciones en la geometría relativa al análisis
de conjuntos finitos de puntos. Vemos una ligera descripción biográfica según
O’Connor y Robertson en [57, 56, 55], respectivamente, además de otras vidas
que contribuyeron al desarrollo actual.
5
Revistas como www.journals.elsevier.com/computational-geometry/, www.
worldscientific.com/worldscinet/ijcga y www.link.springer.com/journal/454.
Además, está www.jocg.org
9
UBICACIÓN DEL TRABAJO
Actores de los que se ha recopilado información están los españoles Manuel Abe-
llanas, Clara Grima, David Orden, Belén Palop, Vera Sacristán, Pedro Reyes, J.
Priego, M. Porres, R. Guerequeta, A. Vallecillo, de México Eduardo Rodríguez, de
Chile Pablo Barceló, Pedro Valenzuela, de USA y otros países Franco Preparata,
Jianer Chen, Joseph O’rourke, Satyan Devadoss, Mark de Berg, M. Van Kreveld,
Otfried Cheong, P. Cignoni, Christopher Gold, Leonidas Guibas, Craig Kaplan,
Nandy Subhas, A. Kumar, M. Sharir, Ken Shirriff, Herbert Wilf, M. Bern, D.
Eppstein, Timothy Chan, A. Dumitrescu, O. Goldreich, A. Wigderson, C. Law-
son, I. Pinelis, A. Sheffer, R. Seidel, y otros. En Venezuela F. Rivero, F. Tovar, J.
Lockiby, J. Ruiz, L. León, M. Rosas.
10
1.5 OBJETIVOS
1.5. OBJETIVOS
11
UBICACIÓN DEL TRABAJO
1.6. METODOLOGÍA
12
1.6 METODOLOGÍA
13
2 PRELIMINARES
2.1. GEOMETRÍA
Geometría1 (del griego geō, “tierra”; metrein, “medir”), rama de las matemáti-
cas que se ocupa de las propiedades del espacio que nos rodea. El matemático
griego Euclides (300 a.C.) fue el autor de Los Elementos, un cuerpo deductivo
de conocimientos altamente organizado, vigente hasta nuestros días. El filósofo
y matemático francés René Descartes, cuyo tratado “La Geometría”2 , publicado
en 1637, hizo época. Este trabajo fraguó una conexión entre la Geometría y el
Álgebra al demostrar cómo aplicar los métodos de una disciplina en la otra. Éste
es el fundamento de la geometría analítica, en la que las figuras se repre-
sentan mediante expresiones algebraicas, sujeto subyacente en la mayor parte de
la Geometría moderna. La Geometría analítica fue desarrollada en el siglo XVIII
especialmente por Euler. Hacia el fin de éste siglo, el análisis fue otra vez aplicado
a la Geometría. Por ejemplo, la contribución de Monge puede ser reconocida como
un precursor de la geometría diferencial.
15
2.2 PUNTO Y MÉTRICA
16
PRELIMINARES
(x11 , x12 ), (x21 , x22 ), ...(xn1 , xn2 ) de números de punto flotante3 en Q × Q con una
métrica dada por d, la cual es una función binaria, simétrica, no-negativa (siempre
d ≥ 0), definida por
i1/2
d(x, y) = (y1 − x1 )2 + (y2 − x2 ) 2
h
(2.1)
Para dos puntos (x1 , x2 ) y (y1 , y2 ), que satisfacen la Desigualdad del Triángulo
GEOMETRÍA EUCLIDIANA
17
2.4 COMBINACION CONVEXA Y MEDIATRIZ
Proposición 2.3.2. Si p y q son puntos hay una y sólo una recta que los contiene
a ambos (Fig. 2.1).
Definición 2.3.3. Se dice que los puntos de un conjunto están alineados si y sólo
si hay una recta que los contiene a todos.
Proposición 2.3.6. Si dos puntos de una recta están en un plano, todos los
puntos de esta recta están en él.
Definición 2.3.7. Se dice que los puntos de un conjunto son coplanares si y sólo
si hay un plano que los contiene a todos ellos.
αq + (1 − α)r (2.3)
18
PRELIMINARES
con α ∈ Q, 0 ≤ α ≤ 1.
Esta combinación convexa describe el segmento de línea recta uniendo los dos
puntos q y r. Normalmente se denota como qr. Esto se extiende naturalmente a
E 3.
19
2.5 POLÍGONOS
2.5. POLÍGONOS
Los polígonos son a la geometría plana como los enteros son a la matemática nu-
mérica: un subconjunto discreto del gran universo de posibilidades que se prestan
a sí mismos a cálculos eficientes. El polígono del cual partimos es el triángulo.
Definición 2.5.1. La unión de los tres segmentos determinados por tres puntos
no alineados se llama triángulo4 .
Un polígono P es la región cerrada del plano acotada por una colección finita
de segmentos de línea que forman una curva cerrada que no se interseca a sí
misma. Los segmentos de línea se llaman aristas y los puntos donde las aristas
adyacentes se encuentran se llaman vértices, de manera que cada vértice contiene
exactamente los extremos de dos aristas. El conjunto de vértices y aristas de P se
llama la frontera del polígono, denotado ∂P . En la Fig. 2.3, polígono es el de la
izquierda5 .
4
Veremos en capítulo III Capítulo 4 que la estructura TD es la unión de triángulos con carac-
terísticas especiales.
5
En capítulo III Capítulo 3 veremos que siendo la CC un polígono, entonces su frontera son
las aristas con sus vértices que ella forma. Además ∂(T D) = ∂(CC) y ∂(DV ) = Ø
20
PRELIMINARES
21
2.5 POLÍGONOS
yacer en el mismo conjunto. Así, los conjuntos pares (definidos por los cruces
del rayo) y los conjuntos impares están conectados entre sí. Además, si existe
un camino entre puntos en conjuntos diferentes, entonces este camino debe
intersecar ∂P , de otra manera, pertenecerían al mismo conjunto (Fig. 2.4).
22
PRELIMINARES
Las triangulaciones son las factorizaciones primas de los polígonos, pero sin el be-
neficio del Teorema Fundamental de la Aritmética, que garantiza una factorización
única.
Lema 2.5.4. Todo polígono con más de tres vértices tiene una diagonal.
23
2.5 POLÍGONOS
para todos los vértices de T . Por lo tanto, sumaremos para todos los vértices de
T , obteniendo (n + 1) · tn+2 =
Pn+1 P
i=1 T ∈τn+1 grado de vertice i de T
=
P Pn+1
T ∈τn+1 i=1 grado de vertice i de T
= 2(2n − 1)tn+1
La ultima ecuación se sigue del hecho que la suma de los grados de todos los
vértices de T es el doble del número de aristas de T y el número de diagonales
de T (ver 2.10.3). Debido a que T está en τn+1 , éste tiene n + 1 aristas, y por el
2.5.6, tiene n − 2 diagonales, lo que da 2n − 1. Resolviendo para tn+2 , obtenemos
2(2n − 1) (2n − 1) (2n − 3) 3 1 (2n)! 1 2n
!
tn+2 = tn+1 = 2n ... = =
n+1 n+1 n 32 (n + 1)!n! n+1 n
que es el número de Catalán buscado
Sabemos que a
= a!
8
b b!(a−b)!
24
PRELIMINARES
COMPUTABILIDAD Y ALGORITMOS
Para ser precisos, consideramos el conjunto de todas las secuencias finitas de ceros
y unos y lo llamamos I. Es decir I = {a1 a2 . . . an |ai ∈ {0, 1} ∧ i ∈ [1, n]}. Si M es
la Máquina de Turing y fM es la función correspondiente, entonces decimos que
M computa fM .
25
2.6 MÁQUINAS DE TURING, COMPUTABILIDAD Y ALGORITMOS
tables eficientemente.
Definición 2.6.1. Un algoritmo puede ser pensado como una Máquina de Turing
cualquiera que se detiene (halt) para toda entrada posible. Su complejidad es
definida por el número de pasos que la máquina realiza antes de detenerse.
Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo
funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-
Jordan funcionan, al menos en principio, con números de precisión infinita; sin
embargo no es posible programar la precisión infinita en una computadora, y no
por ello dejan de ser algoritmos.
26
PRELIMINARES
Continuando con la sección anterior, el tiempo tomado por una Máquina Turing
depende de la entrada, así que dada una máquina M y una cadena de caracteres
o string x, podemos definir TM (x) como el número de pasos que M realiza antes
de detenerse cuando x es la entrada. La función TM : I → N es la función de
complejidad de la máquina M .
9
Como un ejemplo de la importancia de este este tema, ver Miraikan Channel [52]. Para mayor
profundización en algoritmos, ver [41, 34, 49].
27
2.7 ANÁLISIS DE ALGORITMOS Y EFICIENCIA
Propiedades de la notación O:
28
PRELIMINARES
Obtener una cota mínima de un problema requiere establecer una cota mínima
para todos los algoritmos concebibles dentro de un cierto modelo de computación.
Cuando la cota superior de un algoritmo particular iguala la cota mínima del
problema, decimos que el algoritmo es asintóticamente óptimo.
COMPUTACIONAL
29
2.8 EL PROCESO DE LA GEOMETRÍA COMPUTACIONAL
Debido a los errores de redondeo puede repentinamente haber dos o ninguna arista
comenzando en un vértice p. Esto puede causar que el programa que implementa
un algoritmo sencillo se bloquee. El desarrollo de un algoritmo geométrico fre-
cuentemente pasa por tres fases: en la primera fase, ignoramos todo lo que pueda
obstaculizar nuestro entendimiento de los conceptos geométricos con los que esta-
mos tratando. En la segunda fase, tenemos que ajustar el algoritmo diseñado en
la primera fase a su corrección en la presencia de casos que no admiten posición
general:
30
PRELIMINARES
ESTRUCTURAS DE DATOS
31
2.9 PROGRAMAS, RECURSIVIDAD Y ESTRUCTURAS DE DATOS
En su acepción más amplia es algo más que una técnica de diseño de algoritmos.
De hecho, suele ser considerada una filosofía general para resolver problemas.
Esta técnica sugiere naturalmente el uso de la recursión, sec. 2.9.2 en las imple-
mentaciones de estos algoritmos.
15
En Scilab, el programa puede ser una función (function) o un grupo de ellas relacionadas
entre sí. Para la interacción con el usuario, se diseña una ventana con un menú de lo que
desee realizar (ver capítulo VI).
16
Implementaciones según este paradigma están en Ruiz [70], Expósito [28] y por supuesto
Geogebra[43].
32
PRELIMINARES
2.9.2. Recursividad
Las primitivas geométricas son las bases para muchos algoritmos de la Geometría
Computacional (GC). Son usadas para extraer información combinatoria a partir
de los puntos de entrada. Lo agradable acerca del uso de estas primitivas es que su
complejidad es constante, es decir O(1). Esto es así porque el modelo de compu-
tación utilizado aquí (árbol de decisión lineal) lo especifica. Más precisamente,
estas primitivas geométricas dependerán de los signos de ciertos determinantes.
33
2.9 PROGRAMAS, RECURSIVIDAD Y ESTRUCTURAS DE DATOS
Así, las primitivas realmente tendrán 3 valores: {+, −, 0}. Estos corresponden a
verdadero, falso, degenerado (es una convención).
Dados tres puntos A, B, C, CCW nos dice si estos 3 puntos están en orden con-
trarreloj alrededor de su círculo común por medio del cálculo del signo del deter-
minante
xA y A 1
xB y B 1 (2.5)
det
xC y C 1
17
La CCW es útil para el cálculo de CC, pero no es suficientepara calcular el DV o la TD. Esto
sucede así porque en algunos arreglos cada uno de los n3 triángulos tienen el mismo valor
de CCW pero los n puntos pueden tener estructuras diferentes.
34
PRELIMINARES
35
2.10 GRAFOS
determinante18
xA y A x2A + yA2 1
x2B + yB2 1
xB yB
(2.6)
det
xC yC x2C + yC2 1
xD yD x2D + yD
2
1
2.10. GRAFOS
Vecindad de v:
N (v) = {u ∈ V : u ≺ v} (2.7)
36
PRELIMINARES
Teorema 2.10.3 (de los saludos). La suma de los grados de los vértices en G es
el doble de la cantidad de aristas, esto es,
v∈V
37
2.10 GRAFOS
Definición 2.10.8. Se dice que una gráfica está conectada (conexa) siempre y
cuando cada par de vértices en la gráfica estén conectados por un camino. Es decir
38
PRELIMINARES
Si G está conectada, un vértice v cortado es aquel tal que G−v está desconectada.
De igual manera, e es una arista cortada si G − e está desconectada.
χ(G) ≤ ∆ + 1 (2.13)
39
2.10 GRAFOS
Definición 2.10.12. Una gráfica plana es una gráfica que tiene una incrustación
sin cruces en el plano21 (donde se cumple el Teorema de Jordan 2.5.2). Una
caracterización muy importante es el Teorema de Kuratowski (ver [71, 22]).
El problema del mapa de 4 colores lo propuso Francis Guthrie por primera vez en
1852, y permaneció sin resolver durante más de un siglo hasta que, a mediados
de 1970, Appel y Haken demostraron que todo mapa se puede iluminar usando
cuando mucho 4 colores22 .
3. v ∈ F ? para todo c ∈ F ?
Todo grafo plano conexo tiene un grafo dual plano. Además, este dual es único,
topológicamente hablando, y G es él mismo el dual de G? . Todo esto es fácil de
demostrar.
21
La CC, TD y DV son gráficas planas. En general, no es fácil verificar con un algoritmo si una
gráfica es plana, a pesar de tener una complejidad de O(n).
22
Ver más en [37], en que se hizo una demostración usando el software COQ de INRIA. Des-
cargable desde https://coq.inria.fr
40
3 CONVEX-HULL O CÁPSULA
CONVEXA (CC)
El primer método que se utilizó para calcular la envolvente era por fuerza bruta,
dicho proceso tenía una función de complejidad en el tiempo del orden de O(n3 ).
Primero se numeran los puntos tal como estén almacenados en la matriz, pila,
lista, etc. Luego, se toman dos puntos a la vez y se prueba si todos los demás
puntos quedan en un solo lado de la línea formada por ellos. Si esto es cierto,
entonces estos dos puntos son parte de la CC, si esto no ocurre, probamos con
el siguiente punto y así sucesivamente hasta agotar todas las posibilidades (ver
algoritmo 1).
41
CONVEX-HULL O CÁPSULA CONVEXA (CC)
O(nh).
El algoritmo para dos dimensiones, conocido como la marcha de Jarvis (ver [46]),
funciona de la manera siguiente: Se busca el punto p0 que esté con la coordenada-y
mínima, luego se selecciona el punto pi+1 tal que todos los demás puntos estén a la
derecha de la línea ←
pi−
p−→
i+1 . Repitiendo hasta que se alcance pn = p0 , se obtiene la
42
3.1 NOTAS PREVIAS
En los laboratorios Bell de finales de los 60, Ron Graham (ver [57]) desarrolló un
algoritmo para calcular la CC de cerca de 10 mil puntos en el plano. En su docu-
mento de 1972 Graham [38] presentó el primer algoritmo de T (n) ∼
= O(nlog(n)):
el Scan de Graham.
1
Kirkpatrick y Seidel dieron un algoritmo con O(nlog(h)) pero de difícil implementación, con
h el número de vértices que forman el CC.
43
CONVEX-HULL O CÁPSULA CONVEXA (CC)
Aunque esta definición y otras del mismo estilo son naturales, no son computables,
es decir, no son computacionalmente útiles. Veamos otra manera de construir una
CC. Recordemos que una combinación convexa de puntos S = {p1 , . . . , pn } es de
la forma λ1 p1 + . . . + λn pn , donde λi ≥ 0 y Σλi = 1. Una combinación particular
de estos puntos es otro punto dentro del polígono formado por ellos. Tenemos el
siguiente:
(INCREMENTAL)
Calcular la CC significa identificar los vértices de la frontera del polígono que cubre
el conjunto. Es fácil hacerlo visualmente con un pequeño conjunto de puntos, pero
si se nos dan cientos o miles de puntos dados en su forma cartesiana, entonces
calcular la CC se torna duro. Es necesario enseñar a la computadora a hacerlo.
44
3.2 EL ALGORITMO INCREMENTABLE (INCREMENTAL)
Así que ahora necesitamos una manera de sumar p a nuestra lista Hk en la posición
apropiada mientras se eliminan posibles puntos extraños.
2
La palabra incremental no aparece en RAE, más adecuado es “incrementable”, pero lo usare-
mos indistintamente.
45
CONVEX-HULL O CÁPSULA CONVEXA (CC)
Observamos allí que la tangente puede pasar por un punto o por un lado (arista)
del polígono3 .
Así que habrá dos vértices del CC donde sus aristas correspondientes pasan de
ser visibles a ser invisibles desde p. Éstos son los vértices de tangencia. Considere
cualquier arista del polígono CC y supóngase L la línea sobre la cual esta arista
yace. Entonces observemos que esta arista es visible a p si p y CC(Hk ) están en
3
Resulta interesante si suponemos un polígono de un número muy grande de lados, nos acer-
caríamos al concepto de tangente de una curva visto en cálculo vectorial en la UNA.
46
3.2 EL ALGORITMO INCREMENTABLE (INCREMENTAL)
Así que los puntos que buscamos son aquellos con líneas tangentes que agrupan y
separan al mismo tiempo CC(Hk ) y p. Una vez que los dos puntos de tangencia
se encuentran, simplemente los ubicamos en la posición apropiada en el CC(Hk ),
eliminando los nuevos puntos interiores (y reemplazándolos por p). Así, si pi y pj
son los vértices especiales de tangencia, donde pi aparece antes de pj en el orden
contrarreloj de Hk , entonces Hk+1 = {. . . pi−1 , pi , p, pj , pj+1 , . . .}.
47
CONVEX-HULL O CÁPSULA CONVEXA (CC)
dos n puntos en S, primero los ordenamos. Esto puede ser alcanzado en tiempo
O(nlogn), con el algoritmo quicksort, en el apéndice sec. 8.2. Para cada punto de
S (después de los primeros 3) necesitamos probar cada arista de la cápsula exis-
tente para ver si ésta es visible hacia el punto. En el peor caso, pudimos necesitar
considerar k − 1 aristas cuando se suma el punto k. ya que esta prueba se necesita
ejecutar por cada nuevo punto, podríamos ejecutarlo como:
n(n − 1) n2 n
3 + 4 + . . . + (n − 1) = − (1 + 2) = − −3 (3.1)
2 2 2
cálculos en tiempo constante. Dado que el término más significante de esta suma
es n2 , la complejidad en tiempo computacional es O(n2 ).
48
3.3 EL ALGORITMO DE GRAHAM
T (n) ∼
= O(nlogn) + O(n)
49
CONVEX-HULL O CÁPSULA CONVEXA (CC)
50
3.4 ALGORITMO (DIVIDIR Y VENCER)
51
CONVEX-HULL O CÁPSULA CONVEXA (CC)
1. Dos puntos: su CC es una arista que los une. Primero se ordena, para que
la orientación esté desde abajo hacia arriba.
Se trabajan con listas de cada conjunto y los puntos obtenidos después de realizar
los algoritmos Puente superior y Puente inferior5 . El punto de inicio de la lista
CC izquierda o CC derecha puede estar dentro de la “zona interior” (aristas que
deben desaparecer del CC total) o fuera de ella. Considerando esto, el algoritmo
realiza la envoltura convexa que resulta de unir dos conjuntos mediante sus puentes
correspondientes. El algoritmo en Scilab (sec. 6.3) consta de un ciclo for para
desplegar cada punto de la envoltura y con ayuda de las condicionales if y banderas
booleanas convenientes, se logran los objetivos propuestos en el algoritmo. Se
asumió en todo el algoritmo que el recorrido de los vértices se hace a favor de las
agujas del reloj (que origina una pequeña corrección en la práctica).
52
3.5 APLICACIONES DE LA CC
3.5. APLICACIONES DE LA CC
Hemos visto una breve revisión de los algoritmos más interesantes para la CC,
ahora veremos algunas aplicaciones:
53
CONVEX-HULL O CÁPSULA CONVEXA (CC)
54
4 TRIANGULACIÓN DE UN
CONJUNTO DE PUNTOS
La palabra maximal tiene el mismo sentido establecido en Preliminares (ver Fig. 4.1).
55
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
56
4.1 DOS ALGORITMOS DE TRIANGULACIÓN
57
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
EULER
La demostración está en la gran relación que descubrió Euler para todo poliedro,
pero que se generalizó para todo grafo plano; ya vimos algunos conceptos de grafos
en Preliminares, sec. 2.10.
58
4.3 EL GRAFO DE INTERCAMBIOS (FLIPS)
59
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
60
4.3 EL GRAFO DE INTERCAMBIOS (FLIPS)
Una vez que esto se realiza, lo que queda es una triangulación del conjunto de
puntos S \ pn , la cual por nuestra hipótesis de inducción es convexa. Debido a que
el algoritmo incremental produce un polígono convexo en cada paso del proceso, la
estrella de pn en T ∗ tiene exactamente tres vértices convexos: pn y los dos vértices
adyacentes a pn sobre la cápsula, llamémoslas a y b. En T ∗, los vértices entre a y
b en la estrella, forman una cadena reflex (que contiene ángulos mayores a π con
respecto a la estrella).
61
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
que puede ser intercambiado. Así, un vértice menos es ahora visible para pn y el
grado de pn disminuye en 1. Repita este proceso eligiendo vértices convexos. Este
proceso debe terminar ya que el grado de pn disminuye en cada paso.
(DELONÉ)
Esta triangulación debe su nombre a Boris Delone, un matemático ruso (ver [56]).
Boris Delone sugiere una triangulación apropiada a las configuraciones cristalinas
de átomos con los que trabajaba. Posteriormente se identifica esta triangulación
con su nombre y esto es por las propiedades que posee frente a otro tipo de
triangulación. Aquí veremos estas propiedades. Comenzamos con un problema
surgido de un modelo de terreno que se ha triangulado en base a sus puntos
muestrales.
En la Fig. 4.4, dos conjuntos de puntos idénticos con alturas se muestran, cada
uno con una triangulación diferente. Intercambiando una diagonal, cambia un
estimado de elevación a otra, haciendo una gran diferencia en el mapa del terreno
resultante.
62
4.4 LA TRIANGULACIÓN DE DELAUNAY (DELONÉ)
Ejemplo. (20◦ , 30◦ , 45◦ , 65◦ , 70◦ , 130◦ ) es más grueso que (20◦ , 30◦ , 45◦ , 60◦ , 75◦ , 130◦ )
porque 65° > 60° en la primera posición en que ellas difieren, sin importar las en-
tradas subsiguientes.
63
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
ARISTAS (AT3)
Dada una triangulación cualquiera, el algoritmo abre un ciclo para verificar si los
triángulos generados tienen sus aristas legales (ver algoritmo 9).
Debido a que las aristas ilegales están siendo intercambiadas, las secuencias angu-
lares de las nuevas triangulaciones se incrementan estrictamente, y así la misma
64
4.5 ALGORITMO DE INTERCAMBIO DE ARISTAS (AT3)
triangulación nunca puede reaparecer en este proceso. Y ya que existe sólo un nú-
mero finito de nodos en el GF (S), este algoritmo debe terminar. Por construcción,
la triangulación TD será más gruesa que cualquiera de sus vecinos en su GF (S).
En otras palabras, será un máximo de grosor local. Pero esto no necesariamente
implica que la TD será la más gruesa sobre todos los nodos del GF (S)1 .
Observación. Para toda n, existe una triangulación de n puntos que requiere Ω(n2 )
flips para transformarse en la TD. Intercambiando una diagonal involucra 12
ángulos, todos ellos necesitan ser comparados en las secuencias de ángulos. Existe
una prueba (y por tanto un algoritmo) más simple usando circunferencias basados
en una extensión de un teorema clásico (atribuido a Thales) de la geometría plana:
65
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
P OB y QOB son isósceles. Desde aquí no es difícil demostrar que sin importar
la posición de B sobre el arco circular, el ángulo ∠P OQ es dos veces el ángulo
∠P BQ. Ciertamente, este es un teorema de Euclides2 . Esto puede ser usado para
llegar a la misma conclusión del teorema.
66
4.6 ALGORITMO AT4 (DIVIDE Y VENCE)
Observación. Para cuatro o más puntos en el mismo circuncírculo (ej. Los vértices
de un cuadrilátero o polígono) la TD no es única: cada una de las dos o más
triangulaciones posibles es válida.
Con todo esto, el algoritmo AT3 originado de este último teorema (en base a la
primitiva Ccírculo, sec. 2.9.4.2), tendrá una complejidad en tiempo de O(n).
67
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
Esta idea fue revisada en 1980 para comprobar la TD y mejorada por Guibas y
Stolfi en 1985. Después en 1986 Dwyer presentó una modificación y Leach presentó
otra en 1992. En 1997 Cignoni, Montani, Scopigno presentaron el algoritmo Dewall
(ver [19]), que hace posible el cálculo de TD para cualquier número de dimensiones.
A este método, la cota superior asintótica es O(nlogn).
4.7. APLICACIONES DE LA TD
68
4.7 APLICACIONES DE LA TD
69
TRIANGULACIÓN DE UN CONJUNTO DE PUNTOS
6. Encontrando todos los vecinos más cercanos es más fácil de conseguir co-
menzando con la TD, porque todas las aristas que conectan un sitio y su
más cercano vecino debe ser una arista Deloné.
5
Se puede averiguar en http://www.fundaciongego.com/index02.html
70
4.7 APLICACIONES DE LA TD
71
5 DIAGRAMA DE VORONOI (DV)
Ahora nos interesamos en estudiar los puntos del plano que no están en el conjun-
to de puntos S dado. En particular, estudiamos cuál punto de S es más próximo
a un punto arbitrario que no está en S. Esto es diferente de una triangulación,
en el que los puntos próximos entre sí son puntos de la misma naturaleza, de las
mismas características, digamos así, mientras que aquí dos puntos son próximos
pero uno de ellos puede ser una fuente, sumidero, control; la relación entre ellos es
diferente1 . Veremos unos fundamentos geométricos y topológicos del DV, pasare-
mos al concepto de dualidad, índice de proximidad, teorema de las tejas, cálculo
de promedios, y por último algunas aplicaciones.
Todos los problemas de proximidad pueden ser resueltos usando una herramienta
que contiene toda la información sobre la proximidad de los puntos. El diagrama
es llamado así en honor a Georgy Voronoi, quien definió y estudió el caso general
n-dimensional en 1908 (ver [80, 55]). Es también llamado Teselación, Descompo-
sición, Partición Voronoi.
1
Para introducirnos al tema, podemos ver los vídeos: el “extracto” de la serie Numb3rs [29], y
el fascinante “Nature_by_Numbers” de Cristóbal Vila [79].
73
DIAGRAMA DE VORONOI (DV)
Hay autores que señalan el uso de los DV en trabajos de Descartes de 1644 sobre el
cielo, cuando afirmaba que el Universo estaba plagado de éter y materia y formado
por vórtices, en esta impresionante Fig. 5.1.
74
5.1 BASES GEOMÉTRICAS
En palabras, V or(p) es el conjunto de todos los puntos x que son al menos más
cerca de p que a cualquier otro punto qi en S. Además, V or(p) no puede estar
vacío, ya que todos los puntos en un disco suficientemente pequeño centrado en
el punto p debe estar en V or(p) (ver Fig. 5.2).
n
Reg(S) = V or(pi )
[
i=1
Los puntos que están sobre la frontera (o aristas Voronoi) entre las regiones
V or(pi ) tienen más de un punto único más cercano. El Diagrama de Voronoi
3
En Topología de espacios métricos de la UNA, ver [26].
75
DIAGRAMA DE VORONOI (DV)
Si V or(p) es acotado, es decir, existe k > 0 tal que para toda x, y ∈ V or(p) la
distancia d(x, y) < k, entonces la región es un polígono. Veremos si este polígono
es en efecto convexo.
76
5.1 BASES GEOMÉTRICAS
V or(p) = (5.2)
\
H(p, q)
q6=p
77
DIAGRAMA DE VORONOI (DV)
Esto implica que todas las propiedades de los polígonos convexos se aplican en
V or(p). Ahora volcamos nuestra atención hacia los vértices Voronoi.
¿Qué sucede con 4 o más puntos? (caso degenerado) Como se ha visto, las in-
tersecciones de bisectores crean vértices Voronoi5 . Sin embargo, ciertamente no
todas las intersecciones llegan a ser vértices Voronoi. ¿Existe una manera fácil pa-
4
Elementos, libro IV, proposición 5, en [30]
5
En el caso de 3 o más puntos sobre una circunferencia, resulta que los bisectores de las cuerdas
pasan por el centro del círculo según la proposición 1 del libro III de los Elementos de Euclides
[30].
78
5.1 BASES GEOMÉTRICAS
ra encontrar cuáles puntos del plano llegarán a ser vértices Voronoi? El siguiente
teorema responde esta pregunta.
Ahora asumimos que tal círculo centrado en v existe, con al menos tres puntos
p, q, r sobre su frontera. Ya que el interior del círculo es vacío, v debe estar sobre
la frontera de cada una de las regiones V or(p), V or(q), V or(r). Por tanto, v es
un vértice Voronoi.
Ahora volvamos a entender las aristas Voronoi. Sabemos que todas las aristas
79
DIAGRAMA DE VORONOI (DV)
Voronoi son partes de bisectores perpendiculares entre puntos, pero no todos es-
tos bisectores llegan a ser aristas Voronoi. Ahora presentamos una característica
geométrica que caracteriza las aristas Voronoi, análogas al teorema anterior.
80
5.1 BASES GEOMÉTRICAS
Cerramos esta parte con un resultado numérico, acotando el número total de vérti-
ces y aristas Voronoi, y mostrando que la complejidad combinatoria del diagrama
es O(n).
81
DIAGRAMA DE VORONOI (DV)
El enfoque más directo sería encontrar cada región Voronoi separadamente como
una intersección de n − 1 semiplanos, usando el teorema 5.1.3. Tal construcción
daría un tiempo computacional de O(n2 logn). Michael Shamos y Dan Hoey en
1975 suministraron un algoritmo divide-y-vencerás con complejidad en el tiempo
de O(nlogn) .
Presentamos un algoritmo que usa la técnica Divide y Vencerás. La idea del al-
goritmo consiste en dividir al conjunto S en dos partes S1 y S2 , mediante una
7
Es un problema sugerido
82
5.3 DUALIDAD Y TD
línea vertical imaginaria, de tal forma que ambos conjuntos tengan casi el mismo
número de puntos. Denotaremos por σ la subgráfica de Voronoi de S tal que los
lados de σ están determinados por parejas de puntos pi y pj tales que pi ∈ S1 y
pj ∈ S2 . Este σ será llamado el grafo frontera, ya que es el lugar geométrico de
los puntos equidistantes de un punto en S1 y un punto en S2 . Esto sugiere un
algoritmo de concatenamiento cuya complejidad es O(n), (ver algoritmo 11).
5.3. DUALIDAD Y TD
83
DIAGRAMA DE VORONOI (DV)
Lema 5.3.1. Supongamos A, B dos círculos con cuerdas que se cruzan propia-
mente. Entonces al menos un extremo de una cuerda circular está estrictamente
dentro del otro círculo.
Teorema 5.3.2. El grafo dual de líneas rectas del DV (S) es plano (ver 2.10.12).
84
5.3 DUALIDAD Y TD
85
DIAGRAMA DE VORONOI (DV)
86
5.4 ÍNDICE DE PROXIMIDAD
Ai
Ip = min
Atotal
1
Ipmax =
k
Sin embargo, se decide hacer una distribución más equitativa del área, obtenién-
dose la siguiente figura Fig. 5.12, con un Ip = 0,2232
87
DIAGRAMA DE VORONOI (DV)
88
5.5 TEOREMA DE LAS TEJAS
Teorema 5.5.1 (de las tejas). Si una figura n−dimensional es cubierta de cual-
quier manera por subregiones suficientemente pequeñas, existirán puntos que per-
tenezcan al menos a n + 1 de estas subregiones; además siempre es posible encon-
trar una configuración con regiones arbitrariamente pequeñas para la que ningún
punto pertenecerá a más de n + 1 regiones.
89
DIAGRAMA DE VORONOI (DV)
A1 r1 + A2 r2 + . . . + An rn
q̄ =
A1 + A2 + . . . + An
2. Estudios en los que hay que determinar áreas de influencia (centros hospita-
90
5.7 APLICACIONES DEL DV
9
Según el ISVD 2012 (9° simposio internacional sobre DV en ciencia e ingeniería), ver http:
//www.isvd12.rutgers.edu
10
Ver artículo en http://reference.iucr.org/dictionary/Wigner-Seitz_cell
91
DIAGRAMA DE VORONOI (DV)
11
Para saber más de sus obras, ir a http://www.antonigaudi.org
92
5.7 APLICACIONES DEL DV
93
(c) Dragón del Parque Güell de Gaudí (d) Ventana
1. Introducción de datos
2. Cápsula Convexa CC
4. Triangulación TD
5. Diagrama DV
95
6.1 INTRODUCCIÓN DE DATOS
Como se observa, para crear puntos de entrada, podemos elegir entre 4 opciones: al
azar (rmt), mediante el mouse (localiz), con el mouse sobre una imagen (pvori2)
o mediante una matriz de puntos previamente construida en la consola de Scilab.
2
Ver Hughes y otros[44]
96
IMPLEMENTACIÓN EN SCILAB
Entradas: titulo es vector de string, items es una lista, donde cada ítem es también
una lista del tipo: item = lista(“etiqueta”, por − def ecto, eleccs); por − def ecto
es un entero que marca una tecla y eleccs es un vector fila de string.
Entradas: A es matriz o lista, sel puede ser ‘r’ (filas), ‘c’ (columnas), ‘ ∗ ’ (elemen-
tos) o ‘m’ (m-ésima dimensión).
97
6.1 INTRODUCCIÓN DE DATOS
Entradas: msg es matriz de string (caracteres), titl el título, icon el icono que
se ajusta al mensaje, butns los botones requeridos (1 × n vector), ismodal si es
modal (varias opciones n ≥ 2 ) o no.
Descripción: Crea una ventana de dialogo con un mensaje esperando recibir res-
puesta de parte del usuario.
6.1.1.5. Condicional
if expre1 then instr1 elseif expri then instri ...else instrn end
Salidas: La ejecución de las instrucciones correspondientes (instr1 , ..., instri , ..., instrn ).
6.1.1.6. Control select var casei valori then instri elsei instrn end
98
IMPLEMENTACIÓN EN SCILAB
99
6.1 INTRODUCCIÓN DE DATOS
Entradas: No requiere.
Descripción: Son los objetos básicos de Scilab. Se inicializa con cualquier nombre
de variable nvariable = []; .
100
IMPLEMENTACIÓN EN SCILAB
Entradas: n (número de puntos) y f lag (forma de los puntos: cruz, asterisco, otros)
son valores enteros.
101
6.1 INTRODUCCIÓN DE DATOS
Salidas: Un gráfico.
Salidas: im es imagen gray (matriz m × n char sin signo) o imagen RGB (matriz
m × n × 3 char sin signo).
102
IMPLEMENTACIÓN EN SCILAB
103
6.1 INTRODUCCIÓN DE DATOS
104
IMPLEMENTACIÓN EN SCILAB
un cuadro de diálogo.
Descripción: Genera puntos de acuerdo con el mouse, sobre una imagen seleccio-
nada.
4
Si aparecen pequeños rectángulos en los códigos de esta obra, significan matrices vacías. Al
igual que si aparecen ovoides, éstas significan ausencia de parámetros de la función corres-
pondiente. Ejemplos: puntr = [], rmt()
105
6.1 INTRODUCCIÓN DE DATOS
106
IMPLEMENTACIÓN EN SCILAB
107
6.1 INTRODUCCIÓN DE DATOS
108
IMPLEMENTACIÓN EN SCILAB
109
6.2 LA CÁPSULA CONVEXA (CC)
Entradas: nom es nombre del grafo; dir si el grafo es dirigido o no (0-1); n, número
de vértices o nodos; colas y cabs son vectores fila que representan los números de
nodos en que parten las aristas (colas) y los números de nodos donde llegan (cabs).
Salidas: g, grafo.
Entradas: G, grafo; modo puede ser 0 rep0 o 0 new0 , escala = 1 por defecto, wsize
vector real positivo de dimensiones [ancho, altura].
Entradas: La expresión de la variable, que puede ser una matriz o vector para
realizar instrucciones simples (instr) línea a línea.
110
IMPLEMENTACIÓN EN SCILAB
Entradas: xpols, ypols son matrices del mismo tamaño, draw es vector de tamaño
n , draw(i) es estilo para la polilínea i.
Entradas: xv, yv matrices del mismo tamaño, dtype es string estilo de dibujo,
puede ser “lines” o “marks” , close = 1 indica polilínea cerrada, de lo contrario
close = 0 (por defecto).
Descripción: Dibuja una simple polilínea descrita por los vectores de coordena-
das xv y yv. Si ellos son matrices, se consideran los vectores concatenando sus
columnas.
Entradas: axes fuerza al título que aparezca dentro de los ejes seleccionados por
axes_handle, A es string entre comillas, props son secuencias de pares de argu-
mentos que definen propiedades de formato.
Salidas: string.
111
6.2 LA CÁPSULA CONVEXA (CC)
Salidas: nhull es número de vértices que forman el CC, ind es índice de vértices
que forman CC, graf es el grafo que muestra el CC.
Salidas: Un gráfico.
112
IMPLEMENTACIÓN EN SCILAB
INTERCONEXIÓN
Este algoritmo que usa el método Divide-y-vence calcula y muestra los puentes
superior e inferior de dos conjuntos de puntos, tiene el siguiente diagrama de
funciones (Fig. 6.8):
113
6.3 PUENTES (TANGENTES) DE INTERCONEXIÓN
114
IMPLEMENTACIÓN EN SCILAB
Salidas: b es la mediana.
6.3.1.2. Ciclo while var = expresión then (instr1 ) [else (instr2 )] end
Entradas: La expresión de la variable var, que puede ser una matriz o vector para
realizar instrucciones instr1 , instr2 simples línea a línea.
115
6.3 PUENTES (TANGENTES) DE INTERCONEXIÓN
Salidas: y es matriz.
Descripción: Combinado con “r” se obtiene un vector fila b tal que b(j) contiene
el máximo (mínimo) de la j-ésima columna de A, k(j) es el índice de ese máximo
(mínimo). Similar es para “c”.
116
IMPLEMENTACIÓN EN SCILAB
Entradas: m1 , m2 enteros.
Salidas: y es matriz.
Salidas: ccf es índice de nodos de los puentes inferior y superior, ch1 y ch2 son
índices de CC izquierdo y derecho y g es el grafo resultante (Metanet).
117
6.3 PUENTES (TANGENTES) DE INTERCONEXIÓN
Entradas: ptref es matriz de puntos de entrada, vin y vf i son matrices del mismo
tamaño con coordenadas de puntos.
Descripción: Genera matriz de índices de puntos que concuerdan con valores nu-
merados de ptref .
118
IMPLEMENTACIÓN EN SCILAB
Salidas: sl1 , sl2 son puntos extremos de inicio del algoritmo de Divide-y-vence,
j1 , j2 son los índices de estos puntos en s1 y s2 .
Entradas: sl2 es lista de CC, slc1 (fijo), slc2 son puntos extremos, jd es índice de
slc2 .
Salidas: si2 es nuevo punto ascendente (descendente) desde lista sl2 (sl1 ), jd2 es
índice de si2 .
119
6.4 LA TRIANGULACIÓN DELONÉ
Entradas: sl1 , sl2 son listas de CC izquierda y derecha, slc1 y slc2 son puntos de
prueba con sus índices j1 y j2 en cada lista.
120
IMPLEMENTACIÓN EN SCILAB
121
6.4 LA TRIANGULACIÓN DELONÉ
(a) conver-1
(b) conver-2
123
6.4 LA TRIANGULACIÓN DELONÉ
(a) puen2-1
(b) puen2-2
124
IMPLEMENTACIÓN EN SCILAB
(a) inic-1
(b) inic-2
125
6.4 LA TRIANGULACIÓN DELONÉ
(a) desci1-1
(b) desci1-2
126
IMPLEMENTACIÓN EN SCILAB
(a) prueb2-1
(b) prueb2-2
(c) prueb2-3
127
6.4 LA TRIANGULACIÓN DELONÉ
Salidas: nut matriz de enteros de los números de los nodos de cada triángulo; a
es matriz de conexiones entre nodos.
128
IMPLEMENTACIÓN EN SCILAB
Entradas: No requiere.
Entradas: xpol, ypol son matrices del mismo tamaño (n × m), f ill es vector de
tamaño m o n × m.
Salidas: Un gráfico.
Descripción: Llena un conjunto de polígonos del mismo tamaño definidos por las
dos matrices xpol y ypol. Las coordenadas de cada polígono son guardadas en
cada columna de xpol y ypol. Los polígonos pueden ser rellenados con un color
dado (uniforme) o con interpolación de colores.
129
6.4 LA TRIANGULACIÓN DELONÉ
Entradas: Z es un vector o matriz de enteros o reales, opc puede ser “r” para filas
o “c” para columnas, dir puede ser creciente “i” o decreciente “d”.
130
IMPLEMENTACIÓN EN SCILAB
Descripción: Realiza una ordenación de los generadores para visualizar los puntos
vecinos de cada generador.
131
6.4 LA TRIANGULACIÓN DELONÉ
132
IMPLEMENTACIÓN EN SCILAB
(a) trit-1
(b) trit-2
(c) sdel
133
6.4 LA TRIANGULACIÓN DELONÉ
(a) delon1
(b) delon2
134
IMPLEMENTACIÓN EN SCILAB
Descripción: Encuentra en una matriz A filas o columnas que son idénticas a vec.
135
6.5 EL DIAGRAMA DE VORONOI
136
IMPLEMENTACIÓN EN SCILAB
Entradas: a, b son vectores o matrices, ”r” para filas y ”c” para columnas.
Para llegar a depurar los algoritmos, usamos los siguientes comandos de Scilab:
whereami, pause, resume, abort, los cuales fueron esenciales para detectar fallos
en la implementación.
137
6.5 EL DIAGRAMA DE VORONOI
Salidas: cont es tabla de triángulos contiguos, numerados por fila, lime es tabla
de triángulos que poseen aristas como parte de la CC.
Salidas: ar es pendiente de segmento, br corte con eje vertical, vmed : (xmed , ymed )
es punto medio entre p1 y p2 . Según ymed = ar · xmed + br.
138
IMPLEMENTACIÓN EN SCILAB
139
6.5 EL DIAGRAMA DE VORONOI
Entradas: nvr, nenv, npt, nliv son tamaños de vértices Voronoi, Cápsula Convexa
CC, puntos de entrada y aristas respectivamente; ini es numeración de vértices.
140
IMPLEMENTACIÓN EN SCILAB
Descripción: A partir de los datos se crea una estructura de grafo del DV.
141
6.5 EL DIAGRAMA DE VORONOI
(a) dvt1
(b) dvt2
142
IMPLEMENTACIÓN EN SCILAB
(a) tresp-1
(b) tresp-2
144
IMPLEMENTACIÓN EN SCILAB
(a) vervo-1
(b) vervo-2
146
IMPLEMENTACIÓN EN SCILAB
(a) vorg-1
(b) vorg-2
147
6.5 EL DIAGRAMA DE VORONOI
148
IMPLEMENTACIÓN EN SCILAB
149
6.5 EL DIAGRAMA DE VORONOI
(a) crm2-1
(b) crm2-2
(c) crm2-3
150
IMPLEMENTACIÓN EN SCILAB
(a) crm2-4
(b) crm2-5
151
6.6 PRUEBA Y VERIFICACIÓN: ENTRADAS Y SALIDAS DE DATOS
SALIDAS DE DATOS
152
IMPLEMENTACIÓN EN SCILAB
Usaremos los mismos datos de entrada, modo predeterminado, para mayor control.
Con 10 puntos ( 6.27a)
En consola: slis(1) son los índices en columna de los puntos en sp2 que forman
los puentes superior e inferior; slis(2) son los índices de los puntos que forman
la CC izquierda; slis(3) son los índices de los puntos que forman la CC derecha;
slis(4) es la estructura de grafo para los puentes (ver 6.28b)
En consola: slis(1) son índices de puntos en columna de sp3 que forman un trián-
gulo; slis(2) y slis(3) son índices ordenados de puntos en sp3 que tienen vecinos a
otros puntos de sp3; slis(4) es la estructura de grafo de la triangulación (Fig. 6.30)
153
6.6 PRUEBA Y VERIFICACIÓN: ENTRADAS Y SALIDAS DE DATOS
(a) CC (Scilab)
(b) CC (Metanet)
(b) TI-consola
(c) TI-salida-consola
En consola:
Se realizaron pruebas con 5, 10, 15, 20 puntos, lo que sirvió para generar una
gráfica que muestra el comportamiento de algunas funciones en cuanto al tiempo
de computación con respecto a la cantidad de puntos. No se pudo establecer
un análisis del código fuente de funciones del paquete Metanet (convex_hull,
mesh2d, entre otras) porque están bloqueadas. Describimos la función timer() de
157
6.7 PRUEBAS SOBRE LA EFICIENCIA
Scilab:
158
IMPLEMENTACIÓN EN SCILAB
IMPLEMENTACIÓN
Una de las cosas que se tomó en cuenta fue la simetría para la realización
de algoritmos recursivos en la implementación.
159
6.8 NOTAS ACERCA DE LA IMPLEMENTACIÓN
160
IMPLEMENTACIÓN EN SCILAB
(a) TD-1
(b) TD-2
(c) TD-3
161
6.8 NOTAS ACERCA DE LA IMPLEMENTACIÓN
162
IMPLEMENTACIÓN EN SCILAB
(a) DV-1
(b) DV-2
163
(c) DV-3
164
7 CONCLUSIONES Y
RECOMENDACIONES
7.1. CONCLUSIONES
165
CONCLUSIONES Y RECOMENDACIONES
166
7.1 CONCLUSIONES
167
CONCLUSIONES Y RECOMENDACIONES
168
7.2 RECOMENDACIONES
7.2. RECOMENDACIONES
2
Por estabilidad nos referimos al grado de atenuación de los errores producidos en la entrada
3
Ver [13] y la pagina de Jason Davies http://www.jasondavies.com.
169
CONCLUSIONES Y RECOMENDACIONES
170
8 APÉNDICE
DE UN SEGMENTO
y = m⊥ x + b⊥
donde b⊥ = y0 − m⊥ x0 .
Algoritmo básico para los valores de un arreglo (array) con un solo subíndice:
171
APÉNDICE
donde O(1) el tiempo para el caso base, O(n) es el barrido de los elementos del
arreglo, n = r − l + 1 es la longitud del arreglo, T (pivot − l) y T (r − pivot)
son los tiempos correspondientes a las dos partes del arreglo. Si suponemos una
permutación aleatoria, entonces la esperanza sobre el punto de partición se sitúa
l+r
en , por lo que la ecuación anterior se aproxima como:
2
O(1) n≤1
T (n) =
O(n) + 2T ( n2 ) n > 1
172
8.3 ÁREA DE UN POLÍGONO
3
1 X 1
A = (xi yi−1 − xi−1 yi ) = |(x1 y3 − x3 y1 ) + (x2 y1 − x1 y2 ) + (x3 y2 − x2 y3 )|
2 i=1 2
1 x1 y1
x2 y2
x3 y3
1 x1 y1
x1 y1
x2 y2
=
+
+
=
−
−
2
x3
y3
x1
y1
x2
y2
2
x3
y3
x2
y2
x3
y3
173
APÉNDICE
x1 y 1 1
1 x2 y2
x1 y1
x1 y1
1
=
+
= x2 y 2 1
−
2
x3
y3
x3
y3
x2
y2
2
x3 y 3 1
P
1
Para n = k tenemos Ak = i=1 (xi yi−1 − xi−1 yi ) para el polígono de k lados.
k
2
1
Ak+1 =
x1 yk − xk y1 + ... + xl yl−1 − xl−1 yl +xl+1 yl − xl yl+1 + ...
+
2
174
8.4 TEOREMA DE LA COMBINACIÓN CONVEXA
eliminando los dos términos de Ak+1 con los dos primeros términos de At , obte-
nemos
1
= kx1 yk − xk y1 + ... + xl yl−1 − xl−1 yl + xk+1 yl − xl yk+1 + xl+1 yk+1 − xk+1 yl+1 + ...k
2
CONVEXA
175
APÉNDICE
x = λ1 p1 + ... + λn pn (8.3)
expresado como
parte II: CC(S) ⊇ M . Cualquier punto en M , que puede ser expresado como
en (8.3), está en CC(S) por inducción sobre n. Es claro que esto es verdad para
cuando n = 1; entonces M = CC(S) = p1 . Asumamos que esto es verdad pa-
176
8.5 COMPLEJIDAD DE LA TÉCNICA “DIVIDE Y VENCE”
λi/(1−λn ) debido a que λ1 + ... + λn−1 = 1 − λn . Nótese que aún satisfacemos las
condiciones dadas arriba. Y además CC(S 0 ) ⊂ CC(S), sabemos que x está en
CC(S). Debido a que pn y x están ambas en CC(S), y ya que CC(S) es convexa,
entonces cualquier punto en el segmento xpn está en CC(S). Así que
λ1 λn−1
(1 − λn )( p1 + ... + pn−1 ) + λn pn = λ1 p1 + ... + λn pn
1 − λn 1 − λn
Y VENCE”
Obtendremos una cota para esta técnica. Ya que éste es recursivo, si T (n) es
el tiempo total para n puntos, entoncesT (n) = 2T (n/2) + O(n), donde T (n/2)
es el tiempo de cada mitad del conjunto S de puntos y O(n) es el paso de la
concatenación. El caso base es T (1) = b unidades de tiempo y T (n) = 2T (n/2) +
177
APÉNDICE
agrupando
= 4T (n/4) + 2O(n)
T (n) = O(nlog(n))
178
8.6 LA FÓRMULA DE EULER
v−e+f =2 (8.6)
CONJUNTO DE PUNTOS
179
APÉNDICE
2e = 3t + h (8.7)
t = 2v − 4 − h + 2 = 2v − h − 2 = 2(h + k) − h − 2 = 2k + h − 2
e − 2/3 e = 1/3 e ≤ f − 2
180
8.6 LA FÓRMULA DE EULER
3/2 v − v = 1/2 v ≤ f − 2
y así tenemos v ≤ 2f − 4
vd − e + f = 1 (8.8)
vd ≤ 2/3 e − 1 (8.9)
Y en (sec. 8.6.2) vd + 1 ≤ 2f − 4
vd ≤ 2f − 5 (8.10)
Estas son las ecuaciones que podemos obtener gracias a la Fórmula de Euler.
1
ver Nandy [53]
181
APÉNDICE
Veamos la siguiente Fig. 8.3 donde D está dentro del círculo definido por ABC.
Mostraremos que AC es una arista ilegal.
182
8.7 DEMOSTRACIÓN DE TEOREMAS EN TD
Existe otro criterio válido: Contemplando dos triángulos ABD y BCD con la
arista común BD, si la suma de los ángulos α y γ es menor o igual a 180◦ , la
arista BD es legal (Fig. 8.4).
VACÍO
183
APÉNDICE
sus aristas son legales. Así, por la proposición 4.5.2 el triángulo BCD no puede
existir en T . Tenemos a BCE el triángulo adyacente a ABC a lo largo de la arista
BC. Nuevamente por la proposición anterior E debe estar fuera del circuncírculo
de ABC, como en (c) de la Fig. 8.5. Note que el circuncírculo de BCE contiene a
D, y D no puede estar dentro del triángulo BCE.
184
8.8 DEMOSTRACIÓN DE TEOREMAS DE DV
cerca a r que a p (ver Fig. 8.6 ). Por consiguiente, la línea entera L no puede estar
en DV (S).
185
APÉNDICE
En fin, el cruce entre las dos cuerdas fuerza que algún extremo esté estrictamente
dentro del otro disco, estableciendo la afirmación del lema 5.3.1.
186
8.9 DESCUBRIENDO PUNTOS GENERADORES
datos está el centro del circulo, los valores de las tres ramas que parten de este
centro.
Ay − By
ma = (8.11)
Ax − Bx
ma (Ax − Bx ) + k − Ay = −(By − k)
187
APÉNDICE
Se resuelve esta ecuación cuadrática para obtener Bx1 , Bx2 , se escoge una de las
soluciones o la solución real
q
−2(zma − h) ± 4(zma − h)2 − 4(m2a + 1)(z 2 − r2 + h2 )
Bx =
2(m2a + 1)
q
−zma + h ± (zma − h)2 − (m2a + 1)(z 2 − r2 + h2 )
Bx =
(m2a + 1)
By − Cy
(Cx − h)2 + (Cy − k)2 = r2 junto a mb =
Bx − Cx
q
−z2 mb + h ± (z2 mb − h)2 − (m2b + 1)(z22 − r2 + h2 )
Se obtiene Cx = con
(m2b + 1)
z2 = By − k − mb Bx
y Cy = −mb (Bx − Cx ) + By
188
8.10 PROBLEMAS ABIERTOS
y − Ay = ma (x − Ax )
intersección sea igual que Ax , Ay . sea el sistema
y − Cy = mc (x − Cx )
y − ma x = −ma Ax + Ay
y − mc x = −mc Cx + Cy
re-ordenando
ma −1 x −ma Ax + Ay 0
+ =
−mc Cx + Cy 0
mc −1 y
Ahora, se aplica el CCW (A, B, C, [x, y]) para saber si el punto está dentro o fuera
de la circunferencia dada por r, h, k. Si x, y está fuera entonces se disminuye el
angulo con respecto a la primera rama de A, de otra manera, se aumenta el angulo
de A hasta que x ≈ Ax ∧ y ≈ Ay .
Hasta este punto, se puede ajustar el radio para concordar con los demás puntos
si es necesario, pero ya se habrá encontrado tres puntos generadores, por lo menos
en su posición angular.
189
APÉNDICE
de 10 puntos.
190
8.10 PROBLEMAS ABIERTOS
8. Verificar que las aristas de ∂(CC) no son cortadas, la TD (con más de tres
sitios) no tiene aristas cortadas y el DV tampoco, a excepción de las aristas
externas, que idealmente son infinitas, pero que en la práctica tienen un
vértice en la ventana o región de observación del usuario.
191
Bibliografía
193
Bibliografía Bibliografía
[11] M. Bern and D. Eppstein, “Mesh generation and optimal triangulation.” [On-
line]. Available: https://www.ics.uci.edu/~eppstein/pubs/BerEpp-CEG-95.
pdf
194
Bibliografía
[15] CGAL. User and Reference Manual, 4th ed., cgal.org, 2012. [Online].
Available: http://doc.cgal.org/latest/Manual/index.html
[16] T. Chan, “Optimal output-sensitive convex hull algorithms in two and three
dimensions,” Discrete Comput. Geom., no. 16, pp. 361–368, 1996. [Online].
Available: https://www.cs.ucsb.edu/~suri/cs235/ChanCH.pdf
[17] D. Chand and S. Kapur, “An alg. for convex polyt.” JACM, vol. 17, no. 1,
pp. 78–86, 1970. [Online]. Available: http://www.academia.edu/7138385/
AnAlgorithmforConvexPolytopes
[21] S. Devadoss and J. O’rourke, Discrete and Comp. Geometry, 1st ed.
Princeton University P., 2011. [Online]. Available: www.press.princeton.edu/
titles/9489.html
[22] R. Diestel, Graph Theory, 3rd ed. Springer-Verlag, 2005. [Online]. Available:
http://esi2.us.es/~mbilbao/pdffiles/DiestelGT.pdf
[23] A. Dumitrescu and et al, “Bounds on the maximum multiplicity of some com-
mon geometric graphs,” Proc. 28th International Symposium on Theoretical
Aspects of Computer Science, pp. 637–648, 2011.
195
Bibliografía Bibliografía
fr/~mornon/voronoi.html
[27] M. Ettrich and et al, “lyx 2.1.2,” free software, 2014. [Online]. Available:
http://www.lyx.org
196
Bibliografía
[34] B. Giles and P. Bratley, Algorithmics t. and p., 1st ed. Prentice
Hall, 1988. [Online]. Available: https://jobscare.files.wordpress.com/2013/
02/algorithmics-theory-and-practice.pdf
[35] C. Gold, “What is gis and what is not?” Transactions in GIS, vol. 10, no. 4,
2006.
[38] R. Graham, “An efficient algorithm for determining the convex hull of a
finite planar set,” 1972. [Online]. Available: www.math.ucsd.edu/~ronspubs/
7210convexhull.pdf
197
Bibliografía Bibliografía
Libro/Indice.html
[44] J. Hughes and et al, Computer Graphics, 3rd ed. Addison-Wesley, 2014.
[Online]. Available: www.informit.com/aw
[46] R. A. Jarvis, “On the identification of the convex hull of a finite set of
points in the plane,” Information Processing Letters, no. 2, pp. 18–21,
1973. [Online]. Available: http://www.sciencedirect.com/science/article/pii/
0020019073900203
[50] Maplesoft and W. M. Inc., “Maple 14.00,” software, 2010. [Online]. Available:
www.maplesoft.com
198
Bibliografía
[51] S. Meeran and A. Share, “Optimum path planning using convex hull and
local search heuristic algorithms,” Mechatronics, vol. 8, no. 7, pp. 737–756,
1997.
199
Bibliografía Bibliografía
200
Bibliografía
www.emis.de/journals/BAMV/conten/vol10/catalan.pdf
[73] E. Scilab, INRIA, and ENPC, “Scilab 5.5.1,” free software, 2014. [Online].
Available: www.scilab.org
[75] K. Shirriff, Generating Fractals from VD, 1st ed. Elsevier Science, 1998, pp.
23–25. [Online]. Available: http://citeseerx.ist.psu.edu/viewdoc/download?
doi=10.1.1.56.4446andrep=rep1andtype=pdf
201
Bibliografía Bibliografía
documentos/20131/20131marce323libroA.pdf
202
Nomenclatura
kV k Número de elementos de V
3D Espacio tridimensional
203
Términos técnicos Nomenclatura
Scan exploración
204
Nomenclatura
205