Está en la página 1de 1

TP Greedy Ej.

Conj. candidatos: Las tareas a procesar


Func. seleccion: Seleccionar la tarea de mayor ganancia
Func. factibilidad: Ejecutar la tarea si existe un momento libre lo mas tardio
posible que este libre
Func. solucion: Haber procesado las tareas o que ya no queden momentos libres para
asignar procesos
Func. objetivo: Maximizar la ganancia de la secuencia de tareas a ejecutar

Algoritmo: SecuenciaTareas
Entrada: T: Vector<Tareas>
Salida: G: entero

Ordenar(T) //Ordenar las tareas por ganancia descendiente o(n.log(n))


total <- longitud(T)
i <- 0
g <- 0
asignadas <- 0
secuencia <- inicializarVector(total)
mientras i<total y asignadas<total:
masTardio <- T[i].plazo:
mientras masTardio>0 y secuencia[masTardio]!=0:
masTardio <- masTardio - 1
si masTardio > 0:
secuencia[masTardio] <- T[i]
g <- g + 1
devolver g

Complejidad temporal: o(n * mastardio)

TP Greedy Ej.2

Conj. Candidatos: Los procesos a ejecutar


Func. Seleccion: Seleccionar el proceso de menor duracion
Func. Factibilidad: No aplica
Func. Solucion: Haber ejecutado todos los procesos
Func. Objetivo: Minimizar el tiempo de espera de los procesos

Algoritmo: ProcesosEsperando
Entrada: V: Vector<Proceso>
Salida: R: Vector<Proceso>

R <- inicializarVector(longitud(V))
Ordenar(V) //Ordeno el vector de procesos por duracion ascendente (o(n.log(n))
para i=1 hasta longitud(V):
R[i] <- V[i]
devolver R

Complejidad temporal: o(n.log(n))

También podría gustarte