Algoritmos geométricos

Slides:



Advertisements
Presentaciones similares
Algoritmos y Programas
Advertisements

Diseño y análisis de algoritmos
Transformaciones geométricas
Magnitudes físicas escalares y vectoriales.
Procesamiento de cadenas
Departamento: INGENIERÍA MECÁNICA, ENERGÉTICA Y DE MATERIALES
GEOMETRIA PLANA.
Geometría Analítica Parábola (versión preliminar)
Curso de Microsoft® Word 2010
Razonamiento algorítmico
Conceptos Hoja de cálculo. Concepto.
Traslaciones, giros y simetrías en el plano.
El presente material contiene
PROGRAMACION DE ESTRUCTURAS DE DATOS
Recursos matemáticos para física
CÁLCULO DIFERENCIAL.
TEMA 9 PROPORCIÓN Y ESTRUCTURAS MODULARES
conociendo la diagonal
Cap. 24 – La Ley de Gauss Una misma ley física enunciada desde diferentes puntos de vista Coulomb  Gauss Son equivalentes Pero ambas tienen situaciones.
Circunferencia. Presentado por: María del Rosario Ochoa Guerrero.
CONFIGURACIONES ESPECIALES
Aprendiendo matemáticas
Tema 2: Métodos de ajuste
GEOMETRIA Viene del griego geo tierra y metría medida
Potencias de exponente natural mayor que 1
Potencias de exponente natural mayor que 1
GRAFOS HUGO ARAYA CARRASCO.
Teoria de grafos.-clase 4
Guías Modulares de Estudio MATEMATICAS III Parte A
Gráficos y Visualización 3D
GEOMETRÍA ANALÍTICA ESPACIO RECTAS Y PLANOS
GEOMETRÍA ANALÍTICA ESPACIO RECTAS Y PLANOS
DR. ERNESTO SUAREZ.
UNIDAD 2:Crear, abrir y cerrar una base de datos Hacer clic sobre la opción Nuevo de la pestaña Archivo. Se mostrarán las distintas opciones para nuevos.
Vectores fijos en el plano
(Organización y Manejo de Archivos)
Descomposición Factorial Unidad 5
Guías Modulares de Estudio Matemáticas IV – Parte B
Vistas Semana 4.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo.
DIAGRAMAS ENTIDAD RELACIÓN
TEMA 2: DIAGRAMAS DE FLUJO
CALCULO DIFERENCIAL E INTEGRAL TAREA 12
GEOMETRÍA ANALÍTICA ESPACIO RECTAS Y PLANOS
Santiago Pachón Pedroza Jesús Arley Bolaños 1002
Luciano Reyes Itzel Elvira
VECTORES 1 Conceptos fundamentales 2. Elementos de un Vector
GEOMETRIA PLANA.
Elaboración de algoritmos usando lógica de programación
Graficación 2D Alumna: Yasmin Rosales Cruz
DEFINICIÓN DE VECTORES
Hoja de Cálculo EXCEL Introducción a la informática
2.1 DEFINICIONES CARACTERÍSTICAS Y SUPOSICIONES.
GEOMETRÍA ÁNGULOS. CUADRILÁTEROS. ÁREAS IDENTIDADES VOLÚMENES.
Trigonometría con circulo unitario
Envolvente convexa Parte 1: Algoritmos
Tema: ¿Qué es y para qué sirve Excel?
Universidad Abierta y a Distancia de México UnADM
Análisis cinemático: ACELERACION

Matrices Pág. 1. Matrices Pág. 2 Se llama matriz traspuesta de A, y se representa por A t a la matriz que resulta de intercambiar las filas y las columnas.
DIAGRAMAS ADMINISTRATIVOS
Matemáticas Discretas MISTI
REPRESENTACIÓN GRÁFICA
Análisis cinemático: VELOCIDAD
Las distancias en el espacio
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
VECTORES CONCEPTO DE DIRECCION ESCALARES Y VECTORES
Ing. José David Ortiz Salas
Transcripción de la presentación:

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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

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.

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

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

Se utilizará el conjunto de puntos mostrado en la siguiente figura, para ilustrar las operaciones de varios 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

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.

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.

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

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

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

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.

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.

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.

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

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.

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

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.

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.

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.

Inclusión de un polígono

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.

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

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

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.

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.

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.

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.

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.

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.

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.

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)

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.

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.

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.

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

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.

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.

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.

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