Vous êtes sur la page 1sur 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 2002-03

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

Pr actica 2 Programaci on Din amica


2.1. Objetivo

El objetivo de la pr actica es que el alumno comprenda y asimile el funcionamiento de las t ecnica de dise no de algoritmos basada en Programaci on Din amica. Para ello se propondr a un problema que habr a de resolverse aplicando esta t ecnica.

2.2.

Encontrar la subsecuencia com un m as larga

Dado un conjunto nito de s mbolos, una secuencia del conjunto es una disposici on nita y ordenada de s mbolos del conjunto. Por ejemplo, dado el conjunto = {a, c, g, t} son secuencias suyas accggtagtttc y cgtaatgc . La longitud de una secuencia es el n umero de s mbolos que la componen: | cf taatgc | = 8. Dada un secuencia, A, una subsecuencia de esta, Z , es cualquier secuencia que resulta al eliminar cero o m as de los s mbolos de A. Por ejemplo, sea A = acctagga . Entonces la propia A es un subsecuencia de s misma. Pero tambi en lo son actagga , ta y aa , que resultan de eliminar la primera c, acc y agg y, todos los s mbolos menos el primero y el u ltimo o cct y gga, respectivamente. Para una secuencia de longitud n se pueden extraer 2n subsecuencias. Dadas dos secuencias A y B , un subsecuencia Z se dice com un si es subsecuencia de A y B simult aneamente. El objetivo de este problema es encontrar una subsecuencia com un a dos secuencias y que sea de longitud m axima.

2.2 Encontrar la subsecuencia com un m as larga

Este es un problema con diversas aplicaciones reales, como por ejemplo: Biolog a molecular. Las cadenas de ADN se pueden representar como secuencias del alfabeto a, c, g, t. Cuando se encuentra una nueva secuencia, interesa encontrar a qu e otras secuencias se parece m as. Comparaci on de modicaciones realizadas sobre cheros. La utilildad diff de Unix se usa para comparar dos versiones distintas de un mismo chero. Funciona buscando una subsecuencia de l neas com un de longitud m axima. Refresco de informaci on en pantalla. Actualizar la informaci on mostrada en pantalla cuando se hacen cambios, requiere el env o del m nimo conjunto de datos cuando la comunicaci on entre el ordenador y la pantalla es muy lenta (por ejemplo, en terminales serie). La soluci on simple a este problema consiste en realizar todas las comparaciones posibles guardando en cada caso la que resulte m as larga. Este algoritmo requiere un tiempo proporcional a 2n . Este resultado, claramente insatisfactorio, se puede mejorar empleando Programaci on Din amica. El primer paso para dise nar un algoritmo basado en Programaci on Din amica consiste en encontrar una formulaci on del problema que cumpla el principio de optimalidad. Resulta sencillo probar lo siguiente: Sean A = a1 a2 am y B = b1 b2 bn dos cadenas. Si la cadena C = c1 c2 ck es su subsecuencia com un de longitud m axima entonces se cumple: 1. Si am = bn entonces ck = am = bn y c1 c2 ck1 es una subsecuencia com un de longitud m axima para A y B ambas sin el u ltimo s mbolo, es decir, para a1 a2 am1 y b1 b2 bn1 . 2. Si am = bn entonces si se verica ck = am se cumple que C es la subsecuencia com un de longitud m axima para A sin el u ltimo s mbolo ( a1 a2 am1 ) y B . 3. Si am = bn entonces si se verica ck = bn se cumple que C es la subsecuencia com un de longitud m axima para A y B sin el u ltimo s mbolo ( b1 eb2 bm1 ). A partir de esta propiedad es f acil dise nar un algoritmo basado en Programaci on Din amica que encuentre una subsecuencia com un de longitud m axima C de dos cadenas dadas, A y B . Lo ilustramos con un ejemplo:

2.2 Encontrar la subsecuencia com un m as larga

Ejemplo
Las cadenas de ADN codican toda la informaci on gen etica de un ser vivo empleando un alfabeto de tan s olo cuatro letras: a (adenina), c (citosina), g (guanina), t (timina), correspondientes a las cuatro macromol eculas que pueden aparecer en estas cadenas. En un an alisis para comparar si dos cadenas de ADN pertenecen a un mismo individuo (o comprobar si dos individuos est an emparentados) se determina cu al es la subsecuencia com un de longitud m axima y se determina el porcentaje de longitud de subsecuencia respecto a la longitud de la cadena del individuo. Supongamos dos cadenas A = gacggattag y B = gatcggaatag con longitudes m = 10 y n = 11, respectivamente. Entonces una subsecuencia com un de longitud m axima ser a: A= ga cggattag B= gatcggaatag ------------ga cgga tag El resultado puede obtener construyendo una tabla considerando el principio de optimalidad. Cada celda de esta tabla (i, j ) tiene la longitud de la subsecuencia m as larga com un a las cadenas A hasta el i- esimo s mbolo, ( a1 ai ), y B hasta el j - esimo s mbolo, ( b1 bj ). La tabla que se obtiene para el ejemplo es la siguiente: 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 2 2 2 2 2 2 2 2 2 0 1 2 2 2 2 2 3 3 3 3 0 1 2 3 3 3 3 3 3 3 3 0 1 2 3 4 4 4 4 4 4 4 0 1 2 3 4 5 5 5 5 5 5 0 1 2 3 4 5 6 6 6 6 6 0 1 2 3 4 5 6 6 6 7 7 0 1 2 3 4 5 6 7 7 7 7 0 1 2 3 4 5 6 7 7 8 8 0 1 2 3 4 5 6 7 7 8 9

donde la primera la y la primera columna se inician a 0 y a partir de ah la posici on (i, j ) se actualiza seg un: si el car acter i- esimo de la cadena A es igual al j - esimo de la cadena B , (ai = bj ), entonces el valor ser a 1 m as el valor de la posici on (i 1, j 1),

2.3 Resoluci on del problema

si no, se le asigna el valor m aximo de entre los de (i 1, j ) e (i, j 1). Como segundo ejemplo consideremos A = gacacgggattag y B = ggacatcggaatag . Una soluci on ser a: A = g aca cgggattag B = ggacatcggaa tag ---------------g aca cgga tag Y la tabla correspondiente resultar a: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 2 2 2 2 2 2 2 2 0 1 2 2 2 2 2 2 2 3 3 3 3 3 0 1 2 3 3 3 3 3 3 3 3 3 3 3 0 1 2 3 4 4 4 4 4 4 4 4 4 4 0 1 2 3 4 4 4 4 4 4 5 5 5 5 0 1 2 3 4 5 5 5 5 5 5 5 5 5 0 1 2 3 4 5 6 6 6 6 6 6 6 6 0 1 2 3 4 5 6 7 7 7 7 7 7 7 0 1 2 3 4 5 6 7 7 8 8 8 8 8 0 1 2 3 4 5 6 7 7 8 8 8 9 9 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 7 7 8 8 8 8 9 9 9 9 9 9 9 10 10 9 10 11

2.3.

Resoluci on del problema

Se pide dise nar e implementar un algoritmo basado en Programaci on Din amica para resolver el problema anterior. Especicar claramente los pasos seguidos para la resoluci on: Establecer una formulaci on del problema que cumpla el principio de optimalidad e incluir su demostraci on. La cantidad a optimizar (maximizar en este caso) es la longitud de la subsecuencia com un. Obtener una denici on recursiva de la soluci on. Seguir una aproximaci on ascendente para resolver el problema. O sea, dise nar un algoritmo para calcular la longitud m axima de las subsecuencias comunes.

2.4 Evaluaci on de la pr actica

Construir la soluci on optima utilizando los valores calculados previamente. Es decir, obtener una subsecuencia com un de longitud m axima. Por tanto, habreis de modicar el algoritmo dise nado en el paso anterior para recabar la informaci on necesaria para construir la subsecuencia buscada. Una vez implementado, realizar un estudio de la eciencia del algoritmo creado empleando los tres enfoques conocidos: te orico, emp rico e h brido.

2.4.

Evaluaci on de la pr actica

Esta pr actica forma parte del conjunto de trabajos que ser an evaluados para obtener la calicaci on del alumno en la asignatura. Para su evaluaci on, el alumno deber a entregar una memoria y un disquete, que se ajustar an a las siguientes indicaciones:

2.4.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 memoria deber a contener las siguientes partes: Denici on del problema. Resoluci on del problema mediante Programaci on Din amica indicando cada paso. Listado de la implementaci on de los algoritmos dise nados: el del c alculo de la longitud de la subsecuencia m as larga y el de obtenci on de una de esas subsecuencias. An alisis de la eciencia del algoritmo: te orico, emp rico e h brido.

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

2.4 Evaluaci on de la pr actica

2.4.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: 13 de enero de 2003 a las 14:00h. Se recuerda que la elaboraci on de las pr acticas es de car acter individual.

Vous aimerez peut-être aussi