Está en la página 1de 3

Anlisis del problema En nuestro caso sabemos que cada una de las conferencias tienen una hora de comienzo

y de finalizacin que estaran dentro del margen [c,f), por tanto una estrategia voraz seria considerar las conferencias en orden creciente de tiempo de comienzo, la otra sera considerar las conferencias por orden creciente de finalizacin. Por tanto una vez que tengamos ordenadas las conferencias podemos recorrerlas e intentar asignarle una sala utilizada previamente y que en ese determinado instante no se encuentre ocupada, si esta accin no se llega a realizar se le asignar por defecto una sala nueva. El nmero de salas que se deben ocupar vendr determinado por el nmero de salas necesarias en el momento que exista una mayor demanda. Adems debemos tener en cuenta que por cada conferencia, no se solapen la misma sala con ninguna conferencia.

Diseo algoritmos Seleccin es el tpico algoritmo de ordenacin por seleccin, en este caso por orden creciente tiempo comienzo (1) Proc seleccin (c[1..N],f[1..N],eventos[1.N],n) (2) Int i,j,posmin,aux,cambio=0 (3) Desde i=1 hasta n hacer (4) Posmin=i (5) Desde j=i+1 hasta n hacer (6) Si c[posmin]> c[j] entonces (7) posmin=j; cambio=1 (8) Fin Si (9) Fin Desde (10) Si cambio (11) aux=c[posmin];c[posmin]=c[i];c[i]=aux; (12) aux=f[posmin];f[posmin]=f[i];f[i]=aux; (13) aux=eventos[posmin];eventos[posmin]=eventos[i];eventos[i]=aux; (14) Fin Si (15) Fin Desde T(n) O ( )

Voraces .Orden creciente tiempo comienzo (1) Proc voraz(c[1N],f[1..N],sala[1N],eventos[1...N],n,sala[1]) (2) Int k,j,i,ocupacin[j];//ocupacin almacena hasta que hora estar reservada (3) Sala j (4) Seleccin(c,f,eventos,n)//ordena crecientemente por tiempo de comienzo. (5) Tiempo ejecucin O( ) (6) k=0 (7) {LAZO VORAZ} (8) Desde i=1 hasta n hacer (9) j=1 (10) Mientras j k Y ocupacin[j]>c[i] hacer (11) j=j+1 (12) Fin mientras (13) Si j k entonces (14) sala[i]=j; ocupacin[j]=f[i]; (15) Si no (16) k=k+1 (17) sala[i]=j; ocupacin[j]=f[i]; (18) Fin si (19) Fin desde (20) Fin proc T(n) O ( )

Seleccin1 es el tpico algoritmo de ordenacin por seleccin, en este caso por orden creciente tiempo finalizacin (1) Proc seleccin (c[1..N],f[1..N],eventos[1.N],n) (2) Int i,j,posmin,aux,cambio=0 (3) Desde i=1 hasta n hacer (4) Posmin=i (5) Desde j=i+1 hasta n hacer (6) Si f[posmin]> f[j] entonces (7) posmin=j; cambio=1 (8) Fin Si (9) Fin Desde (10) Si cambio (11) aux=c[posmin];c[posmin]=c[i];c[i]=aux; (12) aux=f[posmin];f[posmin]=f[i];f[i]=aux; (13) aux=eventos[posmin];eventos[posmin]=eventos[i];eventos[i]=aux; (14) Fin Si (15) Fin Desde T(n) O ( )

Voraces .Orden creciente tiempo 3finalizacin

(1) Proc voraz(c[1N],f[1..N],sala[1N],eventos[1N],n,sala[1]) (2) Int k,j,i,ocupacin[j];//ocupacin almacena hasta que hora estar reservada (3) Sala j (4) Seleccin1(c,f,eventos,n)//ordena crecientemente por tiempo de finalizacin. (5) Tiempo ejecucin O( ) (6) k=0 (7) {LAZO VORAZ} (8) Desde i=1 hasta n hacer (9) j=1 (10) Mientras j k Y ocupacin[j]>c[i] hacer (11) j=j+1 (12) Fin mientras (13) Si j k entonces (14) sala[i]=j; ocupacin[j]=f[i]; (15) Si no (16) k=k+1 (17) sala[i]=j; ocupacin[j]=f[i]; (18) Fin si (19) Fin desde (20) Fin proc T(n) O ( )

Manuel de usuario El usuario deber ejecutar el archivo p3.exe, una vez ejecutado se deber introducir el numero de conferencias que se van a desarrollar en la uja, despus deber introducir la hora de comienzo y de finalizacin de cada conferencia junto a su cdigo. Esta parte es fundamental, dado que si el usuario no introduce con cada conferencia su cdigo correspondiente (que deber ser un nmero natural) no sabr donde se realizar cada conferencia.Tambin se debe de tener en cuenta la introduccin de los horarios de la conferencia en nuestro programa el formato admitido de horas es de 0 a 24, es decir, si una conferencia empieza a las ocho y media de la tarde deberemos introducir 2030.

También podría gustarte