Salta ai contenuti. | Salta alla navigazione

Strumenti personali

Esercizio Stampe

Un server di stampa deve decidere lo scheduling delle stampe su una stampante. Il server ha ricevuto un insieme di richieste di stampa, riportate nel file task.pl; ciascuna richiesta è rappresentata da un fatto

task(ID,EST,LCT,D)

dove

  • ID è un identificatore univoco della richiesta
  • EST (Earliest Start Time) è il primo istante di tempo in cui può iniziare la stampa: la stampa non può iniziare prima di EST.
  • LCT (Latest Completion Time) è l'ultimo istante di tempo in cui la stampa può terminare: può terminare prima di LCT oppure in LCT ma non dopo
  • D è la durata della stampa.

 

Poiché alcune stampe potrebbero avere una durata superiore a quella prevista, si è deciso di massimizzare la minima distanza temporale fra le coppie di stampe. Più precisamente, date una stampa i ed una stampa j, la distanza fra i e j è la differenza fra l'istante di terminazione della prima stampa e l'istante di inizio della seconda (in ordine temporale). Ad esempio, se

  • la stampa 1 inizia all'istante 6 e finisce all'istante 10
  • la stampa 2 inizia all'istante 2 e finisce all'istante 3
  • la stampa 3 inizia all'istante 12 e finisce all'istante 14

allora

  • la distanza fra 1 e 2 è 6−3=3
  • la distanza fra 1 e 3 è 12−10=2
  • la distanza fra 2 e 3 è 12−3=9

quindi la minima distanza fra due stampe è 2.