da pag. 11 17-MAR-2015 Dir. Resp.: Roberto Napoletano

Trattabilità computazionale.
Tesi di Cobham. Tutti i modelli di calcolo introdotti per defnire la
calcolabilità in tempo polinomiale hanno al più lo stesso potere
computazionale delle MT operanti in tempo polinomiale.
Quindi defniamo trattabili i problemi che possono essere risolti in tempo
polinomiale con MT.
Motivazioni:
- la classe P è una classe "stabile", cioè invariante per diversi modelli di
calcolo.
- la forte differenza nell'andamento asintotico delle funzioni polinomiali
rispetto a quelle esponenziali. Un aumento della potenza di calcolo degli
elaboratori si rifette nel primo caso in un fattore moltiplicativo della
lunghezza delle istanze risolubili in una determinata quantità di tempo mentre
nel caso di tempi esponenziali si ha solo il benefcio di un termine additivo
(Fig. 9.1- 9.3).
Per moltissimi problemi di interesse pratico non sappiamo stabilire se sono
risolubili in tempo polinomiale. Sappiamo però che sono risolubili in tempo
polinomiale con NDMT. La mancanza di separazione tra NP ed P non ci
consente quindi di stabilire se essi siano o non siano "trattabili".
M. R. Garey/D. S. Johnson :
COMPUTER AND INTRACTABILITY
A guide to the Theory of NP-Completeness”
Freeman and Company ( 1979)
Riducibilità fra problemi decisionali
Def. Un problema P è Karp-riducibile ad un problema Q
P ≤m Q
se esiste un algoritmo R che trasforma ogni istanza x di P in una istanza y di
Q in modo che x ∈ YP ⇔ y ∈ YQ; R è chiamata una Karp-riduzione da P a Q.
Oss. 1. Se P ≤m Q ed esiste un algoritmo B per decidere Q, possiamo costruire
un algoritmo A per decidere P:
- data x ∈ I P applico R a x ed ottengo y ∈ I Q
- applico B ad y; se B ritorna SI anche A ritorna SI altrimenti ritorna NO.
La complessità di A dipende da quella di B e di R.
Oss. 2. Se P ≤m Q possiamo dedurre una relazione tra la complessità dei
problemi. Intuitivamente: comp (P) ≤ comp (Q) + comp (R).
In questo modo quando non possiamo stabilire la complessità "assoluta" di un
problema possiamo stabilire relazioni di complessità relativa.
Def. Un problema P è polinomialmente Karp-riducibile a Q
P ≤p m Q
se è Karp-riducibile e l'algoritmo R è di complessità polinomiale nella
lunghezza delle istanze.
Oss. Se P ≤pm Q
- e so risolvere in tempo polinomiale Q allora so risolvere in tempo
polinomiale anche P
- e posso dimostrare che non esiste un algoritmo polinomiale per P ne segue
che non può esistere un algoritmo polinomiale per Q.
Quando non ci sono dubbi sul tipo di riduzione invece di P ≤ pm Q scriveremo
semplicemente P ≤ Q.
Completezza
È uno strumento per indagare relazioni di inclusione fra classi di complessità.
Def. Data una classe di complessità C ed una riducibilità ≤r tra problemi,
diciamo che un problema Q ∈ C è C-completo rispetto ad ≤r se per ogni
problema P ∈ C si ha che P ≤r Q.
Def. Un problema Q ∈ NP è NP-completo se per ogni problema P ∈ NP si ha
che P ≤ pm Q.
Oss. Se si riuscisse a dimostrare che un problema NP-completo Q appartiene
alla classe P allora ogni altro problema P di NP sarebbe risolvibile in tempo
polinomiale con un algoritmo deterministico. Infatti da P ≤ pm Q, se Q fosse
risolubile in tempo polinomiale anche il problema P lo sarebbe.
• Nessuno è mai riuscito a risolvere un problema NP-completo con un
algoritmo polinomiale deterministico.
• Nessuno è mai riuscito a dimostrare un lower bound non polinomiale (es.
Ω(nlog n) per un problema di NP.
• chiunque scommetterebbe che P ≠ NP.
La classe NP
Classe dei problemi risolvibili in tempo polinomiale da un algoritmo (MT)
non deterministico. Questa classe vuole isolare la nozione di “verifcabilità”
in tempo polinomiale.
Cerchiamo problemi in NP.
Sia:
X = {x1,..., xn}
insieme di variabili booleane
T(X) = {x1,..., xn, ~x1,..., ~xn} insieme di letterali
C = l1 ∨ l2 ∨.. lni
clausola (è disgiunzione di più letterali)
F = {C1, C2, ..., Cm}
formula (è congiunzione di più clausole).
Una assegnazione di verità su X è una funzione f: X → {true, false}. Si dice
che f soddisfa una variabile xi se f(xi) = true, soddisfa ~xi se f(xi) =false,
soddisfa una clausola C se soddisfa un letterale l ∈ C, soddisfa una formula F
se soddisfa tutte le sue clausole.
SAT: Problema della soddisfacibilità di una formula booleana F in forma
normale congiuntiva (CNF).
Istanza: formula booleana F in CNF su un insieme X di variabili booleane.
Predicato: esiste un'assegnazione di verità f su X che soddisfa F?
Es.
F = {p∨q∨~r, ~p∨q∨r, ~q∨~r, ~p∨r}
F è soddisfatta da: f(p) = f(r) = true, f(q) = false.
F = {p∨q, ~p∨q, p∨~q, ~p∨~q}
non è soddisfacibile da alcuna assegnazione di verità su {p,q}.
Teorema. SAT ∈ NP.
Dim. Possiamo costruire una MTND M che risolve SAT in tempo polinomiale:
facciamo generare ad M tutte le possibili assegnazioni di verità su X (sono
in numero esponenziale ma le possiamo generare nondeterministicamente
in tempo polinomiale);
associamo ad ogni assegnazione un cammino radice-foglia dell'albero di
computazione di M;
ogni nodo dell'albero è associato alla scelta vero/falso per una variabile;
ogni cammino radice-foglia è di lunghezza polinomiale;
su ogni foglia verifchiamo in tempo polinomiale se l'assegnazione
prodotta soddisfa F.
PL{0,1}. Problema della programmazione lineare in {0,1}
Istanza: insieme di variabili Z = {z1,..., zn} con dominio in {0,1}; insieme D
di disequazioni lineari su Z.
Predicato: esiste un'assegnazione di valori alle variabili di Z che verifca tutte
le disequazioni in D?
Teorema. PL{0,1} ∈ NP
Dim. Realizziamo una macchina non deterministica che genera in tempo O(n)
tutte i possibili vettori con valori in 0 o 1 e poi, alla foglia di ogni ramo
dell'albero, verifca se il vettore soddisfa tutti i vincoli.
Teorema. SAT ≤ mp PL{0,1}
Dim. Ogni istanza xSAT = < X, F > di SAT può essere ridotta ad una istanza
xPL{0,1} = < Z, D > di PL{0,1}.
Se Ci = li1∨...∨ lik è la i-esima clausola di F defniamo la i-esima disequazione
di I: τi1+...+ τik > 0 con:
τij = zk
se
lij = xk
τij=1-zk
se
lij = ~xk
Ogni assegnazione di valori di verità f su X soddisfa F se e solo se tutte le
disequazioni di I sono verifcate dalla assegnazione f': Z → {0,1} tale che:
f'(zi) = 1 se e solo se f(xi) = vero
La riduzione è chiaramente calcolabile in tempo polinomiale.
INDSET. Problema dell’insieme indipendente.
Istanza: grafo G = (V, E), intero k > 0.
Predicato: esiste un sottoinsieme U di V con |U| ≥ k tale che per ogni u, v ∈U
(u,v) ∉ E?
Teorema. INDSET ∈ NP
Dim. Generiamo con una MTND tutti i sottoinsiemi di V, uno per ogni
cammino radice-foglia dell'albero di computazione.
Per ogni sottoinsieme U di V verifchiamo in tempo polinomiale:
(1) se U è un insieme indipendente;
(2) se |U| ≥ k
NOTA BENE. Per dimostrare che un problema Q in NP è NP-completo ci
sono due possibili metodi:
1. dimostrare che ogni problema P in NP è riducibile a Q, oppure:
2. trovare un problema P che si è già dimostrato NP-completo e dimostrare
che P ≤pm Q; infatti, se P ≤pm Q allora per ogni P1 ∈ NP, poiché si sa che P1
≤pm P, si avrebbe anche che P1 ≤pm Q.
Perchè il metodo 2 sia applicabile c'è bisogno di individuare almeno un primo
problema NP-completo.
Teorema di Cook. SAT è NP-completo.
Dim. Abbiamo già dimostrato che SAT ∈ NP; ora dimostriamo che per ogni
problema decisionale P ∈ NP si ha che P ≤ SAT.
Dato un problema P ∈ NP esiste una MTND che in tempo polinomiale accetta
il linguaggio LP associato a P (codifica di istanze yes); sia M una MTND che
per ogni x ∈ Γ* accetta x in tempo p(|x|), con p polinomio, se e solo se x ∈ LP.
Data una stringa x ∈ Γ* costruiamo una formula w in CNF tale che w e'
soddisfacibile ⇔ M accetta x in tempo p(|x|), cioè ⇔ x ∈ Lp.
Ipotesi semplifcative:
M ha nastro semi-infnito; nella confgurazione iniziale x è nelle prime celle;
ogni confgurazione utilizza esattamente p(|x|) celle; esiste un solo stato q Y di
accettazione; la computazione esegue esattamente p(|x|) passi.
Inoltre supponiamo:
Q = {q0, qY = q1,..., qr }
Γb = {a0 = b, a1,..., aη }
w e' congiunzione di quattro formule
w = wT ∧ wM ∧ wI ∧ wF
wT
wM
wI
wF
specifca le proprietà generali delle MT
specifca la funzione di transizione di M.
specifca la confgurazione iniziale
specifca la confgurazione fnale
Variabili di w:
Q(t, k) è true ⇔ all'istante t la macchina M si trova nello stato qk
0 ≤ t ≤ p(|x|),
0≤k≤ r
H(t, i) è true ⇔ all'istante t la testina di M si trova sulla cella i del nastro
0 ≤ t ≤ p(|x|),
0 ≤ i ≤ p(|x|)
C(t, i, h) è true ⇔ all'istante t la cella i del nastro contiene il simbolo ah
0 ≤ t ≤ p(|x|), 0 ≤ i≤ p(|x|), 0 ≤ h ≤ η
Quando diciamo “ all'istante i” intendiamo “dopo i steps”.
Le variabili sono O(p(|x|)2).
wI e wF si costruiscono così:
se x=ah0, a h1,...., ahn-1
se q0 è lo stato iniziale (e a0 = b)
wI = Q(0, 0) ∧ H(0, 0)∧
C(0, 0, h0)∧....∧ C(0, n-1, hn-1)∧...
C(0, n, 0) ∧....∧ C(0, p(|x|), 0)
wF = Q(p(|x|), 1) se qY = q1
wT
e' congiunzione di tre formule:
wT = wTS ∧ wTH ∧ wTC
wTS
specifca che ad ogni istante M si trova in esattamente uno stato
wTS = ∧ [∨ Q(t, k) ∧ (~Q(t, k1)∨~Q(t, k2)) ]
t k
k1 ≠ k2
wTH specifca che ad ogni istante la testina si trova su esattamente una cella
del nastro
wTH = ∧ [∨ H(t, i) ∧ (~H(t, i1)∨~H(t, i2))]
t i
i1 ≠ i 2
wTC
specifca che ad ogni istante ogni cella del nastro contiene un solo
carattere
wTC = ∧ [∨ C(t, i, h) ∧ (~C(t, i, h1) ∨~C(t, i, h1))]
t, i h
h1 ≠ h2
Si ha che:
|wT| = O(p(|x|))+O(p3(|x|))+O(p2(|x|)) = O(p3(|x|))
Infne wM e' la congiunzione di due formule
wM = wM1 ∧ wM2
Le due formule che costruiamo non sono in CNF, ma possono essere
trasformate in CNF con un aumento lineare della lunghezza; |wM| = O(p2(|x|)).
wM1 specifca che i contenuti del nastro agli istanti t e t+1 sono gli stessi,
eccetto, al più, per ciò che riguarda la cella su cui la testina è posizionata
all'istante t :
wM1 =
∧ [H(t, i) ∨ ∧ (C(t, i, h) ⇒ C(t+1, i, h)) ]
t, i
h
=
∧ [H(t, i)∨((¬C(t, i, 0) ∨ C(t+1, i, 0)) ∧....∧ (¬C(t, i, η) ∨ C(t+1, i, η)))]
t, i
=
∧ [(H(t, i) ∨ ¬C(t, i, 0) ∨ C(t+1, i, 0))∧....
…∧(H(t, i) ∨ ¬C(t, i, η) ∨ C(t+1, i, η))]
t, i
wM2
codifca la funzione di transizione di M e consta della congiunzione di
p2(|x|) . |Q| . (|Σ|+1) formule, ciascuna di O(1) letterali
Se δ(qk, aj) = {(ql1, ah1, d), …, (qld, ahd, d)} allora wM2 contiene:
∧
(~H(t, i)∨~Q(t, k)∨~C(t, i, j) ∨
t, i
H(t+1, i+1) ∧ Q(t+1, l1) ∧ C(t+1, i , h1) ∨...
H(t+1, i+1) ∧ Q(t+1, ld) ∧ C(t+1, i , hd) )
Osservare che:
~H ∨ ~Q ∨ ~C ∨ ( x1 ∧ y1 ∧ z1 ) ∨.....∨ ( xd ∧ yd ∧ zd ) =
{~H ∨ ~Q ∨ ~C ∨ Z1 ∨.....∨ Zd
Zi ⇔ ( xi ∧ yi ∧ zi ) i=1,..., d
[~ Zi ∨ ( xi ∧ yi ∧ zi )]
con l'aggiunta di:
che equivalgono a:
∧ [Zi ∨ ~( xi ∧ yi ∧ zi )]
[(~ Zi ∨ xi ) ∧ (~ Zi ∨ yi) ∧ (~ Zi ∨ xi)] ∧ [(Zi ∨ ~xi ∨ ~ yi ∨ ~ zi)] i=1,..., d}
In conclusione la formula w ha lunghezza O(p3(|x|)) e può essere costruita in
tempo proporzionale alla sua lunghezza.
Inoltre w è soddisfacibile, cioè w ∈ LSAT, se e solo se M accetta la stringa x in
tempo p(|x|), cioè x ∈ LP.
Altri problemi NP-completi
ES 1. 3-soddisfacibilità (3-SAT)
Istanza: formula F in CNF su un insieme X di variabili booleane con ogni
clausola composta esattamente da 3 letterali.
Predicato: esiste un'assegnazione f: X -> {true, false} che soddisfa F?
Riduzione: SAT ≤ 3-SAT
ES 2. Copertura degli archi di un grafo con nodi (VERTEX-COVER)
Istanza: grafo G = (V, E), intero k>0.
Predicato: esiste un sottoinsieme U di V con |U| ≤ k tale che se (u,v) ∈ E
almeno uno tra u e v è in U ?
Riduzione: 3-SAT ≤ VERTEX-COVER
ES 3. Circuito Hamiltoniano (HCIRCUIT)
Istanza: grafo G = (V, E)
Predicato: G contiene un circuito Hamiltoniano?
Riduzione: VERTEXCOVER ≤ HCIRCUIT
N.B: il problema del circuito Euleriano è invece polinomiale.
ES 4. Problema del commesso viaggiatore (TSP)
Istanza: grafo completo G = (V, E), ∀ a ∈ E un peso w(a) ∈ N+, B ∈ N+
Predicato: G contiene un circuito Hamiltoniano di peso al più B?
Riduzione: HCIRCUIT ≤ TST con pesi in {1, 2}.
NP-Completezza in senso forte
Lunghezza di una istanza di un problema: numero di caratteri necessari a
rappresentarla in uno schema di codifica predefinito.
Massimo di una istanza di un problema: grandezza del più grande numero
presente nell’istanza, altrimenti zero.
Due coppie di funzioni di lunghezza e di massimo per un problema sono
polinomialmente correlate se esistono due polinomi p, p’ tali che, per ogni
istanza I del problema :
len(I)
max(I)
≤ p’(len’(I))
≤ p’(len’(I), max’(I))
len’(I)
max’(I)
≤ p (len(I))
≤ p (len(I), max(I))
Per i problemi NP-completi non sappiamo se esiste un algoritmo polinomiale
di soluzione. Per alcuni di essi ne esiste invece uno pseudopolinomiale.
Def. Un algoritmo risolve un problema in tempo pseudopolinomiale se esiste
un polinomio p() non decrescente tale che il tempo t(I) di decisione
dell'algoritmo sull'istanza I soddisfa t(I) ≤ p(n, m), con n = len(I) e m=max(I).
Sia Q è un problema di decisione; per ogni polinomio p'() indichiamo con Qp'
lo stesso problema ristretto alle istanze I aventi max(I) ≤ p'(len(I)).
Th. Se un algoritmo A risolve un problema Q in tempo pseudopolinomiale
allora risolve il problema Qp' in tempo polinomiale, per ogni polinomio p'().
Dim. Per ogni istanza I di Qp' si sa che tA(I) ≤ p(len(I), max(I)), per qualche
polinomio p() non decrescente. Ma max(I) ≤ p'(len(I)) e quindi tA(I) ≤
p(len(I), p'(len(I))) = q(len(I)), per qualche polinomio q().
Def. Un problema Q è un number-problem se non esiste alcun polinomio p'()
tale che max (I) ≤ p'(len(I)), per ogni istanza I di Q.
Th. Un problema Q che è NP-completo ma non un number-problem non può
essere risolto con un algoritmo pseudopolinomiale, a meno che P = NP.
Dim. Se Q non è un number problem esiste un polinomio p'() tale che max (I)
≤ p'(len(I)), per ogni istanza I di Q, e quindi Q = Qp' . Se Q fosse risolubile in
tempo pseudopolinomiale allora per il teorema precedente Qp ' lo sarebbe in
tempo polinomiale.
Def. Un problema NP-completo Q è NP-completo in senso forte se esiste un
polinomio p'() tale che il problema Qp' è NP-completo.
Th. Un problema NP-completo in senso forte Q non può essere risolto in
tempo pseudopolinomiale, a meno che P = NP.
Dim. Per qualche polinomio p'() si ha che il problema Qp' è NP-completo, non
è un number problem e quindi vale il teorema precedente.
KNAPSACK
Istanza: insieme fnito U; per ogni u ∈ U, due interi positivi: valore v(u) e
spazio s(u); interi positivi S, V.
Predicato: esiste un sottoinsieme U’ ⊆ U tale che:
∑u ∈ U' s(u) ≤ S e ∑u ∈ U' v(u) ≥ V?
Oss. KNAPSACK è NP-completo ed ovviamente è un number-problem.
Sappiamo che può essere risolto in tempo pseudopolinomiale.
Oss. KNAPSACK non è NP-completo in senso forte, a meno che P=NP.
Uno tra i più importanti risultati degli ultimi dieci anni
in teoria della trattabilità
La classe coNP è la classe di problemi il cui complemento appartiene alla
classe NP.
E’ facile mostrare che:
PRIMES ∈ coNP.
In effetti il suo complemento, COMPOSITES, è in NP in quanto si può
riconoscere (“certificare”) se un numero intero è composto indovinando non
deterministicamente un suo fattore.
Nel 1975 Vaughan Pratt dimostra che esiste un “certificato” per un numero
primo che può essere verificato in tempo polinomiale e mette quindi PRIMES
in NP ∩ coNP.
Ci sono voluti quasi 25 anni per dimostrare che:
PRIMES ∈ P
M. Agraval, N. Kayal, N. Saxena (2002)