2
     Un’allocazione di uno o più intervalli di tempo su una o più macchine, per ogni lavoro, 
è comunemente detto schedule. Uno schedule si dice ammissibile se, ad ogni istante di 
tempo, ogni lavoro è processato da esattamente una macchina. Uno schedule è detto 
ottimale se minimizza (o massimizza) un dato criterio. 
     Un problema di scheduling può essere descritto utilizzando la notazione γβα || , dove 
α  rappresenta il numero di macchine, β  descrive le caratteristiche dei lavori, e γ  il 
criterio da ottimizzare o funzione obiettivo. 
 
1.2.1    Dati relativi ai lavori 
 
     Prima di tutto, i seguenti dati sono specificati per ogni lavoro 
j
J :  
 
• tempo di esecuzione 
j
p  nel caso di modello a singola operazione, oppure una 
collezione di tempi di esecuzione 
ij
p  nel caso di modello multi - operazione; 
• data di rilascio 
j
r , dopo la quale il lavoro può essere eseguito; 
•  funzione costo reale non decrescente 
j
f , che misura il costo )(tf
j
 dovuto al 
completamento del lavoro 
j
J  all’istante t; 
• data di consegna 
j
d , dopo la quale il lavoro è considerato in ritardo, e che può 
essere usata per definire
j
f ; 
• peso 
j
w , che definisce l’importanza del lavoro 
j
J , relativa agli altri lavori, e che 
può essere usata per definire 
j
f . 
 
1.2.2    Caratteristiche delle macchine 
 
     Il primo campo 
21
ααα =  specifica le caratteristiche delle macchine. Sia ο  il simbolo 
vuoto. Sia inoltre 
ij
p  il tempo di esecuzione del lavoro 
j
J  sulla macchina 
i
M . 
     Se {}RQP ,,,
1
οα ∈ , ogni lavoro
j
J  è composto da una singola operazione, che può 
essere processata su ogni macchina 
i
M , e più precisamente: 
 
• οα =
1
 : singola macchina; 
jj
PP =
1
 per ogni j; 
 3
• P=
1
α  : macchine parallele identiche; 
jij
PP =  per ogni 
i
M  e 
j
J ; 
• Q=
1
α  : macchine uniformi; ogni macchina 
i
M  ha una velocità 
i
s , cioè 
ijij
spp /=  per ogni 
i
M  e 
j
J ; 
• R=
1
α  : macchine indipendenti; la macchina 
i
M  processa il lavoro 
j
J  con una 
velocità dipendente dal lavoro 
ij
s , cioè 
ijjij
spp /=  per ogni 
i
M  e 
j
J . 
      
     Se {}OFJ ,,
1
∈α  ogni lavoro 
j
J  è composto da un insieme di operazioni 
{ }
jmjj
j
OOO
,,2,1
,...,, , e più precisamente: 
 
• J=
1
α : job shop; le operazioni di ogni lavoro 
j
J  formano una sequenza 
{ }
jmjj
j
OOO
,,2,1
,...,,  che deve essere processata in questo preciso ordine, ed ogni 
operazione 
ij
O  deve essere processata su una data macchina 
ij
µ , richiedendo 
ij
p  
unità di tempo; 
• F=
1
α : flow shop; caso particolare del job shop, dove mm
j
=  e 
iij
M=µ  per 
ogni lavoro 
j
J ; 
• O=
1
α : open shop; simile al flow shop, eccetto che le operazioni di ogni lavoro
j
J   
possono essere processate in un ordine qualsiasi. 
 
     Se 
2
α  è un intero positivo, allora m è costante ed uguale a 
2
α  (problema modello). Se 
οα =
2
, allora m è una variabile ; il valore di m è specificato come parte del problema. 
Notare che οα =
1
 se e solo se 1
2
=α . 
 
1.2.3 Caratteristiche dei lavori 
 
     Il secondo campo { }
precj
rpmtn ββ ,,∈  indica le seguenti caratteristiche dei lavori: 
 
• se pmtn è presente, è consentita l’interruzione (in inglese preemption) 
dell’esecuzione dei lavori. Questo vuol dire che, una volta interrotta, l’esecuzione 
può riprendere in seguito. In caso contrario, cioè se l’interruzione non è consentita, 
una volta iniziata l’esecuzione di un lavoro su una macchina, essa deve essere 
necessariamente completata; 
 4
• se 
j
r  è presente, ad ogni lavoro può essere associata una data o istante di rilascio. 
In caso contrario, per ogni lavoro 
j
J , 
j
r = 0; 
• se è presente un vincolo di precedenza 
prec
β , esiste una relazione di precedenza p  
fra i lavori, cioè se 
kj
JJ p , allora 
j
J  deve essere completato prima che inizi 
l’esecuzione del lavoro
k
J . Se chain
prec
=β , la relazione di precedenza forma una 
catena. Se tree
prec
=β , la relazione p  forma un albero. Se prec
prec
=β , allora p  
è un ordinamento parziale arbitrario. Se 
prec
β  non è presente, i lavori possono 
essere processati in un ordine qualsiasi. 
 
1.2.4    Funzioni obiettivo 
 
     Il terzo campo γ  specifica il valore da ottimizzare o funzione obiettivo. Dato uno 
schedule ammissibile, possiamo calcolare per ogni lavoro 
j
J  i seguenti valori: 
 
• il tempo di completamento 
j
C , cioè l’istante di tempo nel quale l’esecuzione del 
lavoro 
j
J  è completata; 
• il flow time 
jjj
rCF −= , cioè l’intervallo di tempo nel quale il lavoro 
j
J  rimane 
nel sistema; 
• il ritardo o lateness 
jjj
dCL −= , cioè la quantità di tempo della quale il lavoro 
j
J  
eccede la sua due date 
j
d ; la lateness può essere negativa se il lavoro è completato 
prima della sua due date; 
• la tardiness { }0,max
jj
LT = , che è pari alla lateness se essa è non negativa, mentre 
vale zero altrimenti; 
• la unit penalty  
0
1
jjj
j
UseCd
U altrimenti
=≤
⎧
⎪
⎨
=
⎪
⎩
  
            cioè un’unità che penalizza i lavori in ritardo rispetto alla due date. 
 
     Il costo 
j
f  per ogni lavoro 
j
J  di solito è calcolato considerando una delle variabili 
descritte in precedenza, oppure il prodotto fra il peso 
j
w  ed una di esse. La funzione 
 5
obiettivo può essere una qualunque funzione dei costi 
j
f , nj ,...,1= . Comuni funzioni 
obiettivo sono tipicamente espresse nella forma 
∑
j
j
f , oppure 
jj
fmax . 
     Esempi di comuni criteri sono il total weighted completion time 
jj
j
wc
∑
, il massimo 
tempo di completamento o makespan 
max
max
jj
CC= , e la massima lateness 
max
max
jj
LL= . 
 
1.2.5    Esempi di problemi di scheduling 
 
     Consideriamo alcuni esempi di problemi di scheduling utilizzando la notazione a tre 
campi. Nel problema 
∑ jjj
Cwr ||1  si vuole minimizzare la somma pesata dei tempi di 
completamento su una macchina, con date di rilascio. Nel problema 
max
3| , |PpmtnprecL 
si vuole minimizzare la massima lateness, su tre macchine parallele identiche, con vincoli 
di precedenza generici fra i lavori, ed interruzione consentita. 
 
 
1.3     Complessità asintotica 
 
1.3.1    Introduzione 
 
     In questa sezione saranno introdotte alcune nozioni basilari sui problemi di 
ottimizzazione e sulle classi di complessità, che saranno utili per classificare molti dei 
problemi di scheduling come problemi “difficili”. 
     Un problema di ottimizzazione di qualsiasi tipo, può essere rappresentato tramite la 
coppia 
()
,I S , dove I è un insieme di istanze del problema, e S è un insieme di soluzioni. 
Più precisamente, un problema è detto: 
• di decisione, se 
{ }
0,1S = , ovvero bisogna decidere se l’istanza di input verifica o 
no una determinata proprietà; 
• di ricerca, se bisogna determinare una qualsiasi soluzione per l’istanza di input; 
• di ottimizzazione, se bisogna minimizzare o massimizzare una determinata misura 
della soluzione restituita. 
 6
     La complessità di un problema è di solito espressa come funzione della dimensione 
dell’input, intesa come grandezza correlata in modo polinomiale alla lunghezza di una 
qualsiasi codifica naturale dell’input che sia semplice e concisa (senza ridondanze), con 
numeri in base maggiore o uguale a 2. 
     Definiamo ora la nozione di complessità di un algoritmo. 
 
Definizione 1.1 
     Sia 
()
A
tx il tempo di esecuzione di un algoritmo A per un input x. Il tempo di 
esecuzione di A nel caso peggiore è: 
 
( ) ( )
{ }
max |
AA
tn tx x n= ≤ . 
 
Quindi, un algoritmo A ha complessità: 
 
• 
()
(
Ogn se 
() ( )
( )
{ }
00
(): , 0 () (),
A
tn Ogn fn cntaliche fn cgn nn==∃ ≤≤⋅∀≥; 
• 
()
(
gnΩ se 
() ( )
( )
{ }
(): , 0 () (),
A
t n g n f n c n tali che c g n f n n n=Ω = ∃ ≤ ⋅ ≤ ∀ ≥ ; 
• 
()
(
gnΘ  se 
() ( )
( )
A
tn gn=Θ  cioè 
( ) ( )
( )
A
tn Ogn=  e 
( )()
(
A
tn gn=Ω . 
 
Definiamo ora la nozione di complessità di un problema. 
 
Definizione 1.2 
     Un problema Π  ha complessità: 
  
• 
()
(
Ogn  se esiste un algoritmo A che lo risolve, avente complessità 
( )
(
Ogn ; 
• 
()
(
gnΩ  se ogni algoritmo A che lo risolve, ha complessità 
()
(
gnΩ ; 
• 
()
(
gnΘ  se Π  ha complessità 
( )
( )
gnΩ  e 
( )
( )
Ogn . 
 
 7
1.3.2     Problemi di decisione 
 
     I problemi di decisione, per convenzione sono espressi nella forma istanza e 
“domanda” sull’istanza stessa. 
 
Esempio: (SAT) 
 
Istanza = Formula CNF  f , definita su un insieme di variabili V. 
Domanda = Esiste un assegnamento di verità 
( )
:0,1Vτ →  che soddisfa f ? 
 
L’insieme di istanze I di un problema di decisione, è definito nel seguente modo: 
 
I YN= ∪  
dove: 
 
• Y = insieme di istanze positive, ovvero con soluzione 1; 
• N = insieme di istanze negative, ovvero con soluzione 0. 
 
Definizione 1.3 
     Un algoritmo A risolve un problema Π , se e solo se per ogni istanza x I∈ , A risponde 
1 se e solo se x Y∈ . 
 
Definizione 1.4 (Algoritmo non deterministico) 
     Un algoritmo non deterministico è composto da due fasi fondamentali. 
 
Fase 1 :  
Genera non deterministicamente una soluzione, o più in generale una struttura di soluzione 
y. 
 
Fase 2 : 
A partire dall’istanza x e dalla struttura y, verifica se x è un’istanza positiva. 
La complessità di un algoritmo non deterministico, è il costo della fase 2. 
 
 
 8
Definizione 1.5 
     Un algoritmo non deterministico A risolve Π  se e solo se esiste una struttura y tale per 
cui A risponde 1 se e solo se x Y∈ . 
 
Osservazioni 
1) Un algoritmo deterministico è meno potente perché non esegue la fase 1. 
2) Dato un qualsiasi algoritmo deterministico A che risolve Π , esiste un algoritmo 
non deterministico, avente la stessa complessità, che risolve Π  nel seguente modo: 
Esegue la fase 1, e coincide con A nella fase 2, ignorando la struttura y. 
 
     Un algoritmo non deterministico può essere definito come una procedura che, per le 
istanze con risposta affermativa o positive, verifica in tempo polinomiale se tale risposta è 
effettivamente affermativa. 
 
1.3.3    Classi di complessità 
 
     Definiamo ora le più importanti classi di complessità. Sia 
()
(
Time f n  la classe dei 
problemi di decisione risolubili in tempo 
( )
( )
Ofn  da algoritmi deterministici. Sia inoltre 
()
(
NTime f n  la classe dei problemi di decisione risolubili in tempo 
( )
(
Ofn  da 
algoritmi  non deterministici. 
 
Definizione 1.6 (Classe P) 
     La classe P, è la classe di tutti i problemi di decisione risolubili in tempo polinomiale 
deterministicamente, ossia: 
 
()
0
k
k
PTimen
∞
=
=
U
. 
 
Definizione 1.7 (Classe NP) 
     La classe NP, è la classe di tutti i problemi di decisione risolubili in tempo polinomiale 
non deterministicamente, ossia: 
 
 9
()
0
k
k
NP NTime n
∞
=
=
U
. 
 
     Le classi P e NP sono “robuste” rispetto allo schema di codifica dell’input ed al 
modello di calcolo utilizzati. 
     Si presume che le due classi P e NP non coincidano, poiché nessuno fino ad oggi è 
riuscito a dimostrare il contrario. 
 
Definizione 1.8 (NP - Completezza) 
     I problemi NP-Completi sono i più “difficili” in NP, e tali che se PNP≠ , allora non 
appartengono a P. Se si riuscisse a trovare un problema NP-completo appartenente a P, 
questa sarebbe la dimostrazione di P=NP. 
 
Definizione 1.9 (Riduzione polinomiale) 
     Siano A e B due problemi in forma di decisione. AB→ , ovvero A si riduce a B, se per 
ogni istanza aA∈  esiste un algoritmo polinomiale che trasforma l’istanza a in un’istanza 
bB∈  tale che se l’istanza b è positiva, allora anche a è positiva. Lo stesso vale se l’istanza 
b è negativa. 
     Un problema Π  si dice NP-Completo se ,QNPQ∀ ∈→Π, dove →  è la riduzione 
polinomiale fra problemi appena definita, cioè Π  è almeno tanto difficile quanto tutti i 
problemi in NP. 
 
1.3.4     Problemi di ottimizzazione 
 
     Un problema di ottimizzazione è caratterizzato da una quadrupla (I , S , M , goal), dove: 
1) I  =  Insieme delle istanze di input; 
2) S  = Insieme delle soluzioni ammissibili per le istanze in input; 
3) M = Funzione obiettivo che associa ad ogni input x I∈ , e soluzione ammissibile 
()
ySx∈ , un valore 
( )
,mxy N∈ ; 
4) Goal = 
{ }
min, max . 
 
Definizione 1.10 
     
()
*
Sx è l’insieme delle soluzioni ottime per x, ossia tali che se 
()
**
ySx∈ , allora:  
 10
()
( ) ( )
{ }
*
,min,|mxy mxy y Sx=∈; 
oppure:  
()
( ) ( )
{ }
*
,max,|mxy mxy y Sx=∈. 
     Indichiamo con 
()
*
mx la misura di una soluzione ottima per x, ossia 
()
( )
**
,mx mxy=  
per qualche 
()
**
ySx∈ . 
 
0sservazione 
     Ad ogni problema di ottimizzazione è associato un problema di decisione soggiacente, 
definito nel seguente modo: 
1) Si introduce nell’istanza di input un valore intero k. 
2) Ci si chiede se esiste una soluzione ammissibile, la cui misura è minore o uguale a k 
se goal=min, oppure maggiore o uguale a k se goal=max. 
 
     Risolvere un problema di ottimizzazione  è difficile almeno quanto risolvere il problema 
di decisione soggiacente ad esso associato. Infatti, se si possiede un algoritmo efficiente 
che risolve il problema di ottimizzazione, allora si possiede anche un algoritmo efficiente 
per il problema di decisione soggiacente, che consiste semplicemente nell’eseguire il 
primo, e nel chiedersi se la misura della soluzione restituita è minore o uguale a k (min), 
oppure maggiore o uguale a k (max). Viceversa, se il problema di decisione soggiacente 
non è risolubile efficientemente, nemmeno il problema di ottimizzazione può esserlo. 
  
Definizione 1.11 
     Definiamo ora le seguenti classi di complessità per problemi di ottimizzazione: 
 
PO = Classe dei problemi di ottimizzazione il cui problema di decisione soggiacente 
appartiene alla classe P. 
 
NPO = Classe dei problemi di ottimizzazione il cui problema di decisione soggiacente  
                appartiene alla classe NP. 
 
NP-Hard = Classe dei problemi di ottimizzazione il cui problema di decisione soggiacente  
è NP-completo. 
 
 11
Definizione 1.12 (Min Multiprocessor Scheduling) 
     Il problema denominato Min Multiprocessor Scheduling, può essere definito nel 
seguente modo: 
 
Istanza :  Insieme di task (lavori) T, numero di macchine o processori h, e lunghezza o 
tempo di esecuzione 
j
p  associato ad ogni task. 
Soluzione : Uno schedule per T, ossia una funzione 
[ ]
:1,f Th→ . 
Misura : Tempo di completamento dello schedule, ossia: 
 
[]
()
1,
|
max
jj
j
ih
tft i
p
∈
=
∑
. 
 
     Questo problema appartiene alla classe NP-Hard, poiché il problema di decisione 
soggiacente è NP-completo. Ciò si dimostra utilizzando la tecnica di riduzione 
polinomiale, a partire dal famoso problema denominato PARTITION, che a sua volta è 
NP-completo. 
     Ovviamente anche l’estensione al caso bicriterio del problema Min Multiprocessor 
Scheduling  che sarà definito in seguito, appartiene alla classe NP-Hard. 
 
 
1.4     Algoritmi di approssimazione ed algoritmi On Line 
 
     In questa sezione, saranno descritti e confrontati gli algoritmi di approssimazione, gli 
algoritmi on line, ed i metodo più comuni utilizzati per valutarne le prestazioni. 
In primo luogo, diamo alcune semplici definizioni. 
     L’estremo superiore di un insieme non vuoto A di numeri reali, denotato con  
Sup A, è il più piccolo numero reale u, tale che xu ≥ , per ogni Ax∈ . 
     L’estremo inferiore di A, denotato Inf A, è il più grande numero reale l, tale che xl ≤  
per ogni Ax∈ .  
     Se A è finito, allora sia Sup A che Inf A appartengono ad A. In questo caso, essi sono 
chiamati minimo e massimo di A, denotati con min A e max A rispettivamente.