Para completar el punto agregamos las respectivas duraciones a cada tarea según la tabla dada:
Con lo cual finalizamos el primer punto.
El segundo punto nos pide calcular los tiempos mínimos de inicio y finalización para cada tarea. Lo haremos directamente en la tabla agregando dos columnas respectivas:
IdTarea | Descripción | Duración | Dependencias | Tiempo inicio | Tiempo final |
a | Análisis de requerimientos | 8 | | 0 | 8 |
b | Conseguir recursos hardware | 10 | | 0 | 10 |
c | | 8 | a,b | 10 | 18 |
d | Diseñar la solución | 9 | a | 8 | 17 |
e | Conseguir programadores | 5 | b | 10 | 15 |
f | Diseñar las interfaces de usuario | 3 | c,d | 18 | 21 |
g | Codificar el programa | 2 | d,e | 17 | 19 |
h | Pruebas y depuración | 4 | f,g | 21 | 25 |
i | Capacitación de programadores | 3 | e,f | 21 | 24 |
Explicación:Iniciamos con la tarea a, la cual no tiene dependencias, por tanto su tiempo mínimo de inicio es 0 y su tiempo mínimo de finalización se obtiene sumando su duración, o sea 0 + 8 = 8.
La tarea b tampoco tiene dependencias, por lo que tiempo mínimo de inicio es 0 y tiempo mínimo de finalización es 0 + 10 = 10.
Para la tarea c se tienen a y b como dependencias. De éstas dos la que tiene mayor tiempo mínimo de finalización es b, con 10. Dicho 10 lo trasladamos al tiempo mínimo de finalización de c. Ahora le sumamos la duración de c para encontrar su tiempo mínimo de finalización: 10 + 8 = 18.
La tarea d sólo tiene una dependencia, la a. Por tanto, tiempo de inicio: 8, tiempo de finalización 8 + 9 = 17.
La tarea e sólo tiene una dependencia, la b. Por tanto, tiempo de inicio: 10 y tiempo de finalización 10 + 5 = 15.
La tarea f tiene c y d como dependencias. De éstas la que tiene mayor tiempo mínimo de finalización es c con 18. Por tanto, tiempo de inicio: 18 y tiempo de finalización: 18 + 3 = 21.
La tarea g tiene d y e como dependencias. De éstas la que tiene mayor tiempo mínimo de finalización es d con 17. Por tanto, tiempo de inicio: 17 y tiempo de finalización: 17 + 2 = 19.
La tarea h tiene f y g como dependencias. De éstas la que tiene mayor tiempo mínimo de finalización es f con 21. Por tanto, tiempo de inicio: 21 y tiempo de finalización: 21 + 4 = 25.
La tarea i tiene e y f como dependencias. De éstas la que tiene mayor tiempo mínimo de finalización es f con 21. Por tanto, tiempo de inicio: 21y tiempo de finalización: 21 + 3 = 24.
Con lo cual, finalizamos el punto 2.
El punto 3 nos pide encontrar las tareas de la ruta crítica y representarlas en el grafo dibujado en el punto 1.
Agregamos a la tabla una columna para la ruta crítica:
IdTarea | Descripción | Duración | Dependencias | Tiempo inicio | Tiempo final | Ruta crítica |
a | Análisis de requerimientos | 8 | | 0 | 8 | |
b | Conseguir recursos hardware | 10 | | 0 | 10 | * |
c | | 8 | a,b | 10 | 18 | * |
d | Diseñar la solución | 9 | a | 8 | 17 | |
e | Conseguir programadores | 5 | b | 10 | 15 | |
f | Diseñar las interfaces de usuario | 3 | c,d | 18 | 21 | * |
g | Codificar el programa | 2 | d,e | 17 | 19 | |
h | Pruebas y depuración | 4 | f,g | 21 | 25 | * |
i | Capacitación de programadores | 3 | e,f | 21 | 24 | |
Explicación:Comenzamos con la tarea que tiene un mayor tiempo mínimo de finalización. Esa tarea es la h, con 25. La marcamos como tarea crítica.
Ahora vemos las dependencias de h, las cuales son f, g. De éstas dos seleccionamos la que tenga mayor tiempo mínimo de finalización, la cual es f con 21, por tanto, también marcamos f como crítica.
Ahora vemos las dependencias de f, las cuales son c, d. De éstas dos seleccionamos la que tenga mayor tiempo mínimo de finalización, la cual es c con 18, por tanto, también marcamos c como crítica.
Ahora vemos las dependencias de c, las cuales son a, b . De éstas dos seleccionamos la que tenga mayor tiempo mínimo de finalización, la cual es b con 10, por tanto, también marcamos b como crítica.
Como b no tiene dependencias, el algoritmo termina.
Ahora, resaltamos en el grafo, las tareas de la ruta crítica:
Con lo cual, terminamos el punto 3.
El punto 4 requiere los tiempos de holgura. Cabe destacar que dichos tiempos le pertenecen únicamente a las tareas no críticas.
IdTarea | Descripción | Duración | Dependencias | Tiempo inicio | Tiempo final | Ruta crítica |
a | Análisis de requerimientos | 8 | | 0,1 | 8,9 | |
b | Conseguir recursos hardware | 10 | | 0 | 10 | * |
c | | 8 | a,b | 10 | 18 | * |
d | Diseñar la solución | 9 | a | 8,9 | 17,18 | |
e | Conseguir programadores | 5 | b | 10,14 | 15,19 | |
f | Diseñar las interfaces de usuario | 3 | c,d | 18 | 21 | * |
g | Codificar el programa | 2 | d,e | 17,19 | 19,21 | |
h | Pruebas y depuración | 4 | f,g | 21 | 25 | * |
i | Capacitación de programadores | 3 | e,f | 21,22 | 24,25 | |
Explicación:Comenzamos con la tarea no crítica con mayor tiempo de finalización. Esa es la i con 24. Como i no tiene tareas sucesoras, es decir, tareas de las cuales i sea dependencia, tomamos el mayor tiempo mínimo de finalización de todas las tareas, críticas o no. Ese tiempo es el de h con 25. Colocamos entonces el 25 como holgura en el tiempo de finalización de i y nos queda: 24, 25. Como entre 24 y 25 hay una diferencia de 1 unidad de tiempo, aplicamos la misma diferencia al tiempo de inicio y nos queda 21, 22.
Seguimos con la siguiente tarea no crítica con mayor tiempo de finalización. Esa es g con 19. Los sucesores de g son: h. De h tomamos el menor tiempo de inicio, es decir, 21. Ese 21 lo agregamos al tiempo de finalización de h quedándonos: 19,21. Como entre 19 y 21 hay una diferencia de 2 unidades de tiempo, aplicamos la misma diferencia al tiempo de inicio y nos queda 17,19.
Seguimos con la siguiente tarea no crítica con mayor tiempo de finalización. Esa es d con 17. Los sucesores de d son: f y g. Entre éstas dos tareas comparamos los mayores tiempos mínimos de inicio, es decir, 18 y 19. Tomamos el menor, es decir, 18. Ese 18 lo agregamos al tiempo de finalización de d quedándonos: 17,18. Como entre 17 y 18 hay una diferencia de 1 unidad de tiempo, aplicamos la misma diferencia al tiempo de inicio y nos queda 8,9.
Seguimos con la siguiente tarea no crítica con mayor tiempo de finalización. Esa es e con 15. Los sucesores de e son: g e i Entre éstas dos tareas comparamos los mayores tiempos mínimos de inicio, es decir, 19 y 22. Tomamos el menor, es decir, 19. Ese 19 lo agregamos al tiempo de finalización de e quedándonos: 15, 19. Como entre 15 y 19 hay una diferencia de 4 unidades de tiempo, aplicamos la misma diferencia al tiempo de inicio y nos queda 10,14.
Seguimos con la siguiente tarea no crítica con mayor tiempo de finalización. Esa es a con 8. Los sucesores de a son: c y d. Entre éstas dos tareas comparamos los mayores tiempos mínimos de inicio, es decir, 10 y 9. Tomamos el menor, es decir, 9. Ese 9 lo agregamos al tiempo de finalización de a quedándonos: 8, 9. Como entre 8 y 9 hay una diferencia de 1 unidad de tiempo, aplicamos la misma diferencia al tiempo de inicio y nos queda 0,1.
Al no quedar más tareas no críticas, el algoritmo ha terminado, así como también el punto 4 y el ejercicio.
En caso de otras dudas o correcciones, comunicarlas en clase o al correo: joaquin@ugb.edu.sv
Saludos.