Universidad Simón Bolı́var Departamento de Computación y Tecnologı́a de la Información CI-2693 Laboratorio de Algoritmos III Trimestre Septiembre-Diciembre de 2008 Tarea 5: Grafos de Precedencia 1. Descripción de la actividad El objetivo de la tarea 5 es el estudio de los Grafos de Preferencias, por medio de la implementación de algoritmos relacionados con la Planificación de Proyectos. Un grafo de precedencia es grafo dirigido sin circuitos. La primera actividad es determinar si el grafo que se suministra como entrada posee o no circuitos. En caso de poseer un circuito su aplicación debe indicarlo con un mensaje y luego debe finalizar su ejecución. La detección de circuitos es explicada en el capı́tulo 4 (IV.2.6.2) del libro de Meza y Ortega [1]. Se tiene que un proyecto es representado por un grafo de precedencia donde los vértices corresponden a las actividades a realizar, estableciéndose que un arco que va desde un vértice vi hasta un vértice vj , indica que la actividad i precede a la actividad j. Cada uno de los arcos posee un costo cij , el cual representa la mı́nima cantidad de tiempo necesario entre las actividad i y la actividad j. El tema de la planificación de proyectos es tratado en el capı́tulo 5 (V.5.4) del libro Grafos y Algoritmos [1]. Se requiere determinar el tiempo mı́nimo necesario para completar un proyecto dado. Para ello es necesario calcular el camino de costo máximo entre el vértice que representa el comienzo del proyecto y el vértice que representa su finalización. Para determinar el camino de costo máximo entre un par de vértices se debe abstener de implementar el algoritmo de Bellman. El intervalo de tiempo de comienzo de una actividad, para el cual el proyecto no sufrirı́a ningún retraso, viene dado por el [T EC(i), T AC(i)]. Para cada una de las actividades i, se desea calcular su holgura (T AC(i) − T EC(i)). 2. Especificación de la Entrada/Salida 2.1. Entrada Debe crear un programa llamando PlanProyecto.java que se ejecutará de la siguiente manera: >java PlanProyecto <entrada> Donde entrada es el nombre del archivo donde se define el proyecto con el siguiente formato: n // m // nodo_ini_1 nodo_fin_1 costo_1 // . . . nodo_ini_m nodo_fin_m costo_m nodo_inicio nodo_fin // 2.2. número de nodos número de arcos m arcos (nodo inicial, nodo final y costo) actividad inicial y actividad final Salida La salida deberá mostrar los siguientes datos: El tiempo mı́nimo para completar el proyecto El camino de costo máximo desde la actividad inicial hasta la actividad final (actividades crı́ticas) Para cada una de las actividades i mostar su holgura (T AC(i) − T EC(i)) 1 2.3. Ejemplo 2.3.1. Archivo de entrada 12 16 0 1 0 0 10 0 1 2 3 1 3 3 2 4 2 2 5 2 3 5 5 4 11 7 5 6 1 5 7 1 7 9 2 6 8 6 6 9 6 8 11 4 9 11 3 10 11 1 0 11 2.3.2. Salida Tiempo minimo de duracion del proyecto: 19 Ejecucion de las actividades criticas: 0 1 3 5 6 8 11 Actividad Holgura -----------------0 1 0 2 3 3 0 4 7 5 0 6 0 7 5 8 0 9 1 10 18 11 0 Referencias [1] M. Ortega and O. Meza. Grafos y Algoritmos. Equinoccio, 2006. 2