La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Algoritmos geométricos

Presentaciones similares


Presentación del tema: "Algoritmos geométricos"— Transcripción de la presentación:

1 Algoritmos geométricos

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

3 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.

4 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.

5 Un diseñador que trabaja con un objeto físico posee una intuición geométrica que resulta difícil de aplicar en una representación por computadora.

6 Otras muchas aplicaciones procesan datos geométricos de forma directa
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.

7 Otras aplicaciones son de tipo matemático o estadístico, campos en los que muchos tipos de problemas pueden ser naturalmente puestos en una representación geométrica.

8 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.

9 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.

10 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.

11 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.

12 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.

13 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.

14 Puntos, líneas y polígonos
La 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.

15 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

16 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.

17 Ejemplo: Struct punto {int x, y; char c; },
Struct linea { struct punto p1, p2; }; Struct punto poligono [Nmax];

18 Hay que destacar que los puntos sólo pueden tener coordenadas enteras
Hay que destacar que los puntos sólo pueden tener coordenadas enteras. También se podría utilizar una representación en coma flotante. El uso de coordenadas enteras hace que los algoritmos sean algo más sencillos y más eficaces.

19

20 Por ejemplo, los polígonos se representarán como arrays de puntos
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).

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

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

23 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 Y

24 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.

25 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.

26 Intersección de segmentos de líneas
Como primer problema geométrico elemental, se considerará si dos segmentos determinados se cortan o no.

27 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. 1 2

28 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 3 4

29 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.

30 Tal camino se denomina camino cerrado simple
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.

31 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.

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

33 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.

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

35 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.

36 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.

37 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.

38 Inclusión de un polígono

39 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.

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

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

42 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.

43 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.

44 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.

45 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.

46 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.

47 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.

48 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.

49 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)

50 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.

51 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.

52 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.

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

54 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.

55 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.

56 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.

57 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).


Descargar ppt "Algoritmos geométricos"

Presentaciones similares


Anuncios Google