57
Algoritmos geométricos

Algoritmos geométricos

Embed Size (px)

DESCRIPTION

Algoritmos geométricos. Las computadoras se están utilizando cada día más para resolver problemas a gran escala que son inherentemente geo-métricos. - PowerPoint PPT Presentation

Citation preview

Page 3: Algoritmos geométricos

Los objetos geométricos, tales como puntos, líneas y polígonos constituyen la base de una gran variedad de aplicaciones importantes y conducen a un interesante conjunto de problemas y algoritmos.

Page 4: Algoritmos geométricos

Los algoritmos geométricos son importantes en sistemas de diseño y análisis de modelos de objetos físicos, que pueden ser desde edificios y automóviles hasta circuitos integrados a escala muy grande.

Page 6: Algoritmos geométricos

Otras muchas aplicaciones procesan datos geométricos de forma directa. Por ejemplo, un esquema político de <manipulación del censo electoral>, que sirva para dividir un distrito en áreas de igual población (y que satisfaga otros criterios, como colocar a todos los miembros del otro partido en una misma zona), es un sofisticado algoritmo geométrico.

Page 8: Algoritmos geométricos

La mayoría de los algoritmos que se han estudiado utilizan texto y número que se representan y se procesan de forma natural en la mayoría de los entornos de programación.

Page 9: Algoritmos geométricos

De hecho, las operaciones primitivas necesarias se implantan en el hardware de la mayoría de los sistemas de computadoras. Se verá que la situación es diferente en el caso de los problemas geométricos: incluso las operaciones más elementales con puntos y líneas pueden ser un reto en términos informáticos.

Page 10: Algoritmos geométricos

Los problemas geométricos son muy fáciles de visualizar, pero eso puede ser un inconveniente. Muchos problemas, que una persona puede resolver instantáneamente mirando un papel (por ejemplo: ¿está un punto dentro de un polígono?), requieren programas de computadoras que no son triviales.

Page 11: Algoritmos geométricos

En el caso de problemas más complicados, como en muchas otras aplicaciones, el método de resolución apropiado para su implantación en una computadora puede ser bastante diferente del método de resolución adecuado para una persona.

Page 12: Algoritmos geométricos

Se podría pensar que los algoritmos geométricos deben tener una larga historia, debido a la naturaleza constructiva de la antigua geometría y porque las aplicaciones útiles están muy difundidas, pero, en realidad, la mayor parte de los avances en este campo han sido bastante recientes.

Page 13: Algoritmos geométricos

El campo de los algoritmos geométricos es interesante de estudiar debido a su fuerte contexto histórico, porque aún se están desarrollando nuevos algoritmos fundamentales y porque numerosas aplicaciones importantes a gran escala necesitan estos algoritmos.

Page 14: Algoritmos geométricos

Puntos, líneas y polígonosPuntos, líneas y polígonosLa mayoría de los programas que se estudiarán operan sobre objetos geométricos simples definidos en un espacio bidimensional, si bien se tendrá en cuenta algunos algoritmos para más dimensiones. El objeto fundamental es el punto, al que se considera como un par de enteros.

Page 15: Algoritmos geométricos

Una línea es un par de puntos, que se supone están unidos por un segmento de línea recta. Un polígono es una lista de puntos: se supone que puntos sucesivos están unidos por líneas y que el primer punto está conectado al último, para formar una figura cerrada.

polígono

Page 16: Algoritmos geométricos

Para poder trabajar con estos objetos geométricos se necesita decidir cómo representarlos. Normalmente se utiliza un array para los polígonos, aunque también se puede usar una lista enlazada o alguna otra representación cuando sea apropiado.

Page 17: Algoritmos geométricos

Ejemplo:

Struct punto {int x, y; char c; },

Struct linea { struct punto p1, p2; };

Struct punto poligono [Nmax];

Page 20: Algoritmos geométricos

Por ejemplo, los polígonos se representarán como arrays de puntos. Se puede advertir que el uso de arrays de lineas supondría que cada punto del polígono estaría incluido dos veces (aunque ésta podría ser la representación natural para determinados algoritmos).

Page 21: Algoritmos geométricos

Además, en algunas aplicaciones resulta útil incluir información adicional asociada a cada punto o línea.

Page 22: Algoritmos geométricos

Se utilizará el conjunto de puntos mostrado en la siguiente figura, para ilustrar las operaciones de varios algoritmos geométricos.

Page 23: Algoritmos geométricos

Supongamos que los 10 puntos de la izquierda están etiquetados con letras que servirán de referencia en la explicaciones de los ejemplos y poseen las coordenadas enteras siguientes:

A B C D E F G H I F

X 3 9 6 7 11 15 6 8 10 16

Y 9 1 4 6 10 9 7 6 8 9

Page 24: Algoritmos geométricos

Las letras de las etiquetas se han asignado en el orden en el que se supone se introducen los puntos.

Por lo regular, los programas no tienen motivos para hacer referencia a los puntos por su nombre; éstos simplemente se almacenan en un array y se referencían usando un índice.

Page 25: Algoritmos geométricos

• El orden en el que se almacenan los puntos dentro del array puede ser importante en algunos programas: de hecho, el objetivo de algunos algoritmos geométricos consiste en ordenar los puntos de una forma determinada.

Page 26: Algoritmos geométricos

Intersección de segmentos de líneas

• Como primer problema geométrico elemental, se considerará si dos segmentos determinados se cortan o no.

Page 27: Algoritmos geométricos

1• En el primer caso, los

segmentos se cortan, en el segundo el extremo de un segmento está situado en el otro segmento. Se considerará que esto es una intersección, suponiendo que los segmentos son cerrados (los extremos forman parte de los segmentos); por tanto, los segmentos que poseen un extremo en común se cortan.

2

Page 28: Algoritmos geométricos

3

• En estos casos los extremos no se cortan, pero los casos difieren si se considera el punto de intersección de las líneas definidas por los segmentos.

• En el cuarto caso, este punto de intersección se encuentra en uno de los segmentos; en el tercer caso no es así. O también las líneas podrían ser paralelas

4

Page 29: Algoritmos geométricos

Camino cerrado simple

• Para poder saborear los problemas que se refieren a conjuntos de puntos considérese el problema de encontrar a partir de un conjunto de N puntos, un camino que no se corte a sí mismo, que recorra todos los puntos y que vuelva al punto inicial.

Page 30: Algoritmos geométricos

• Tal camino se denomina camino cerrado simple. Es posible imaginar muchas aplicaciones para esto: los puntos podrían representar casas, y el camino puede ser la ruta que seguiría un cartero para visitar todas las casas sin cruzar su propio trayecto.

Page 31: Algoritmos geométricos

• O simplemente, se podría buscar una forma razonable de dibujar los puntos usando un plotter mecánico.

• Este problema es elemental, porque sólo busca cualquier camino cerrado que conecte los puntos.

Page 32: Algoritmos geométricos

• El problema de buscar el mejor camino es conocido como el problema del vendedor ambulante.

Page 33: Algoritmos geométricos

• Una forma sencilla de resolver este problema elemental es la siguiente: se selecciona uno de los puntos, que servirá como <pivote>. Después se calcula el ángulo de las líneas que unen el pivote con cada uno de los puntos del conjunto según la dirección horizontal positiva (esto es parte de las coordenadas polares de cada punto del conjunto, con el pivote como origen), a continuación se ordenan los puntos según el ángulo calculado y por último se conectan los puntos adyacentes.

Page 34: Algoritmos geométricos

• El resultado es un camino cerrado simple que conecta todos los puntos.

Page 35: Algoritmos geométricos

Inclusión de un polígono

• El siguiente problema que se va a considerar es muy natural: dados un punto y un polígono representdo como un array de puntos, determinar si el punto está dentro o fuera del polígono.

Page 36: Algoritmos geométricos

• De inmediato se puede ver una solución directa a este problema: se dibuja una línea larga desde el punto, en cualquier dirección (lo suficientemente larga como para garantizar que el otro extremo esté situado fuera del polígono), y se cuenta el número de líneas del polígono a las que corta.

Page 37: Algoritmos geométricos

• Si el número es impar, el punto debe estar en el interior; si es par , el punto es exterior. Esto se comprueba fácilmente viendo lo que sucede al acercarse desde el extremo exterior: tras la primera intersección, se está dentro; tras la segunda de nuevo se está fuera, etc.

Page 38: Algoritmos geométricos

Inclusión de un polígono

Page 39: Algoritmos geométricos

Perspectiva

• Resulta fácil subestimar la dificultad de la resolución de un determinado problema geométrico utilizando una computadora. Existen otros muchos cálculos geométricos elementales que no se han estudiado.

Page 40: Algoritmos geométricos

• Por ejemplo, un ejercicio interesante podría ser la realización de un programa que calcule el área de un polígono.

Page 41: Algoritmos geométricos

• Los problemas vistos hasta el momento constituyen unas herramientas básicas que serían útiles para solucionar algunos problemas más complicados.

Page 42: Algoritmos geométricos

Obtención del cerco convexo

• A veces, cuando hay que procesar un elevado número de puntos, lo que interesa es conocer los límites del conjunto de dichos puntos. Al observar en un diagrama un conjunto de puntos dibujados en el plano, normalmente no hay problema en distinguir los puntos que están dentro del conjunto de los que se encuentran en los bordes.

Page 43: Algoritmos geométricos

• Esta distinción es una característica fundamental de los conjuntos de puntos; en este capítulo se verá como se pueden caracterizar de forma precisa, examinando algoritmos que distinguen los puntos que conforman el límite natural.

Page 44: Algoritmos geométricos

• El método matemático utilizado para la descripción del límite natural de un conjunto de puntos depende de una propiedad geométrica denominada convexidad.

Page 45: Algoritmos geométricos

Ejemplo:

• El polígono cerrado simple que se calculó anteriormente, es no convexo; por su parte, todos los triángulos y rectángulos son convexos.

Page 46: Algoritmos geométricos

• Se define el cerco convexo de un conjunto de puntos del plano como el polígono convexo más pequeño que los contiene a todos. El cerco convexo es el camino más pequeño que envuelve los puntos.

Page 47: Algoritmos geométricos

• Una propiedad obvia y fácil de probar del cerco convexo es que los vértices del polígono convexo que definen el cerco son puntos pertenecientes al conjunto original de puntos.

Page 48: Algoritmos geométricos

• Dados N puntos, algunos de ellos forman un polígono convexo, dentro del cual están contenidos todos los demás.

• El problema consiste en encontrar esos puntos.

Page 49: Algoritmos geométricos

• En general, el cerco convexo puede contener como mínimo, desde tres puntos (si los tres puntos forman un triángulo que contiene a los demás), hasta, como máximo, todos los puntos (si todos ellos están situados en el cerco convexo, en cuyo caso los puntos constituyen su propio cerco convexo)

Page 50: Algoritmos geométricos

• El número de puntos del cerco convexo de un conjunto de puntos aleatorio está comprendido entre esos extremos.

• Una propiedad fundamental del cerco convexo es que cualquier línea exterior al cerco, al desplazarla hacia él en cualquier dirección, tocará al menos unos de los puntos vértice.

Page 51: Algoritmos geométricos

Reglas del juego

• La entrada de un algoritmo de búsqueda del cerco convexo, es por supuesto, un array de puntos; se puede utilizar el tipo punto definido en el capítulo anterior.

Page 52: Algoritmos geométricos

• La salida es un polígono, también representado como un array de puntos, que tiene la particularidad de que, al ir uniendo los puntos en el orden en que aparecen en el array, se dibuja el polígono.

Page 53: Algoritmos geométricos

• Como en todos los algoritmos geométricos, hay que prestar alguna atención a los casos degenerados que probablemente aparezcan en la entrada.

Page 54: Algoritmos geométricos

• Por ejemplo, ¿Cuál es el cerco convexo de un conjunto de puntos que están alineados?

• Dependiendo de la aplicación, podrían ser todos los puntos, o sólo los dos extremos, o quizás también valdría cualquier conjunto que incluya los dos puntos extremos.

Page 55: Algoritmos geométricos

Envolventes

• El algoritmo más natural de cerco convexo, que se asemeja al método que utilizaría una persona para dibujar el cerco convexo de un conjunto de puntos, es una forma sistemática de envolver el conjunto de puntos. Empezando por algún punto que pertenezca con seguridad al cerco convexo.

Page 56: Algoritmos geométricos

• Por ejemplo, el que contenga la coordenada “y” más pequeña, se traza una línea reca y se gira, haciendo un barrido hacia arriba, hasta que toque algún punto; este punto debe pertenecer al cerco convexo.

Page 57: Algoritmos geométricos

• A continuación, tomando como pivote este punto, se continúa barriendo hasta encontrar el siguiente punto y así sucesivamente hasta que el conjunto quede envuelto por completo (se vuelva al punto inicial).