Está en la página 1de 7

UNIVERSIDAD DE GRANADA E.T.S.

DE INGENIER IA INFORMATICA

Departamento de Ciencias de la Computaci on e Inteligencia Articial

Teor a de Algoritmos
Gui on de Pr acticas
Curso 2003-04

Ingenier a T ecnica en Inform atica de Gesti on Ingenier a T ecnica en Inform atica de Sistemas

1.1 T ecnica Divide y Vencer as

1.1.

T ecnica Divide y Vencer as

El objetivo de la pr actica es que el alumno comprenda y asimile el funcionamiento de la t ecnica de dise no de algoritmos Divide y Vencer as. Para ello se propone un problema que debe resolverse.

1.1.1.

Envolvente convexa

La envolvente convexa de un conjunto de puntos Q es el pol gono convexo P m as peque no tal que cualquier punto de Q est a en el borde de P o en su interior. De manera intuitiva podemos considerar cada punto de Q como una puntilla clavada en una tabla. La envolvente convexa del conjunto de puntos es la forma que adopta una banda el astica que rodeara las puntillas una vez que la solt aramos.

Nuestro problema consiste en encontrar la secuencia de puntos de Q que forma los v ertices de la envolvente convexa. Una primera aproximaci on al problema puede llevarnos a obtener un algoritmo espec co que descarta los puntos que son interiores a la envolvente convexa. Para ello compara cada punto con el tri angulo formado por cualquier trio de puntos y lo descarta si se encuentra en su interior. Veremos que este problema tambi en se puede abordar considerando la t ecnica del Divide y Vencer as.

1.1.2.

Algoritmo Divide y Vencer as

Para establecer un algoritmo Divide y Vencer as que encuentre una soluci on al problema debemos: 1. Dividir el problema original en subproblemas m as peque nos que ser an resueltos de manera independiente.

1.1 T ecnica Divide y Vencer as

2. Establecer un tama no m nimo de problema para el que conocemos la soluci on o bien esta se puede obtener f acilmente. 3. Combinar las soluciones obtenidas de los subproblemas para obtener la soluci on al problema. Dividir Para dividir el problema en subproblemas m as simples distribuiremos los puntos de Q en dos subconjuntos L y R tales que la coordenada x de cualquier punto de L es menor o igual a la coordenada x de todos los puntos de R.
L

Supondremos que los puntos de Q estar an en un vector ordenados por la componente x y que esta no se repite. Gracias a esto la divisi on de Q en los sobconjuntos L y R es tan f acil como dividir el vector por la mitad. Caso base El principal problema de encontrar la envolvente convexa de un conjunto de puntos es determinar qu e puntos son interiores, es decir, no est an en la periferia formando parte de la envolvente sino que est an en el interior del pol gono. Para que un punto est e en el interior de la envolvente convexa hace falta que dicha envolvente convexa tenga interior, es decir, la envolvente convexa debe formar un plano (en una recta no hay interior). El m nimo n umero de puntos necesario para formar un plano es tres. Por tanto, si el conjunto Q tiene tres o menos puntos la soluci on es f acil: todos los puntos forman parte de la envolvente convexa. Combinar La combinaci on de las soluciones de los subconjuntos L y R es la parte m as complicada del proceso. Para mezclar las envolventes obtenidas en los subproblemas es necesario unirlas utilizando las tangentes comunes m as altas y m as bajas.

1.1 T ecnica Divide y Vencer as

Una recta y = ax + b es una tangente inferior (superior) a un pol gono si para todo v ertice V = (vx , vy ) del pol gono se verica que avx + b vy (avx + b vy ). La tangente a un pol gono pasar a por al menos uno de sus v ertices. Si el pol gono es convexo y la recta pasa por el v ertice V entonces ser a tangente inferior (superior) si los dos v ertices adyacentes a V quedan por encima (debajo). El siguiente algoritmo obtiene los v ertices de L y R por los que pasa la tangente inferior (superior) a las dos envolventes convexas. Algoritmo para localizar la tangente inferior Sean LE y RE vectores con los v ertices de las envolventes convexas. i ndice del punto m as a la derecha de LE (mayor x) j ndice del punto m as a la izquierda RE (menor x) nea que pasa por los v ertices LE [i] y RE [j ] Sea Li Rj la l repite mientras Li Rj no es inferior a los puntos adyacentes a L[i] hacer incrementar i mientras Li Rj no es inferior a los puntos adyacentes a R[j ] hacer decrementar j hasta i y j no cambien La tangente inferior pasa por L[i] y R[j ]

Algoritmo para localizar la tangente superior Sean LE y RE vectores con los v ertices de las envolventes convexas. i ndice del punto m as a la derecha de LE (mayor x) j ndice del punto m as a la izquierda RE (menor x) Sea Li Rj la l nea que pasa por los v ertices LE [i] y RE [j ] repite mientras Li Rj no es superior a los puntos adyacentes a L[i] hacer decrementar i mientras Li Rj no es superior a los puntos adyacentes a R[j ] hacer incrementar j hasta i y j no cambien La tangente superior pasa por L[i] y R[j ] Las dos tangentes dividen cada envolvente en dos trozos. Los segmentos que se encuentran a la derecha de la envolvente de L y los segmentos que se

1.2 Tareas a realizar

encuentran a la izquierda de la envolvente de R son eliminados y sustituidos por las tangentes.

1.2.

Tareas a realizar

Se pide dise nar e implementar los dos algoritmos comentados para resolver el problema: a) El algoritmo espec co b) Un algoritmo donde se aborde el problema considerando el enfoque Divide y Vencer as. Demostrar que el algoritmo Divide y Vencer as anteriormente comentado permite obtener la soluci on a nuestro problema. c) Realizar el an alisis de la eciencia de los dos algoritmos, seg un los enfoques te orico, emp rico e h brido.

1.2.1.

C alculo de umbrales en algoritmos Divide y Vencer as

Uno de los aspectos fundamentales para lograr un buen algoritmo basado en la t ecnica Divide y Vencer as es la determinaci on del umbral. Sabemos que su valor optimo no es jo, y que depende de diversos factores: algoritmo base, implementaci on, casos estudiados, etc. En esta pr actica se pretende realizar el c alculo del umbral optimo para nuestro problema. Vamos a estudiar la variante del algoritmo Divide y Vencer as que resulta al considerar como algoritmo base el algoritmo espec co previamente desarrollado (algoritmo a) de la secci on 1.2). Pasos a seguir para calcular un valor adecuado del umbral: 1. C alculo te orico del valor del umbral. A partir de la expresi on del tiempo de ejecuci on del algoritmo base y la expresi on recurrente del tiempo de ejecuci on para el m etodo recursivo, determine cu al es el tama no del problema para el que ambos tiempos son iguales (suponiendo un s olo nivel de recursi on). Este valor es el umbral te orico.

1.3 Evaluaci on de la pr actica

2. Calcule el tiempo exacto seg un un enfoque h brido del tiempo de ejecuci on del algoritmo espec co. Calcule ahora el umbral igualando esta funci on de tiempo con la expresi on recurrente del m etodo recursivo. Este es el umbral optimo. 3. Seleccione distintos valores (inferiores y superiores al umbral optimo) y obtenga los tiempos de ejecuci on reales para distintos casos del problema. Estos son los umbrales de tanteo. 4. Muestre en una gr aca comparativa la evoluci on del tiempo de ejecuci on del algoritmo para los distintos valores del umbral estudiados. Es decir, para cada selecci on distinta del umbral (te orico, optimo y de tanteo) deber a dibujar una curva con los tiempos de los casos medidos emp ricamente. Comente los resultados justicando cu al o cu ales de las variantes dar an mejores resultados.

1.3.

Evaluaci on de la pr actica

Para su evaluaci on, el alumno deber a entregar una memoria y un disquete, que se ajustar an a las siguientes indicaciones:

1.3.1.

Estructura de la memoria

La memoria tendr a una portada en la que aparezcan claramente: el t tulo de la pr actica, la titulaci on, el nombre y direcci on de correo electr onico del alumno y el nombre de su profesor de pr acticas. La primera parte de la memoria describir a la resoluci on del problema de la envolvente convexa de un conjunto de puntos. Debe contener las siguientes partes: Denici on del problema. Dise no del algoritmo espec co. Listado de la implementaci on del algoritmo espec co. An alisis de la eciencia del algoritmo espec co: te orico, emp rico e h brido. Dise no del algoritmo Divide y Vencer as. Demostraci on de que el algoritmo dise nado resuelve el problema. Implementaci on del algoritmo Divide y Vencer as.

1.3 Evaluaci on de la pr actica

An alisis de la eciencia del algoritmo Divide y Vencer as: te orico, emp rico e h brido. Detalle del c alculo del umbral: umbrales te orico, optimo y de tanteo.

1.3.2.

Disquete

Junto con la memoria se entregar a un disquete con las implementaciones de los algoritmos indicados. Adem as, de todos los cheros fuentes correspondientes, se incluir a un chero Makefile que automatice la compilaci on. El disquete ir a etiquetado con el t tulo de la pr actica, y el nombre y grupo de pr acticas del alumno. Finalmente, el disquete se adjuntar a dentro de un sobre peque no pegado a una de las p aginas de la memoria.

1.3.3.

Otras observaciones

En la p agina http://decsai.ugr.es/~jmbs/TA puede encontrarse este gui on en distintos formatos, adem as de informaci on adicional sobre la pr actica. Fecha l mite de entrega: 28 de noviembre de 2003 a las 14:00h. Se recuerda que la elaboraci on de las pr acticas es de car acter individual.

También podría gustarte