Sei sulla pagina 1di 16

1.

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 À.

1.4 Problemi NP-completi


Il concetto di problema completo in una determinata classe rispetto ad una certa riducibilità
è stato introdotto nella Definizione ??. Possiamo quindi definire un problema P ∈ NP come
NP-completo se P è completo in NP rispetto alla Karp-riducibilità polinomiale, vale a dire che
p
P è NP-completo se, per ogni P1 ∈ NP, P1 ≤m P.
p
La relazione P1 ≤m P fa sı̀ che saper risolvere P in tempo polinomiale comporti saper
risolvere in tempo polinomiale anche P1 . Infatti, sia A un algoritmo polinomiale che decide
P: allora, dato che per ipotesi deve esistere una Karp-riduzione polinomiale R da P1 a P, ogni
istanza x di P1 può essere decisa trasformandola in tempo polinomiale, mediante R, in una
istanza R(x) di P ed applicando quindi A a tale istanza.
Inoltre, la Karp-riducibilità polinomiale presenta l’ulteriore proprietà che la classe NP, cosı̀
come le classi P e PSPACE, è chiusa rispetto ad essa (vedi Esercizio ??). Da ciò deriva che, dati
p
due problemi P1 e P2 , se P1 è NP-completo e P2 ≤m P1 , allora P2 ∈ NP.
I problemi NP-completi possono svolgere un ruolo importante nell’ambito della determi-
nazione della verità o della falsità della relazione P = NP: infatti, dato che ogni problema
in NP è per definizione riducibile ad un problema NP-completo, la possibilità di risolvere in
tempo polinomiale un problema NP-completo comporterebbe che P = NP.
Cosı̀ come già osservato per la classe P, il metodo più naturale per mostrare l’NP-comple-
tezza di un problema di decisione P è quello di trovare una Karp riduzione polinomiale da
qualche altro problema P1 che già si sa essere NP-completo. Infatti, dato che per ogni P2 ∈ NP
p p
si ha per definizione che P2 ≤m P1 , mostrare che P1 ≤m P comporta, per la transitività della
p
Karp-riducibilità polinomiale (vedi Esercizio ??), che P2 ≤m P, e quindi che P è NP-completo.
Chiaramente, come già evidenziato nella Sezione 1.1 per la P-completezza, questo proces-
so richiede un problema NP-completo iniziale, la cui completezza deve evidentemente essere
dimostrata mediante una qualche tecnica di tipo diverso.
L’importanza del teorema di Cook, presentato sotto, sta proprio nel fatto che tale teorema
mostra che ogni problema in NP è polinomialmente Karp riducibile al problema S ODDISFA -
CIBILIT À.

Teorema 1.5 (Cook) Il problema S ODDISFACIBILIT À è NP–completo (rispetto alla Karp-ridu-


cibilità polinomiale).

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

input X : insieme di variabili booleane, (c1 , . . . , cn ): insieme di clausole su V ;


output boolean;
begin
guess una assegnazione f : X #→{TRUE,FALSE};
for each clausola ci ∈ F do
if non esiste alcun ti,j ∈ ci soddisfatto da f
then return NO;
return VERO
end.
Algoritmo 1.2: Algoritmo non deterministico per S ODDISFACIBILIT À.

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:

1. M ha un solo nastro semi-infinito;

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

di transizione è definita nel modo seguente:


!
" (q, a) se (q, a) è definita
(q, a) =
{(q, a, i)} altrimenti.

La macchina di Turing M" ha lo stesso comportamento di M eccetto che ad ogni com-


putazione massimale di M corrisponde una computazione di M" che cicla indefinitamente
sulla stessa configurazione. Quindi, ad ogni computazione accettante di M corrisponde una
computazione di M" che cicla su una configurazione di accettazione.
Ricordiamo inoltre che, dato che ogni computazione accettante ha lunghezza al più p(n),
non più di p(n) + 1 celle del nastro sono coinvolte nella computazione stessa.
Inoltre, per ogni coppia (qi , aj ) con qi ∈ Q e aj ∈ ¯ , sia Di,j = (s0 , s1 , . . . , sr ) una
qualunque enumerazione degli elementi di M! (qi , aj ) e sia di,j =| Di,j |.
Ogni computazione eseguita da M" , in presenza di una specifica guess, su input x può
essere rappresentata, cosı̀ come nella dimostrazione del Lemma 1.5, mediante un tableau T di
dimensione (p(n)+1)×(p(n)+1), i cui elementi contengono coppie in ¯ ×(Q ∪{⊥}), con ⊥*∈
Q. Tale tableau deve soddisfare alcune proprietà: anzitutto, ogni riga deve rappresentare una
configurazione lecita di M" ; inoltre, la prima riga deve rappresentare la configurazione iniziale
con x sulle prime n celle del nastro; infine, ogni riga deve rappresentare una configurazione
derivata dalla configurazione rappresentata nella riga precedente mediante l’applicazione della
funzione di transizione di M" . Si osservi poi che, per quanto detto, la condizione x ∈ L è vera
se e solo se esiste una computazione rappresentata da un tableau la cui ultima riga descrive una
configurazione di accettazione.
La formula che deriviamo rappresenta in modo formale le condizioni che devono essere
verificate affinché un tableau rappresenti una computazione di accettazione di x, e si basa sui
seguenti predicati, rappresentati nella formula da variabili booleane:
k (0 ≤ i ≤ p(n), 0 ≤ j ≤ p(n), 0 ≤ k ≤ m), definita come S k se e solo se il secondo
1. Si,j i,j
componente del contenuto di T [i, j] è ⊥, se k =| Q |, o qk , se k <| Q |.
k (0 ≤ i ≤ p(n), 0 ≤ j ≤ p(n), 0 ≤ k ≤| |), definita come C k se e solo se il primo
2. Ci,j i,j
componente del contenuto di T [i, j] è b̄, se k = 0, o ak , se k > 0.

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.

La formula è la congiunzione di 4 diverse formule, = M ∧ I ∧ A ∧ T , che codificano


le proprietà, sopra illustrate, che devono essere verificate da un tableau che rappresenti una
computazione di accettazione. In particolare:

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

quella rappresentata dalla riga precedente applicando la funzione di transizione di M.


Vediamo ora più in dettaglio come le varie sottoformule di sopra introdotte sono definite.
M M M1 M2 M3
1. i è la congiunzione di tre formule i = i ∧ i ∧ i . Dove:
(a) M1 specifica che ogni cella T [i, j] deve rappresentare uno ed un solo valore come
i
primo componente.Ciò viene$ottenuto esprimendo tale formula come congiunzio-
" # M 11
ne Mi
1 =
j
M 12 di coppie di sottoformule, in cui:
i,j ∧ i,j
M 11
% k
- i,j = k Ci,j specifica che T [i, j] deve rappresentare almeno un valore
come primo componente;
" # $
- M i,j
12 = h k
h#=k Ci,j ∨ Ci,j specifica che la cella T [i, j] deve rappresentare al
più un valore come primo componente.
(b) M 2 specifica che ogni cella T [i, j] deve rappresentare uno ed un solo valore come
i
secondo componente. Ciò viene$ottenuto esprimendo tale formula come congiun-
" # M 21
zione M i
2 =
j i,j ∧ i,j
M 22 di due sottoformule, in cui:

%
- 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) .

Chiaramente, I è in CNF (in effetti è composta da tutte clausole comprendenti un


unico termine), ha lunghezza O(p(n) log n) ed è derivabile in tempo O(p(n) log n).
3. A è la disgiunzione di | F | formule booleane, ognuna delle quali specifica la condizione

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

Anche A è chiaramente in CNF (in particolare, è composta da un’unica clausola), ha


lunghezza O(p(n) log n) ed è derivabile in tempo O(p(n) log n).
"
4. N = i N N
i , dove i specifica che l’i-esimo passo di computazione corrisponde alla
scelta di una ed una sola tra le mosse possibili.
Si ha quindi che N N1 N2
i = i ∧ i , in cui:
%
- N i
1 = k
k Mi specifica che l’i-esimo passo di computazione corrisponde alla scelta
di almeno una tra le mosse possibili;
" # $
- N i
2 = h
h#=k Mi ∨ Mi
k specifica che l’i-esimo passo di computazione corri-

sponde alla scelta di al più una tra le mosse possibili.


Anche N è in CNF, ha lunghezza O(p(n) log n) ed è derivabile in tempo O(p(n) log n).
T
"
5. = i Ti , dove Ti specifica le condizioni affinché la riga i-esima di T rappresenti
una configurazione di M" derivata, attraverso l’applicazione della funzione di transizione
, dalla configurazione rappresentata alla riga (i − 1)-esima. A sua volta, ogni formula

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

- la testina non è posizionata sulle celle j −1, j o j +1 dell’i −1-esima configurazione:


in tal caso, il contenuto della j-esima cella rimane invariato nell’i-esima configura-
zione, e la testina non viene posizionata su tale cella. Questa condizione viene
espressa, per ogni carattere ar ∈#¯ che può comparire come secondo $componente
m
in T [i, j−1] dalla implicazione Si−1,j−1 m
∧ Si−1,j m
∧ Si−1,j+1 r
∧ Ci−1,j r .
=⇒ Ci,j
Ciò dà luogo alla seguente definizione di Ti,j,s,t,k
0 :
&# $
T0 m m m r r
i,j,s,t,k = Si−1,j−1 ∨ Si−1,j ∨ Si−1,j+1 ∨ Ci−1,j ∨ Ci,j
r
- 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 $
elemen-
s
to di M! (qs , at ), e sia mq = d, allora si ha Si−1,j−1 t
∧ Ci−1,j−1 ∧ Mik =⇒
# $
l ∧C p T0
Si,j i,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

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.

Una volta individuato, mediante il teorema di Cook, un primo problema NP-completo


è possibile ora fare riferimento alla tecnica standard per provare che un problema P è NP-
completo. Tale tecnica, riassumiamo, è basata su due passi:

1. dimostrare che P ∈ NP;


p
2. dato un problema P " NP-completo, mostrare che P " ≤m P, fornendo una procedura
che, in tempo polinomiale, trasforma ogni istanza di P " in una istanza equivalente di P.

25
Capitolo 1 – Trattabilità ed intrattabilità

Come primo esempio di dimostrazione “standard” di NP-completezza, mostriamo che il pro-


blema 3-S ODDISFACIBILIT À, ottenuto da S ODDISFACIBILIT À considerando nella sua defini-
zione soltanto clausole aventi 3 termini, è NP-completo.

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?

Teorema 1.6 Il problema 3-S ODDISFACIBILIT À è NP-completo.


Dimostrazione. Mostriamo inizialmente che 3-S ODDISFACIBILIT À è in NP: infatti, data
F, una assegnazione f : X #→ {VERO , FALSO } è chiaramente un certificato di lunghezza
polinomiale verificabile in tempo polinomiale.
p
Al fine di provare che 3-S ODDISFACIBILIT À≤m S ODDISFACIBILIT À mostriamo dapprima
una possibile riduzione da istanze di S ODDISFACIBILIT À ad istanze di 3-S ODDISFACIBILIT À.
Consideriamo un’istanza generica (X , C ) di 3-S ODDISFACIBILIT À, dove X = {x1 , x2 , . . . ,
xn } è un insieme di variabili booleane e C = {c1 , c2 , . . . , cm } è un insieme di clausole su X .
Da (X , C ) otterremo una istanza (X " , C " ) di 3-S ODDISFACIBILIT À in cui da ogni clausola
ci ∈ C vengono derivati un insieme di clausole a tre termini Ci" definite su X e su un insieme di
variabili Xi" tali che X ∩ Xi = ∅: di conseguenza, si avrà che l’istanza di 3-S ODDISFACIBILIT À
risultante avrà X " = X ∪ (∪m " " m
i=1 Xi ) e C = ∪i=1 Ci .
"

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.

C OPERTURA CON N ODI


I STANZA : Grafo G = (V , E), intero K > 0
P REDICATO : Esiste un sottoinsieme V " ⊆ V tale che | V " |≤ K e ∀(u, v) ∈ E u ∈ V " o
v ∈ V "?

Teorema 1.7 Il problema 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:

• ad ogni variabile xi ∈ X sono associati due nodi xi , x i ∈ V ;

• ad ogni clausola cj ∈ C sono associati tre nodi cj1 , cj2 , cj3 ∈ V .

Per quanto riguarda l’insieme E degli archi di G (vedi Figura 1.8):

• esiste un arco (xi , x i ) ∈ E per ogni xi ∈ X ;

• 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 .

Si osservi che | V |= 2 | X | + 3 | C | e che | E |=| X | + 6 | C |, e che la trasformazione può


essere effettuata in tempo polinomiale. Poniamo inoltre K =| X | + 2 | C |. Ad una prima
analisi, si può verificare che non esistono coperture di nodi su G di taglia inferiore a K : infatti,
per ognuno degli | X | archi del tipo (xi , x i ) almeno uno tra i due nodi estremi dovrà essere
inserito in una copertura, mentre per ognuna delle | C | componenti cj1 , cj2 , cj3 almeno due dei
tre nodi devono a loro volta entrare a far parte della copertura stessa.
Mostriamo ora che se (X , C ) è soddisfacibile allora esiste una copertura V " di taglia K su
G. Sia f una assegnazione che soddisfa (X , C ): allora, per ogni variabile xi , se f (xi ) = VERO
inseriamo in V " il nodo xi , altrimenti inseriamo il nodo x i . Inoltre, per ogni clausola cj =
{tj1 , tj2 , tj3 }, sia tjs ∈ cj un termine, che deve necessariamente esistere, tale che f (tjs ) = VERO :
inseriamo allora in V " i due nodi {cjr | r *= s}. È immediato verificare che tale insieme di K
nodi rappresenta effettivamente una copertura di nodi di G.
Per quanto riguarda l’implicazione inversa, sia V " una copertura dei nodi di G con | V " |≤
K . Per quanto osservato sopra, dovrà essere necessariamente | V " |= K : in effetti, V " dovrà
necessariamente includere 1 nodo per ogni arco del tipo (xi , x i ) e due nodi per ogni componente
cj1 , cj2 , cj3 . Deriviamo una assegnazione f che soddisfa (X , C ) nel modo seguente: per ogni xi ∈
X , f (xi ) = VERO se xi ∈ V " , altrimenti f (xi ) = FALSO . Tale assegnazione soddisferà (X , C ) in
quanto, per ogni clausola cj , la corrispondente componente cj1 , cj2 , cj3 in G avrà esattamente un
nodo cjs ∈ V − V " : tale nodo necessariamente sarà collegato ad un nodo associato al termine
tjs , appartenente necessariamente a V " . Dato che è stato posto f (tjs ) = VERO , ne deriva che cj è
soddisfatta. !

Introduciamo ora il seguente problema I NSIEME I NDIPENDENTE.

28
1.4 Problemi NP-completi

Variabile xi =⇒ xi xi

Clausola xi ∨ xj ∨ xk =⇒ xi xj

xk

F IGURA 1.8 Riduzione da 3-S ODDISFACIBILIT À a C OPERTURA CON N ODI.

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 ?

Teorema 1.8 Il problema I NSIEME I NDIPENDENTE è NP-completo.

Dimostrazione. Il risultato deriva immediatamente, osservando che, dato un grafo G =


(V , E), un sottoinsieme di nodi V " ⊆ V è un vertex cover se e solo se V − V " è un insie-
me indipendente. Infatti, dal fatto che V " è un vertex cover, deriva che non esiste alcun arco
(u, v) ∈ E con u, v ∈ V − V " , da cui consegue che V − V " . Allo stesso modo, se V " è un
insieme indipendente, allora V − V " è un vertex cover.
È quindi possibile risolvere una istanza %G = (V , E), K & di C OPERTURA CON N ODI
semplicemente trasformandola in una istanza %G = (V , E), | V | −K & di I NSIEME I NDIPEN -
DENTE. !

Mostriamo ora che il problema C RICCA è NP-completo.

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?

Teorema 1.9 Il problema C RICCA è NP-completo.

29
Capitolo 1 – Trattabilità ed intrattabilità

Dimostrazione. È sufficiente osservare che, dato un grafo G = (V , E), un sottoinsieme V " ⊆


V di nodi è un insieme indipendente se e solo se forma un sottografo completo nel grafo
complementare Gc = (V , Ec ), tale che (u, v) ∈ Ec se e solo se (u, v) *∈ E. Per risolvere una
qualunque istanza %G = (V , E), K & di I NSIEME I NDIPENDENTE è quindi sufficiente risolvere
l’istanza sottografo completo nel grafo complementare Gc = (V , Ec ), tale che (u, v) ∈ Ec se e
solo se (u, v) *∈ E. Per risolvere una qualunque istanza %Gc = (V , Ec ), K & di C RICCA .
!

Introduciamo ora il seguente problema.

C OPERTURA CON I NSIEMI


I STANZA : Insieme S, collezione C = {s1 , s2 , . . . , sn } di sottoinsiemi di S, intero K > 0.
'
P REDICATO : Esiste un sottoinsieme C " di C che copre S, vale a dire tale che si ∈C ! = S,
avente cardinalità | C " |≤ K ?

Esercizio 1.7 Dimostrare che il problema C OPERTURA CON I NSIEMI è NP–completo.


[Suggerimento: Definire una Karp-riduzione polinomiale da C OPERTURA CON N ODI.]

Infine, definiamo il seguente problema.

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?

Teorema 1.10 Il problema C ICLO H AMILTONIANO è NP-completo.

Dimostrazione. Il problema è chiaramente in NP, in quanto, data una sequenza di nodi, la


verifica che essi formino un ciclo hamiltoniano può essere effettuata in tempo polinomiale.
Per mostrare la NP-hardness di C ICLO H AMILTONIANO utilizziamo una Karp-riduzione
polinomiale da C OPERTURA CON N ODI: tale riduzione, data una istanza %G, K & di C OPER -
TURA CON N ODI , deriva da essa una istanza G " di C ICLO H AMILTONIANO tale che G " ha
un circuito hamiltoniano se e solo se esiste un vertex cover di dimensione al più K su G.
Il grafo G " è derivato nel modo descritto di seguito.

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.

(u, v, 1) (u, v, 2) (u, v, 3) (u, v, 4) (u, v, 5) (u, v, 6)

(v, u, 1) (v, u, 2) (v, u, 3) (v, u, 4) (v, u, 5) (v, u, 6)


F IGURA 1.9 Gadget corrispondente ad un arco

2. In G " sono inoltre presenti K nodi 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

Il grafo G " può chiaramente essere costruito in tempo polinomiale a partire da G.

u, v in vertex cover

v in vertex cover u in vertex cover


F IGURA 1.10 Possibili cammini hamiltoniani in un gadget

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.

Osserviamo ora che in generale, dato un problema P, se restringiamo il problema stesso


ad un sottoinsieme delle possibili istanze otteniamo un suo sottoproblema P " (come nel caso di
3-S ODDISFACIBILIT À rispetto a S ODDISFACIBILIT À) che certamente non è più difficile da
risolvere rispetto a P: in effetti vale banalmente la relazione P " ≤r P per qualunque riducibilità
≤r , in quanto ogni istanza di P " è istanza di P.
È interessante però in tale situazione chiedersi se la restrizione introdotta sull’insieme del-
le istanze comporta una maggiore facilità di risoluzione del problema. Ci chiediamo cioè se
P ≤r P " : se tale relazione è vera allora, almeno rispetto alla riducibilità considerata, P e P "
sono equivalenti mentre, altrimenti, P è effettivamente più difficile di P " . Ciò risulta par-
ticolarmente interessante nel caso in cui P sia NP-completo, in quanto ci chiediamo se il
sottoproblema P " considerato è ancora NP-completo o meno.
Ad esempio, nel caso di S ODDISFACIBILIT À e di 3-S ODDISFACIBILIT À abbiamo già vi-
sto che la restrizione introdotta dal considerare soltanto istanze con clausole di esattamente 3
termini non rende il problema più facile, rispetto alla Karp-riducibilità polinomiale, in quanto
p
3-S ODDISFACIBILIT À è anch’esso NP-completo e quindi si ha che S ODDISFACIBILIT À≤m 3-
S ODDISFACIBILIT À.

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.

Esistono però delle diverse restrizioni di S ODDISFACIBILIT À per le quali si ha un effet-


tivo miglioramento della relativa difficoltà di soluzione. Una di tali restrizioni è quella re-
lativa a S ODDISFACIBILIT À DI FORMULE DI H ORN: chiaramente S ODDISFACIBILIT À DI
p
FORMULE DI H ORN≤m S ODDISFACIBILIT À (e quindi S ODDISFACIBILIT À DI FORMULE DI
p
H ORN∈ NP), mentre non si ha S ODDISFACIBILIT À≤m S ODDISFACIBILIT À DI FORMULE
DI H ORN, a meno che LOGSPACE = P = NP.
Un secondo sottoproblema di S ODDISFACIBILIT À che è sostanzialmente più semplice di
esso è 2-S ODDISFACIBILIT À , vale a dire la restrizione al caso in cui ogni clausola è composta
da al più 2 termini. Anche in questo caso è possibile mostrare che 2-S ODDISFACIBILIT À ∈
P mostrando che esiste un algoritmo che risolve tale problema in tempo polinomiale (vedi
p
Teorema 1.11): ne deriva quindi che non si ha S ODDISFACIBILIT À≤m 2-S ODDISFACIBILIT À ,
a meno che P = NP.
Teorema 1.11 Il problema 2-S ODDISFACIBILIT À può essere risolto in tempo polinomiale.
Dimostrazione. Data una istanza (F, X ) di 2-S ODDISFACIBILIT À , consideriamo il grafo
orientato G(F, X ) definito nel modo seguente:
1. per ogni variabile xi ∈ X esistono due nodi ni , ni , corrispondenti ai due termini xi e x i ;
2. per ogni clausola ti ∨ tj , dove ti e tj sono termini, esistono in G i due archi < t i , tj > e
< t j , ti >.

33
Capitolo 1 – Trattabilità ed intrattabilità

I due archi rappresentano le due implicazioni logiche t i =⇒ tj e t j =⇒ ti definite dalla


necessità di soddisfare la clausola. Si osservi che una clausola è soddisfatta se e solo se per
nessuno dei due archi ad essa corrispondenti si ha che il primo nodo ha assegnato il valore
VERO mentre il secondo ha assegnato il valore FALSO .
Si può osservare facilmente (vedi Esercizio 1.10) che se per una variabile xi ∈ X esiste in G
un cammino dal nodo ni al nodo ni (o viceversa), allora la formula F non è soddisfacibile.
Consideriamo ora il caso in cui tale condizione non si verifichi per nessuna variabile in
X : è possibile verificare allora che, per costruzione, non esiste alcun nodo ti da cui è possibile
raggiungere sia un nodo tj che il nodo negato t j . Costruiamo una assegnazione di verità che
soddisfi F semplicemente scegliendo iterativamente un nodo ti cui non è stato assegnato alcun
valore, assegnando ad esso e a tutti i nodi da esso raggiungibili il valore VERO , ed assegnando ai
nodi che corrispondono alle negazioni di tali nodi il valore FALSO . Da quanto detto poc’anzi,
ciò determina una assegnazione consistente con il vincolo che, per ogni i, i nodi ti e t i devono
avere assegnati valori diversi.
Dato che, ad ogni iterazione, viene determinata l’assegnazione per almeno una coppia di
nodi, ne consegue che il procedimento termina in un tempo finito, assegnando un valore VERO
o FALSO per ogni nodo, e quindi, per costruzione del grafo, determinando una assegnazione di
verità che soddisfa F. !

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.

In generale, possiamo considerare la relazione <R di restrizione di un problema in un suo


sottoproblema, definita come P <R P " se e solo se P " è una restrizione di P, vale a dire le
sue istanze sono un sottoinsieme delle istanze di P: come si può immediatamente verificare,
tale relazione è una relazione di ordine parziale. Dato un insieme di problemi in NP, possiamo
associare ad esso un grafo orientato aciclico i cui nodi corrispondono ai problemi e si ha un arco
dal nodo u al nodo v se e solo se, detti Pu e Pv i problemi associati a u e v, si ha che Pu <R Pv
e che non esiste alcun problema Pw tale che Pu <R Pw <R Pv .
Tale grafo può allora essere decomposto in tre regioni (vedi Figura 1.12):

1. una regione “superiore”, di tutti problemi NP-completi;

2. una regione “inferiore”, di problemi in P;

3. una regione “intermedia”, di problemi per i quali non si dispone di dimostrazioni né di
NP-completezza, né di polinomialità.

34