Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
4 Problemi NP-completi
ma il suo insieme di istanze positive corrisponde alle istanze negative di S ODDISFACIBILIT À, e
viceversa.
Alla luce di quanto suesposto, verificare se una istanza (X , F) di FALSIT À è una istanza
positiva, corrispondendo a verificare se la stessa istanza è istanza negativa di S ODDISFACIBI -
LIT À, risulta essere inerentemente diverso (e probabilmente più difficile) rispetto al caso in cui
si intenda verificare se (X , F) è istanza positiva di S ODDISFACIBILIT À.
19
Capitolo 1 – Trattabilità ed intrattabilità
Dimostrazione. Il problema si può facilmente mostrare essere in NP: a tale scopo è sufficiente
considerare l’algoritmo non deterministico per S ODDISFACIBILIT À presentato come Algorit-
mo 1.2. Come è possibile verificare, l’algoritmo genera mediante una guess una assegnazione
f , di lunghezza polinomiale, per poi verificare, in tempo polinomiale, che f soddisfa F. Al-
ternativamente, S ODDISFACIBILIT À può essere dimostrato appartenere ad NP semplicemente
osservando che l’assegnazione f è un certificato di lunghezza polinomiale e verificabile in tempo
polinomiale.
Passiamo ora a mostrare, per mezzo di una tecnica di riduzione basata sul concetto di
tableau, introdotto nella dimostrazione del Teorema 1.1, che, per ogni problema P ∈ NP, è
possibile definire una Karp-riduzione polinomiale da P a S ODDISFACIBILIT À.
La dimostrazione procede nel modo seguente, in cui per semplicità di esposizione facciamo
riferimento al linguaggio L associato a P ed al linguaggio SAT associato a S ODDISFACIBILIT À.
Dato che L ∈ NP,sia M = % , b̄, Q, q0 , F , & una macchina di Turing non deterministica
che accetta ogni stringa x ∈ L con | x |= n in tempo al più p(n), dove p è un opportuno
polinomio, e sia d il grado di non determinismo di M. Sia inoltre m =| Q |. Dati M ed
x ∈ ∗ , costruiremo una formula in forma normale congiuntiva tale che è soddisfacibile
se e solo se M accetta x in tempo al più p(n), cioè se e solo se x ∈ L.
Al fine di semplificare la dimostrazione, e senza perdere in generalità, facciamo le seguenti
ipotesi relativamente ad M:
2. all’inizio, il nastro contiene la stringa in input x nelle prime n celle, mentre tutte le altre
celle contengono il simbolo b̄.
Analogamente al caso della dimostrazione del Teorema 1.1, consideriamo, senza perdita di
generalità, la macchina di Turing non deterministica M" = % ,b̄, Q, q0 , F , " &, la cui funzione
20
1.4 Problemi NP-completi
3. Mik (1 ≤ i ≤ p(n), 1 ≤ k ≤ d), definita come Mik se e solo se all’i-esimo passo della
computazione, la mossa eseguita è la k-esima nell’insieme delle mosse possibili, che sono
al più d.
21
Capitolo 1 – Trattabilità ed intrattabilità
M =
" M M
1. i i , dove i specifica le condizioni affinché la riga i-esima di T rappresenti
una configurazione di M" ;
2. I specifica che la prima riga di T deve rappresentare la configurazione iniziale di M"
con input x;
3. A specifica che l’ultima riga di T deve rappresentare una configurazione di accettazione
di M" ;
"
4. N = i N N
i , dove i specifica le condizioni affinché all’i-esimo passo di computazione
corrisponda l’esecuzione di una ed una sola tra le mosse possibili;
5. T specifica che ogni riga di T deve rappresentare una configurazione che deriva da
%
- M i,j
21 = k
k Si,j specifica che T [i, j] deve rappresentare almeno un valore come
secondo componente;
" # $
- M i,j
22 = h k
h#=k Si,j ∨ Si,j specifica che la cella T [i, j] deve rappresentare al
più un valore come secondo componente.
M3
(c) i specifica che esattamente una cella T [i, j] deve avere come secondo compo-
nente un valore diverso da m =| Q |. Ciò viene ottenuto esprimendo tale formula
come congiunzione M i
3
= M i
31
∧ Mi
32
di due sottoformule, in cui:
M 31 % m
- i = j Si,j specifica che almeno una cella T [i, j] deve avere come secondo
componente un valore diverso da m (corrispondente al simbolo ⊥);
22
1.4 Problemi NP-completi
M 32 " # m m
$
- i = j#=l Si,j ∨ Si,l specifica che al più una cella T [i, j] deve avere
come secondo componente un valore diverso da m.
Come si può vedere, M è in CNF ed ha lunghezza O(p(n)3 log n), in quanto è composta
da O(p(n)3 ) variabili booleane, ognuna identificata mediante O(log n) bit. Inoltre, la
formula è derivabile in tempo O(p(n)3 log n).
2. I è la congiunzione di due formule I = I1 ∧ I 2. Dove:
(a) I1 specifica il contenuto iniziale del nastro di M" , vale a dire i valori delle prime
componenti in tutte le celle T [0, j]. Se x = ai0 ai1 . . . ain−1 è la stringa in input,
i0 i1 in−1
allora si avrà I 1 = C0,0 ∧ C0,1 ∧ . . . ∧ C0,n−1 0 ∧ . . . ∧ C0
∧ C0,n 0,p(n) .
(b) I 2 specifica, attraverso i valori delle seconde componenti in tutte le celle T [0, j],
che inizialmente la macchina di Turing M" si trova nello stato q0 e la sua testina è
posizionata sulla prima cella del nastro. Si ha quindi I 2 = S0,0
0 ∧S m ∧. . .∧S m
0,1 0,p(n) .
che M si trovi #%nello $stato qk ∈ F , con la testina su una delle p(n) + 1 celle di nastro:
A =
% k .
qk ∈F S
j 0,j
23
Capitolo 1 – Trattabilità ed intrattabilità
T
"
i ha la struttura Ti = j Ti,j , dove Ti,j specifica che il contenuto delle cella T [i, j] del
tableau deve poter derivare, per mezzo della funzione di transizione, dal contenuto delle
celle T [i − 1, j − 1], T [i − 1, j], T [i − 1, j + 1].6
% % %
In particolare, poniamo Ti,j = qs ∈Q at ∈ ¯ 1≤k≤ds,t Ti,j,s,t,k , in cui Ti,j,s,t,k espri-
me la condizione che il contenuto della cella T [i, j] derivi dall’applicazione, al passo
precedente, della k-esima transizione in M! (qs , at ).
Per definire la formula T distinguiamo i casi seguenti:
i,j,s,t,k
Altrimenti, nel caso in cui mq *= d, nella formula non compare alcuna espressione
per Ti,j,s,t,k .
- la testina è posizionata sulla cella j + 1 dell’i − 1-esima configurazione: in tal ca-
so, il contenuto della j-esima cella rimane invariato nell’i-esima configurazione,
ma la testina può essere posizionata su tale cella.# Sia (ql , ap , mq ) il k-esimo
$ ele-
s
mento di M! (qs , at ) e sia mq = s, allora si ha Si−1,j+1 t
∧ Ci−1,j+1 ∧ Mik =⇒
# $
l p T 0
Si,j ∧ Ci,j+1 . Da ciò deriva la definizione di i,j,s,t,k come
# $
T0 s t k l p
i,j,s,t,k = Si−1,j+1 ∨ Ci−1,j+1 ∨ Mi ∨ Si,j ∧ Ci,j+1
6
In particolare, se j = 0 la formula Ti,0 si riferirà alle sole celle T [i − 1, 0], T [i − 1, 1], mentre se j = p(n) la
formula Ti,p(n) si riferirà alle sole celle T [i − 1, p(n) − 1], T [i − 1, p(n)].
24
1.4 Problemi NP-completi
Altrimenti, nel caso in cui mq *= s, nella formula non compare alcuna espressione
per Ti,j,s,t,k .
- la testina è posizionata sulla cella j dell’i−1-esima configurazione: in tal caso, il con-
tenuto della j-esima cella può cambiare nell’i-esima configurazione.
# Sia (ql , ap , mq$)
s
il k-esimo elemento di M! (qs , at ) e sia mq = i, allora si ha Si−1,j t
∧ Ci−1,j ∧ Mik
# $
l p T 0
=⇒ Si,j ∧ Ci,j . Da ciò deriva la definizione di i,j,s,t,k come
# $
T0 s t k l p
i,j,s,t,k = Si−1,j ∨ Ci−1,j ∨ Mi ∨ Si,j ∧ Ci,j
Altrimenti, nel caso in cui mq *= i, nella formula non compare alcuna espressione
per Ti,j,s,t,k .
Si osservi che ogni formula Ti,j è composta da una quantità costante di predicati C ed
S, ognuno dei quali ha dimensione O(log n). Pur non essendo in CNF, ogni formula
può poi essere facilmente trasformata in una formula ˆ Ti,j in CNF equivalente, anch’essa
composta da O(1) predicati, e quindi anch’essa di dimensione O(log n).
Da ciò deriva che l’intera formula T ha dimensione O(p(n)2 log n) ed è derivabile in
tempo O(p(n)2 log n).
Se si considera ora l’intera formula , è possibile verificare che la componente dominante nella
sua dimensione è quella relativa alla dimensione di M , dal che risulta che la dimensione di è
O(p(n)3 log n), e l’intera formula può essere derivata in tempo O(p(n)3 log n).
Lasciamo per esercizio (vedi Esercizio 1.7) la semplice verifica che la formula è soddisfa-
cibile se e solo se esiste una computazione accettante di M. !
Esercizio 1.6 Verificare che, nella dimostrazione del teorema precedente, la formula è soddisfaci-
bile, dato un certo input x, se e solo se esiste una computazione accettante di M a partire da tale
input.
25
Capitolo 1 – Trattabilità ed intrattabilità
3-S ODDISFACIBILIT À
I STANZA : Una formula CNF F su un insieme X di variabili booleane, con ogni clausola
composta da esattamente 3 termini.
P REDICATO : Esiste una assegnazione f : X #→ {VERO , FALSO } che soddisfa F?
Il numero e la struttura delle clausole in Ci" dipenderanno dal numero | ci | di termini nella
clausola ci nel modo seguente:
1. | ci |= 1. Sia ci = {z}: allora, Xi" = {yi1 , yi2 } e Ci" = {{z1 , yi1 , yi2 }, {z1 , y1i , yi2 },
{z1 , yi1 , y2i }, {z1 , y 1i , y 2i }}. Si noti che una assegnazione che soddisfa ci (che cioè rende
vero il termine z), comunque esteso a piacere a yi1 , yi2 soddisfa anche Ci" ; inoltre, una
assegnazione che soddisfa Ci" dovrà necessariamente rendere z vero (altrimenti una delle
quattro clausole non può essere soddisfatta) e, quindi, soddisfa anche ci . Da ciò possiamo
concludere che l’insieme di clausole in Ci" è soddisfatto da tutti e soli gli assegnamenti
(comunque estesi) tali che z = VERO , gli assegnamenti cioè che soddisfano ci .
2. | ci |= 2. Sia ci = {z, v}: allora, Xi" = {yi1 } e Ci" = {{z, v, yi1 }, {z, v, y 1i }}. Si noti che
una assegnazione che soddisfa ci (che cioè rende vero uno almeno tra i termini z e v),
comunque esteso a piacere a yi1 soddisfa anche Ci" ; inoltre, una assegnazione che soddisfa
Ci" dovrà necessariamente rendere almeno un termine tra z e v vero (altrimenti una delle
due clausole non può essere soddisfatta) e, quindi, soddisfa anche ci . In questo caso, le
due clausole in Ci" sono soddisfatte da tutti e soli gli assegnamenti (comunque estesi) tali
che z = VERO o v = FALSO , e quindi da tutti e soli gli assegnamenti che soddisfano ci .
26
1.4 Problemi NP-completi
3. | ci |= 3. Sia ci = {z, v, w}: dato che in questo caso ci ha esattamente i tre termi-
ni richiesti nella definizione di 3-S ODDISFACIBILIT À, Xi" = ∅ e Ci" = {{z, v, w}}.
Chiaramente, Ci" è soddisfatta da tutti e soli gli assegnamenti che soddisfano ci .
j
4. | ci |= k ≥ 4. Sia ci = {z1 , z2 , . . . , zk }: allora avremo Xi" = {yi , 1 ≤ j ≤ k − 3} e
Ci" = {{z1 , z2 , yi1 }, {y1i , z3 , yi2 }, {y2i , z4 , yi2 }, . . . , {yk−4
i , zk−2 , yik−3 }, {y k−3
i , zk−1 , zk }}.
In questo caso, si noti che una assegnazione f che soddisfa ci dovrà rendere almeno un
termine in {zi . . . , zk } vero: sia zr il primo di tali termini (siano cioè tutti i termini zj
con j < i posti a falso dall’assegnazione), allora, l’estensione f " di f in cui yi1 = VERO ,
yi2 = VERO , . . . , yir−2 = VERO , yir−1 = VERO , . . . , yik−3 = FALSO soddisfa l’insieme
di clausole Ci" . Inoltre, si osservi che una assegnazione f " che soddisfa Ci" dovrà neces-
sariamente porre a vero almeno un termine zr (altrimenti una delle clausole non viene
j
soddisfatta, indipendentemente dai valori assegnati alle variabili yi ): evidentemente, tale
assegnazione soddisferà anche ci .
Da quanto detto, si può concludere che (1) se esiste una assegnazione f su X che soddisfa C ,
esso può essere esteso, come illustrato sopra, ad ottenere una assegnazione f " su X " che soddisfa
C " e (2) se esiste una assegnazione f " su X " che soddisfa C " , la stessa assegnazione soddisfa anche
C.
Da ciò evidentemente deriva che C è soddisfacibile se e solo se lo è C " . Si osservi infine
che la trasformazione può chiaramente essere effettuata in tempo polinomiale, e precisamente
O(nm). !
Come altro esempio di dimostrazione di NP-completezza, mostriamo ora che il seguente pro-
blema C OPERTURA CON N ODI è NP-completo.
Dimostrazione. Mostriamo che C OPERTURA CON N ODI appartiene ad NP: infatti, dato
un sottoinsieme V " ⊆ V tale che | V " |≤ K e ∀(u, v) ∈ E u ∈ V " o v ∈ V " è chiaramente un
certificato di lunghezza polinomiale, verificabile in tempo polinomiale.
Per provare la completezza di C OPERTURA CON N ODI in NP, mostriamo che 3-S ODDI -
p
SFACIBILIT ˲m C OPERTURA CON N ODI . Sia data una istanza generica (X , C ) di 3-S ODDI -
SFACIBILIT À: a partire da (X , C ) deriviamo un grafo G = (V , E) ed un intero K > 0 tali che
27
Capitolo 1 – Trattabilità ed intrattabilità
G ha una copertura con nodi di dimensione non superiore a K se e solo se l’insieme di clausole
C è soddisfacibile.
L’insieme V dei nodi di G è definito come segue:
• per ogni clausola cj = {tj1 , tj2 , tj3 } ∈ C , introduciamo tre archi (cj1 , cj2 ), (cj2 , cj3 ), (cj3 , cj1 ).
Inoltre, introduciamo un arco per ogni termine tjs (s = 1, 2, 3) in cj nel modo seguente:
sia tjs = xk ∈ X : introduciamo allora un arco (cjs , xk ) se tjs = xk o un arco (cjs , x k ) se
tjs = x k .
28
1.4 Problemi NP-completi
Variabile xi =⇒ xi xi
Clausola xi ∨ xj ∨ xk =⇒ xi xj
xk
I NSIEME I NDIPENDENTE
I STANZA : Grafo G = (V , E), K > 0 intero
P REDICATO : Esiste un insieme indipendente di taglia ≥ K , cioè un U ⊆ V tale che
| U |≥ K e * ∃(u, v) ∈ E con u ∈ U ∧ v ∈ U ?
C RICCA
I STANZA : Grafo G = (V , E), intero K > 0.
P REDICATO : Esiste V " ⊆ V con | V " |≥ K e tale che per ogni coppia u, v ∈ V " (u, v) ∈
E?
29
Capitolo 1 – Trattabilità ed intrattabilità
C ICLO H AMILTONIANO
I STANZA : Grafo G = (V , E).
P REDICATO : Esiste un ciclo hamiltoniano in G, vale a dire una sequenza di n =| V | archi
(vi1 , vi2 ), (vi2 , vi3 ), (vi3 , vi4 ), . . . , (vin , vi1 ) che attraversa ogni nodo una ed una sola volta?
30
1.4 Problemi NP-completi
1. Per ogni arco (u, v) in G viene definito un sottografo (gadget) guv composto da 12 nodi e
14 archi (si veda la Figura 1.9). I gadget relativi a tutti gli archi di G saranno collegati tra
loro utilizzando, per ogni gadget, soltanto i collegamenti tratteggiati in figura, e quindi
archi incidenti sui soli nodi (u, v, 1), (u, v, 6), (v, u, 1),(v, u, 6). Come si può vedere in
Figura 1.10, un gadget può essere attraversato da tre soli possibili cammini hamiltoniani,
che corrisponderanno ai casi in cui soltanto u, soltanto v o sia u che v sono presenti nel
vertex cover.
3. Per ogni nodo u in G, i gadget corrispondenti a tutti gli archi incidenti su u sono collegati
in sequenza. In particolare, siano (u, vi1 ), (u, vi2 ), . . . , (u, vik ) gli archi incidenti su u, or-
dinati in modo arbitrario: i relativi gadget sono collegati dagli archi ((u, vi1 , 6)(u, vi2 , 1)),
((u, vi2 , 6)(u, vi3 , 1)), . . . ,((u, vik−1 , 6)(u, vik , 1)). Inoltre, i nodi (u, vi1 , 1) e (u, vik , 6)
sono collegati a tutti i K nodi cover
u, v in vertex cover
Qualunque ciclo hamiltoniano in G " sarà necessariamente diviso in K tratti, ognuno dei
quali inizia e termina in un nodo cover ed è composto da una sequenza di gadget relativi a tutti
31
Capitolo 1 – Trattabilità ed intrattabilità
gli archi incidenti su uno stesso nodo. Quindi, un ciclo hamiltoniano H su G " è associato ad
un insieme di nodi VH di G: dato che ogni gadget è attraversato dal ciclo, ne consegue che ogni
arco in G è coperto dai nodi in VH , e che quindi H è un vertex cover di dimensione K .
Al contrario, se assumiamo che G abbia un vertex cover di dimensione K , possiamo facil-
mente costruire, utilizzando per ogni arco l’associazione tra presenza di nodi nel vertex cover e
cammino nel gadget relativo (mostrata in Figura 1.10), un ciclo hamiltoniano sull’intero grafo
G ". !
Si noti che nel caso del seguente problema C ICLO E ULERIANO , simile al precedente, si
può invece mostrare che C ICLO E ULERIANO ∈ P.
C ICLO E ULERIANO
I STANZA : Grafo G = (V , E).
P REDICATO : Esiste un ciclo euleriano in G, vale a dire una sequenza di m =| E | archi
(vi1 , vi2 ), (vi2 , vi3 ), (vi3 , vi4 ), . . . , (vim , vi1 ) che include ogni arco una ed una sola volta?
Esempio 1.3 Un esempio di ciclo hamiltoniano e di ciclo euleriano è mostrato in Figura 1.11.
Esercizio 1.8 Dimostrare che il problema C ICLO E ULERIANO è risolubile in tempo polinomiale.
32
1.4 Problemi NP-completi
7
8 5
3
9 6
10 2
14
15
1 13
12
16
11
17
Grafo Hamiltoniano Euleriano
F IGURA 1.11 Esempi di cicli hamiltoniano ed euleriano.
33
Capitolo 1 – Trattabilità ed intrattabilità
Esercizio 1.9 Dimostrare che, nella dimostrazione del Teorema 1.11, se esiste nel grafo G(F , X )
un cammino da ni a ni (o da ni a ni ), allora la formula F non è soddisfacibile.
3. una regione “intermedia”, di problemi per i quali non si dispone di dimostrazioni né di
NP-completezza, né di polinomialità.
34