Consegnare solo questo foglio, usando tutti i possibili margini per le risposte.
NGR = Non è richiesto di giustificare la risposta.
Cognome/Nome/Matricola:
La soluzione (x1 , x2 ) = 11 5
6 , 3 ) non è ammissibile.
La soluzione (x1 , x2 ) = (3, 0) è ammissibile, ha la prima componente diversa da 0 e soddisfa all’uguaglianza
il terzo vincolo. Quindi affinché sia ottima deve esistere una soluzione ammissibile del duale tale che y1 =
y2 = y4 = 0 e che soddisfi all’uguaglianza il primo vincolo del duale.
Ovvero (x1 , x2 ) = (3, 0) è ottima se e solo se esiste una soluzione per il seguente sistema:
min −2y1 +7y2 +24y3 −3y4
−y1 +2y2 +8y3 −2y4 = 2
y1 +2y2 +2y3 ≥ 1
y1 = 0
y2 = 0
y3 ≥ 0
y4 = 0
E poiché tale sistema non ha soluzione, segue che (x1 , x2 ) = (3, 0) non è una soluzione ottima.
La soluzione (x1 , x2 ) = ( 17 2
6 , 3 ) è ammissibile ha entrambe le componenti diverse da 0 e soddisfa all’uguaglianza
il secondo e il terzo vincolo. Quindi affinché sia ottima deve esistere una soluzione ammissibile del duale
tale che y1 = y4 = 0 e che soddisfi all’uguaglianza ientrambi i vincoli del duale.
Ovvero (x1 , x2 ) = ( 17 2
6 , 3 ) è ottima se e solo se esiste una soluzione per il seguente sistema:
3. Si consideri il grafo bipartito G con insieme dei vertici {a, b, c, d, e, f, g, h, i, l, m} e adiacenze definite dalle
seguenti liste: adj[a] = {f, g, h, i}; adj[b] = {h, l}; adj[c] = {l}; adj[d] = {h, i, l, m}; adj[e] = {h, l};
adj[f ] = {a}; adj[g] = {a}; adj[h] = {a, b, d, e}; adj[i] = {a, d}; adj[l] = {b, c, e}; adj[m] = {d}. Si
consideri il matching M = {ag, bh, cl, di}. Si certifichi l’ottimalità di tale matching esibendo un minimo
taglio per un problema di massimo flusso su una rete ausiliaria oppure se ne certifichi la non ottimalità
esibendo un cammino aumentante sulla stessa rete. Per rispondere all’esercizio, esibire un taglio minimo
della rete ausiliaria oppure un matching di cardinalità maggiore: non è necessario disegnare la rete ausiliaria,
ma se preferite disegnarla va bene.
3.1. Sia quindi X la classe della bipartizione che contiene il vertice c. Dire quindi se G ammette un matching
X-completo e in caso contrario fornire un insieme che viola la condizione di Hall. NGR
Svolgimento Il matching dato è di cardinalità massima. Infatti, se costruiamo la rete con un nodo sorgente
s ed un nodo destinazione t come di consueto, possiamo osservare che il nodo t non è raggiungibile tramite
cammini aumentanti da s. Il certificato di ottimalità di tale matching è dato dal taglio (S, S) con S =
{s, b, c, e, h, l, } e S = {a, d, f, g, i, m, t} di capacità 4.
Infine, G non ammette un matching X-completo, e l’insieme di vertici Q ⊆ X che viola la condizione di
Hall è Q = {b, c, e}, infatti Γ(Q) = {h, l}, da cui |Γ(Q)| < |Q| = 3.
4. Si vogliono organizzare i turni degli infermieri in un ospedale. Ogni infermiere lavora 5 giorni consecutivi,
indipendentemente da come sono collocati all’interno della settimana, e poi ha diritto a due giorni consecu-
tivi di riposo. Le esigenze di servizio per i vari giorni della settimana richiedono la presenza di 17 infermieri
il lunedı̀, 13 il martedı̀, 15 il mercoledı̀, 19 il giovedı̀, 14 il venerdı̀, 16 il sabato e 11 la domenica. Formu-
lare con la programmazione lineare intera il problema di organizzare il servizio in modo tale da coprire le
esigenze di servizio e minimizzare il numero totale di infermieri da impegnare.
Svolgimento Indichiamo rispettivamente con xL il numero di infermieri che iniziano il turno il lunedı̀, con
xM il numero di infermieri che iniziano il turno il martedı̀, con xM E il numero di infermieri che iniziano
il turno il mercoledı̀, con xG il numero di infermieri che iniziano il turno il giovedı̀, con xV il numero di
infermieri che iniziano il turno il venerdı̀, con xS il numero di infermieri che iniziano il turno il sabato e con
xD il numero di infermieri che iniziano il turno la domenica .
Il problema di programmazione lineare intera che si deve risolvere per organizzare il servizio in modo tale
da coprire le esigenze di servizio e minimizzare il numero totale di infermieri da impegnare è il seguente:
min xL +xM +xM E +xG +xV +xS +xD
xL +xG +xV +xS +xD ≥ 17
xL +xM +xV +xS +xD ≥ 13
xL +xM +xM E +xS +xD ≥ 15
xL +xM +xM E +xG +xD ≥ 19
xL +xM +xM E +xG +xV ≥ 14
xM +xM E +xG +xV +xS ≥ 16
xM E +xG +xV +xS +xD ≥ 11
xi ∈ Z+ ∀i = L, M, M E, G, V, S, D
4.1. Sempre assumendo che i turni possibili siano come sopra, si assuma ora che il costo della giornata di
lavoro di ciascun infermiere sia 10 euro dal lunedı̀ al venerdı̀ e 20 euro il sabato e la domenica. Formulare
con la programmazione lineare intera il problema di coprire le esigenze di servizio minimizzando i costi.
Svolgimento
min 50xL +60xM +70xM E +70xG +70xV +70xS +60xD
xL +xG +xV +xS +xD ≥ 17
xL +xM +xV +xS +xD ≥ 13
xL +xM +xM E +xS +xD ≥ 15
xL +xM +xM E +xG +xD ≥ 19
xL +xM +xM E +xG +xV ≥ 14
xM +xM E +xG +xV +xS ≥ 16
xM E +xG +xV +xS +xD ≥ 11
xi ∈ Z+ ∀i = L, M, M E, G, V, S, D
5. In quanti modi diversi 7 buste possono esssere assegnate a 7 persone, se ognuna di esse riceve esattamente
una busta NGR Soluzione 7!
5.1. In quanti modi diversi 7 buste identiche possono essere assegnate a 7 persone, se non è richiesto che
13!
ogni persona riceva una busta? NGR Soluzione C(n + k − 1, k − 1) = C(13, 6) = 6!7!
6. 16 Giocatori di tennis decidono di giocare un doppio. Qual è il di numero di modi
diversi in cui si possono
formare le 8 coppie? NGR Soluzione La prima coppia può essere scelta in 16 2 modi diversi, la seconda
coppia in 14 16
14 2
2 e cosı̀ via. Pertanto la soluzione è 2 · 2 · ... · 2 .
6.1. Una volta formate le
8 coppie, quante distinte partite (coppia contro coppia) si possono giocare? NGR
Soluzione C(8, 2) = 82 = 2!6!8!
.
7. Individuare un flusso s − t di valore massimo per la rete disegnata sulla lavagna, utilizzando l’algoritmo dei
cammini aumentanti partendo dal flusso iniziale dato e certificane l’ottimalità. Per illustrare lo svolgimento
dell’algoritmo, è sufficiente indicare tutti i cammini aumentanti scelti con l’indicazione per ogni arco di
quanto è aumentato o diminuito il valore del flusso. Non è richiesto di disegnare la rete.
Dire quindi se il valore del massimo flusso aumenta se la capacità dell’arco (s1 , s2 ) aumenta di 10 unità. Per
rispondere, riportare un nuovo cammino aumentante, oppure un certificato di ottimalità.
Svolgimento: Aggiungiamo i due nodi ausiliari s e t e gli archi (s, s1,),(s, s2,),(t1, t),(t2, t), tutti di capacità
infinita.
Come primo cammino aumentante possiamo utilizzare s − s1 − a − d − t1 − t, in cui aumentiamo il flusso
di due unità su ciascun arco del cammino.
Come secondo cammino aumentante possiamo utilizzare s − s2 − b − e − t2 − t, in cui aumentiamo il flusso
di quattro unità su ciascun arco del cammino.
Come terzo cammino aumentante possiamo utilizzare s − s1 − c − e − t2 − t, in cui aumentiamo il flusso
di un’unità su ciascun arco del cammino.
Come quarto cammino aumentante possiamo utilizzare s − s1 − c − a − d − t1 − t, in cui aumentiamo il
flusso di un’unità sugli archi (s, s1 ), (s1 , c), (a, d) (d, t1 ) e (t1 , t), mentre diminuiamo il flusso di un’unità
sull’ archo (a, c).
Infine, come ultimo cammino aumentante possiamo utilizzare s − s1 − c − e − d − t1 − t, in cui aumentiamo
il flusso di un’unità sugli archi (s, s1 ), (s1 , c), (c, e) (d, t1 ) e (t1 , t), mentre diminuiamo il flusso di un’unità
sull’ archo (d, e).
Il vettore di fusso che otteniamo ha valore pari a 12 ed è massimo. L’ottimalità è certificata dal taglio
T = {s, s1 , s2 , c}, T = {a, b, d, e, t1 , t2 , t}.
Se la capacità dell’arco (s1 , s2 ) aumenta di 10 unità il valore del massimo flusso non cambia come certificato
dal taglio T = {s, s1 , s2 , b, c, e}, S = {a, d, t1 , t2 , t}.