Calcolabilitá e Complessitá

annuncio pubblicitario
Calcolabilitá e Complessitá
Schifano S. Fabio [email protected]
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[1]
Calcolabiltá e Complessitá
. INFN via paradiso 12, 0532-974203
. Lezioni: LUN - GIO 14:00 18:00
. Orario di ricevimento: alla fine della lezione
. Esami:
. 2 compiti durante il corso + orale
. compito + orale
. libri di testo:
. Introduzione alla Calcolabilitá, A. Marchetti Spaccamela, M. Protasi
Franco Angeli
. Linguaggi, Modelli, Complessitá, G. Ausiello, F. D’Amore, G. Gambrosi
Franco Angeli
. La Struttura degli Algoritmi, Fabrizio Luccio
Bollati Boringhieri Editore
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[2]
Cosa Sapere
. definizioni di classi di complessitá: problemi decisionali come problemi di ricoscimento di linguaggi
. gerarchie di classi di complessitá
. definizione di Riduzione
. forma normale congiuntiva e SAT
. teorema di Cook
. algoritmi non-deterministici ed enumerativi
. esempi di riduzione
. dimostrazione di NP-completezza
Cosa vediamo oggi
. algoritmi non-deterministici ed enumerativi
. riduzioni di problemi al problema SAT
. dimostrazioni di NP-completezza
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[3]
Deve essere chiaro che ...
. un problema p appartiene alla classe NP se é risolvibile in tempo polinomiale da una MdT-ND,
ovvero da un algoritmo non-deterministico
. un problema p é detto NP-completo sse:
1. p ∈ NP
2. ∀ p0 ∈ NP si ha che p0 ∝ P tramite una riduzione polinomiale
. se p ∝ SAT ⇒ risolvere p non é piú difficile di risolvere SAT (SAT é un upper-bound alla
complessitá di p
. se SAT ∝ p ⇒ risolvere p non é un piú facile che risolvere SAT (altrimenti avrei risolto SAT!)
(SAT é un lower-bound alla complessitá di p)
. se suppongo che p sia un problema NP-completo, per dimostrare che q é NP-completo é sufficente
dimostrare che:
1. q ∈ NP, quindi esiste un algoritmo non-deterministico che lo risolve in tempo polinomiale
2. che p ∝ q , infatti in questo modo faccio vedere che risolvere q non puó essere piú facile che
risolvere p, poiché
. p é NP-completo per ipotesi
. la riduzione ∝ é transitiva
. q ∈ NP
ne segue che q é NP-completo.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[4]
Enumerazione
Una generica procedura di enumerazione é strutturata nel seguente modo
procedure ENUMERA ( i )
if ( i <= n ) then
< determina I [ i ] in funzione di S [ 1 ] , S [ 2 ] , . . . , S [ i −1] >
if ( | I [ i ] | ! = 0 ) then
for ( j=1 to | I [ i ] | ) do
S[i] = I[i ][ j]
if ( { S [ 1 ] . . . S [ i ] } == soluzione ) then
<arresta la computazione>
else
ENUMERA ( i+1)
end
end
end
end
end
. I[i] é l’insieme delle possibili scelte che si possono fare al passo i-esimo
. S[j] rappresenta il j-esimo elemento di I[i]
. S[1] ... S[i] rappresenta la soluzione parziale al passo i-esimo
. se |I[i]| ≤ m, ∀1 ≤ i ≤ n, la complessitá é O(mn).
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[5]
Enumerazione Cricca
Sia G=(N,A) un grafo, sia k la dimensione della cricca cercata.
procedure ENUMERACRICCA ( i , h ) ( ∗ i=nodo h=dimensione della cricca corrente
if ( k−h <= n−i + 1 ) then
( ∗ # nodi da inserire nella cricca <= #nodi da visitare
S [ i ] = False
( ∗ non inserisco il nodo i nella cricca
ENUMERACRICCA ( i + 1 , h )
( ∗ richiamo la funzione senza aumentare la dimensione della cricca
S [ i ] = True
( ∗ considero il caso in cui il nodo e ’ stato inserito nella cricca
cricca = True
( ∗ suppongo di aver trovato la cricca e verifco la sequenza di scelte
for j=1 to i −1 do
if ( S [ j]== True and ( i , j ) notin A ) then ( ∗ j e ’ stato scelto ma non esiste l ’ arco ∗ )
cricca = False
end
end
if ( cricca == True ) then
if ( h = k ) then
( ∗ se la sequenza di scelte e ’ una cricca di dimensione k ∗ )
success
else
ENUMERACRICCA ( i+1,h+1)
end
end
end
end
∗)
∗)
∗)
∗)
∗)
∗)
La ricerca della cricca comincia con la chiamata ENUMERACRICCA(1,0).
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[6]
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[7]
Algoritmi Non-Deterministici
Una generica procedura non deterministica é strutturata nel seguente modo:
procedure ND
for ( i=1 to n ) do
< determina I [ i ] in funzione di S [ 1 ] . . . S [ i −1] >
if ( | I [ i ] | = = 0 ) then
failure
else
S [ i ] = choice ( I [ i ] ) ( ∗ scegli un elemento dall ’ insieme I [ i ] ∗ )
if ( S [ 1 ] . . . S [ i ] ) = = soluzione ) then
success
end
end
end
end
. la prima parte genera una sequenza di scelte usando il costrutto non deterministico choice
. la seconda parte verifica se la scelta parziale é una soluzione.
La parte di codice che verifica se una sequenza di scelte é una soluzione si chiama certificato.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[8]
Algoritmo Non-Deterministico per SAT
procedure NDSAT
k = 1
while ( k <= n ) do
x [ k ] = choice { True , False }
k = k + 1
end
if ( F ( x [ 1 ] , . . . , x [ k ] ) = = True ) then
success
else
failure
end
end
L’algoritmo sceglie in modo non deterministico l’assegnamento delle variabili e poi verifica o certifica
se l’assegnamento prodotto soddisfa la formula.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[9]
Algoritmo Non-Deterministico per CRICCA
procedure NDCRICCA
h = 0
for i = 1 to n do
S [ i ] = choice ( True , False ) ( ∗ scelgo se inserire o meno il nodo Ni ∗ )
if ( S [ i ] == True ) then
h = h+1
for j=1 to i −1 do
if ( S [ j ] and ( i , i ) notin A ) then
failure
else
if ( h = K ) then
success
end
end
end
end
end
end
L’algoritmo sceglie in modo non deterministico se un nodo appartiene alla cricca oppure no, e poi
verifica o certifica se l’insieme di nodi prodotto soddisfa la condizione di cricca.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[10]
Hamiltonian Path ∝ SAT
Definizione Dato un grafo G, un path hamiltoniano é una cammino completo che passa per tutti i
nodi del grafo una sola volta.
Supponiamo di sapere che HP sia NP-completo e di voler dimostrare che SAT é NP-completo facendo
vedere che HP ∝ SAT, cioé che ogni istanza di HP puó essere ricondotta o espressa come una istanza
del problema SAT.
Esercizio: il problema decisionale dell’esistenza di un cammino hamiltoniano in un grafo é un problema
NP poiché é risolvibile tramite un algoritmo non deterministico (un cammino hamiltoniano é una cricca
di dimensione massima).
Per trasformare una istanza del problema HP in una istanza del problema SAT, definiamo una variabile
Xij con il seguente significato :
il nodo j é l’i−esimo del cammino hamiltoniano.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[11]
L’esistenza di un cammino hamiltoniano per un grafo G = (N, E) corrisponde quindi al verificarsi di
tutte le seguenti condizioni:
1. ogni nodo j deve stare nel cammino hamiltoniano, ovvero:
∀j ∈ N, X1j ∨ X2j ∨ . . . ∨ Xnj = φj
2. ogni nodo j non puó essere contemporaneamente l’i−esimo ed il k−esimo nodo del ciclo
hamiltoniano, ovvero:
∀j ∈ N, i 6= k, ¬(Xij ∧ Xkj ) = ¬Xij ∨ ¬Xkj = ψj (i, k)
3. almeno un nodo deve essere l’i−esimo del cammino hamiltoniano, ovvero:
∀i = 1 . . . n, Xi1 ∨ . . . ∨ Xin = ηi
4. due nodi non adiacenti non possono essere consecutivi in ciclo hamiltoniano, ovvero:
∀(i, j) ∈
/ E, ∀k = 1 . . . n − 1, ¬(Xki ∧ X(k+1)j ) = ¬Xki ∨ ¬X(k+1)j = ρij (k)
Le clausole sopra descritte caratterizzano le proprietá di ciclo hamiltoniano.
Una assegnamento delle variabili Xij che renda vera tutte le formule φ, ψ, η, ρ, implica che esiste un
cammino hamiltoniano inviduato dai letterali che hanno valore True.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[12]
Infatti:
. la veritá delle condizioni 1, 2 e 3 implicano che:
∀j ∈ N ∃i | Xij = True
cioé per ogni nodo j esiste un ed un solo indice i tale che HP [i] = nj
. la condizione 4 implica che
∀(i, j) ∈ N, (i, j) ∈ E
cioé per pgni coppia di nodi esiste un arco appartenente ad E .
La costruzione delle formule φ, ψ, η, ρ puó essere fatta in tempo polinomiale, basta scandire i nodi del
grafo e costruire le corrispondenti formule.
Avendo effettuato la riduzione
HP ∝ SAT
possiamo affermare che risolvere HP non é piú difficile di risolvere SAT.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[13]
Circuit Value e Circuit SAT
Definizione Circuit Value
Dato un circuito logico di porte and, or, not con una sola porta di uscita, ed i valori degli ingressi,
stabilire se l’output é True
Circuit Value é un problema facile, cioé appartiene alla classe di complessitá P, cioé puó essere risolto
in tempo polinomiale.
Infatti basta applicare i valori degli input alle porte e verificare che il risultato prodotto sia True. Questo
é fattibile in un tempo polinomiale nella dimensione del circuito, cioé nel numero di porte logiche.
Definizione Circuit SAT (CSAT)
Dato un circuito logico di porte and, or, not con una sola porta di uscita stabilire se esiste un
assegnamento degli input tali che l’output sia True
Circuit SAT é un problema difficile, cioé appartiene alla classe di complessitá NP ed inoltre si dimostra
che é NP-completo.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[14]
Supponiamo che CSAT sia NP-completo e facciamo vedere la riduzione
CSAT ∝ SAT
Bisogna quindi ridurre ogni istanza di CSAT ad una istanza di SAT.
Senza perdere di generalitá possiamo supporre che il circuito sia composto solo di porte or, not, infatti
per le leggi di De Morgan vale la seguente uguaglianza:
and(a,b) = not( or ( not(a), not(b) ) )
Associamo una variabile y di output ad ogni nodo del circuito.
Ad ogni porta di tipo or(a, b) associamo una variabile y ⇔ a ∨ b.
Ricordando che A ⇔ B ≡ (¬A ∨ B) ∧ (¬B ∨ A), possiamo riscrivere la porta or come:
(¬y ∨ (a ∨ b)) ∧ (¬(a ∨ b) ∨ y)
(¬y ∨ a ∨ b) ∧ ((¬a ∧ ¬b) ∨ y)
(¬y ∨ a ∨ b) ∧ (¬a ∨ y) ∧ (¬b ∨ y)
=
=
De Morgan
Distributiva
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[15]
Ad ogni porta not(a) associamo una variabile y ⇔ ¬a, che possiamo riscrivere come:
(¬y ∨ ¬a) ∧ (a ∨ ¬y)
La congiunzione di tutte le clausole corrispondenti a tutte le porte logiche del circuito definisce una
formula logica in forma normale congiuntiva.
Una soluzione che soddisfa tale formula soddisfa anche il circuito corrispondente.
La trasformazione puó essere effettuata in tempo polinomiale, infatti basta esaminare tutte le porte del
circuito e scrivere la corrispondente clausola.
Anche in questo caso avendo effettuato la riduzione CSAT ∝ SAT l’unica cosa che possiamo dire
é che risolvere CSAT é difficile almeno quanto risolvere SAT.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[16]
Esempio Vediamo come ridurre una istanza di CSAT a SAT. Sia dato il seguente circuito:
z = ¬x
⇔
(¬z ∨ ¬x) ∧ (x ∨ z)
w =z∨y
⇔
(¬w ∨ z ∨ y) ∧ (¬(z ∨ y) ∨ w) =
(¬w ∨ z ∨ y) ∧ ((¬z ∧ ¬y) ∨ w) =
(¬w ∨ z ∨ y) ∧ (¬z ∨ w) ∧ (¬y ∨ w)
ϕ(x, y, w, z) = (¬z ∨ ¬x) ∧ (x ∨ z) ∧ (¬w ∨ z ∨ y) ∧ (¬z ∨ w) ∧ (¬y ∨ w)
Tale formula é soddisfatta dal seguente assegnamento:
x=F y=F z=T w=T
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[17]
CRICCA é NP-completo
Definizione Dato un grafo G = (N, E) ed un intero k stabilire se esiste un sottografo completo di
k nodi.
Per dimostrare che un problema P é NP-completo bisogna:
1. dimostrare che il problema P appartiene alla classe NP, quindi far vedere che esiste un algoritmo
non deterministico che lo risolve
2. dimostrare che ogni problema NP si riduce al problema P.
Poiché la proprietá di riduzione é transitiva, basta far vedere che un qualsiasi problema NP-completo
si riduce a P tramite un algoritmo polinomiale.
Il problema CRICCA é un problema NP poiché puó essere risolto tramite un algoritmo non
deterministico.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[18]
Per dimostrare l’NP-completezza, grazie al teorema di Cook, basta far vedere che
SAT ∝ CRICCA
Supponiamo che ϕ(x1, . . . , xn) sia una generica istanza di SAT composta da k clausole
ϕ(x1, . . . , xn) = C1 ∧ . . . ∧ Ck
A partire dalla formula ϕ, costruiamo un Grafo G nel seguente modo:
1. un nodo per ogni letterale che appare in ϕ, etichettato come (z, j) con il significato che il letterale
z appare nella clausola Cj
2. gli archi uniranno le coppie di nodi (z, j), (w, h) con z 6= ¬w e j 6= h.
Cioé coppie di nodi di letterali appartenenti a clausole diverse che possono avere
contemporaneamente valore True.
Se esiste un sottografo G0 di k nodi l’assegnamento al valore True di tutti i nodi ad esso appartenente,
ovvero a tutti i letterali corrispondenti, renderá vera la formula ϕ.
Il grafo G puó essere costruito in tempo polinomiale da ϕ. Infatti vi sono al massimo k ∗ n letterali e
l’esistenza di un arco puó essere stabilita in tempo costante.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[19]
Poiché vi sono O((kn)2) archi l’intera costruzione si effettua in tempo polinomiale.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[20]
Esempio Data la formula
ϕ(a, b, c) = (a ∨ b) ∧ (¬a ∨ ¬b ∨ c) ∧ (¬c)
costruisco il seguente grafo:
Esistono due cricche di dimensione k = 3 ( cioé uguale al numero delle clausole di ϕ) corrispondenti
a due soluzioni che soddisfano la formula ϕ:
1. ((b.1), (¬a, 2), (¬c, 3)) ≡ (b = T, ¬a = T, ¬c = T )
2. ((a, 1), (¬b, 2), (¬c, 3)) ≡ (a = T, ¬b = T, ¬c = T )
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[21]
3-SAT é NP-completo
Definizione 3-SAT
Data una formula logica in forma normale congiuntiva in cui ogni clausola contiene esattamente 3
letterali, stabilire se esiste un assegmamento per le variabile che renda vera la formula
Poiché ogni istanza di 3-SAT é anche una istanza di SAT l’appartenenza alla classe NP é ovvia.
Per dimostrare che 3-SAT é un problema NP-completo mostriamo che
SAT ∝ 3-SAT
Sia ϕ(x1, . . . , xn) una generica istanza di SAT di k clausole
ϕ(x1, . . . , xn) = C1 ∧ . . . ∧ Ck
e supponiamo senza perdere di generalitá che ogni clausola sia formata da m letterali, con m variabile
da clausola a clausola
Quindi per ogni clausola esiste m tale che:
C i = l1 ∨ . . . ∨ lm
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[22]
Trasformiamo ogni clausola della formula ϕ in una congiunzione di clausole di tre letterali nel seguente
modo:
1. se m = 1 trasformo Ci nella clausola Ci = l1 ∨ l1 ∨ l1
2. se m = 2 trasformo Ci nella clausola Ci = l1 ∨ l2 ∨ l2
3. se m = 3 non faccio nulla
4. se m > 3 introduco una nuova variabile X e scrivo
Ci = (l1 ∨ l2 ∨ X) ∧ (¬X ∨ l3 . . . ∨ lm)
e riapplico le regole di riscrittura alla sottoclausola (¬X ∨ l3 . . . ∨ lm) finché non ottendo clausole
di soli tre letterali.
Osserviamo che l’introduzione della variabile X nel caso in cui si ha una clausola con un numero
maggiore di 3 letterali non altera la risolubilitá dei problemi SAT e 3-SAT.
Cioé si puó dimostrare che da una soluzione per il problema SAT si puó dedurre una soluzione per il
problema 3-SAT e viceversa.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[23]
Infatti, supponiamo che σ sia una soluzione per il problema SAT.
Consideriamo una generica clausola Ci e la clausola Ci0 ottenuta da Ci introducendo la variabile X :
Ci0 = (l1 ∨ l2 ∨ X) ∧ (¬X ∨ l3 . . . ∨ lm)
Se la clausola Ci é soddisfatta perché l1 =True o l2 =True, allora la clausola Ci0 sará soddisfatta
dall’assegnamento:
σ 0 = σ[X = False]
infatti la sottoclausola che contiene (¬X ∨ l3 . . . ∨ lm) sará soddisfatta.
Se viceversa la clausola Ci é soddisfatta poiché un letterale diverso da l1 e l2 é True, allora la clausola
Ci0 sará soddisfatta dall’assegnamento
σ 0 = σ[X = True]
infatti in questo caso la sottoclausola (l1 ∨ l2 ∨ X) sará soddisfatta.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[24]
Supponiamo viceversa che η sia una soluzione per 3-SAT.
Ci0 = (l1 ∨ l2 ∨ X) ∧ (¬X ∨ l3 . . . ∨ lm)
Allora, poiché entrambe le sottoclausole devono essere vere, almeno un letterale lj della clausola Ci0
deve essere necessariamente essere True ( quello in cui il letterale della variabile X é false ).
Quindi l’assegnamento
η 0 = η − {X}
é un assegnamento che soddisfa la clausola Ci e quindi il problema SAT.
Abbiamo quindi ridotto una istanza di SAT in una istanza di 3-SAT, ed una soluzione che soddisfa
l’istanza di 3-SAT soddisfa anche l’istanza di SAT.
La trasformazione avviene il tempo polinomiale, infatti le clausole sono k e per ogni clausola la
trasformazione deve essere applicata al pi’u m volte, quindi la complessitá totale é O(km).
Quindi
3-SAT é un problema NP-completo
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[25]
NAESAT: Not All Equal SAT
Definizione NAESAT Stabilire se esiste un assegnamento che renda True una istanza di 3-SAT tale
che in ogni clausola ci sia almeno un letterale che abbia valore diverso dagli altri due.
In altre parole non accettiamo gli assegnamenti per cui tutti i letterali di ogni clausola abbiamo
banalmente valore True da cui il nome Not All Equal SAT.
NAESAT appartiene alla classe NP poiché la verifica di una soluzione puó essere effettuata in tempo
polinomiale ed é risolvibile tramite un algoritmo non deterministico in tempo polinomiale.
Supponendo che CSAT é NP-completo, per dimostare che NAESAT é NP-completo effettuiamo la
riduzione
CSAT ∝ NAESAT.
Senza perdere di generalitá supponiamo che l’istanze di CSAT contengano solamente porte or, not.
Trasformiamo ogni istanza di CSAT in una equivalente di NAESAT riscrivendo le funzioni logiche
calcolate dalla porte del circuito del problema di CSAT come clausole di tre letterali.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[26]
Alle porte di tipo or possiamo associare la variabile z ⇔ or(x, y), che possiamo riscrivere come:
(¬z
(¬z
(¬z
(¬z
∨ x ∨ y) ∧ (¬(x ∨ y) ∨ z)
∨ x ∨ y) ∧ ((¬x ∧ ¬y) ∨ z)
∨ x ∨ y) ∧ (¬x ∨ z) ∧ (¬y ∨ z)
∨ x ∨ y) ∧ (¬x ∨ z ∨ w) ∧ (¬y ∨ z ∨ w)
=
=
=
ove w é una variabile aggiuntiva per far diventare le clause di tre letterali come richiesto dal problema
NAESAT.
Alle porte di tipo not associamo la variabile z ⇔ not(x):
(¬z ∨ ¬x) ∧ (x ∨ z)
(¬z ∨ ¬x ∨ w) ∧ (x ∨ z ∨ w)
=
Anche qui la variabile w é stata aggiunta per far divenire le clausole di 3 letterali.
Osserviamo che l’introduzione della variabile w non altera le soluzioni del problema nel senso che da
una soluzione per il problema CSAT si puó dedurre una soluzione per il problema NAESAT e viceversa.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[27]
Infatti, se σ é una soluzione del problema CSAT, allora
0
σ = σ[w = false]
é una soluzione del corrispondente problema NAESAT.
Infatti , per quanto riguarda la porta or
(¬z ∨ x ∨ y) ∧ (¬x ∨ z ∨ w) ∧ (¬y ∨ z ∨ w)
nella prima sotto-clausola (¬z ∨ x ∨ y) tutti e tre i letterali non possono avere valore True poichè la
seconda e la terza non sarebbero soddisfatte, quindi almeno un letterale ha valore false.
Avendo posto w =False anche la seconda e la terza hanno almeno un letterare diverso da True come
richiesto dal problema NAESAT.
Per quanto riguarda la porta not
(¬z ∨ ¬x ∨ w) ∧ (x ∨ z ∨ w)
avendo assegnato w =False, almeno un letterale ha valore False.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[28]
Viceversa, se η é una soluzione per NAESAT allora anche ¬η é una soluzione per CSAT.
Infatti poiché NAESAT richiede che i letterali di una clausola non siano tutti True, negando una
soluzione di NAESAT, tutti i letterali che in ogni clausola
C i = l1 ∨ . . . l m
avevano valore False avranno valore True, e quindi la clausola é ancora soddisfatta.
La soluzione, η o ¬η , di NAESAT in cui w =False, costituisce quindi una soluzione per CSAT, poiché
in questo modo la veritá delle clausole non dipende da w.
Abbiamo quindi dimostrato che
CSAT ∝ NAESAT
e essendo CSAT NP-completo per ipotesi si deduce che NAESAT é NP-completo.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[29]
Graph k-Coloring
Definizione Dato un grafo G=(N,E) stabilire se possibile colorare i nodi del grafo con k colori in modo
tale che ogni coppia di nodi adiacenti abbia un colore diverso.
Facciamo vedere tramite un esempio come possiamo ridurre una istanza NAESAT ad una istanza del
problema 3-coloring.
Sia ϕ una istanza di NAESAT cosí definita
ϕ = (X1 ∨ ¬X2 ∨ X3) ∧ (¬X1 ∨ X2 ∨ ¬X3)
Costruiamo il seguente grafo:
1. per ogni variabile Xi della formula ϕ si costruisca un sottografo triangolare completo i cui nodi
sono Xi, ¬Xi, V , ove V é un nodo comune. Tali sottografi prendono il nome di triangoli delle
variabili
2. per ogni clausola di indice k costruisco un sottografo triangolare completo composto dai nodi
(k, Xki ) ove Xki sono i letterali della clausola di indice k. Tali sottografi prendono il nome di
triangoli delle clausole
3. aggiungo degli archi tra un nodo di un triangolo variabile e un nodo di un triangolo clausola che
rappresentano lo stesso letterale.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[30]
Se il grafo cosí ottenuto é colorabile con tre colori allora anche la formula ϕ é soddisfacibile.
Facciamo vedere, per semplicitá, che ad una soluzione di NAESAT corrisponde una colorazione valida
per il grafo costruito.
Sia
X1 = True, X2 = True, X3 = False
una soluzione per ϕ allora la seguente colorazione:
1. assegno il colore 0 ai nodi variabile che hanno valore False ed 1 ai nodi clausola adiacenti
2. assegno il colore 1 ai nodi variabile che hanno valore True e 0 ai nodi clausola adiacenti, finché
possibile
3. assegno il colore 2 al nodo V ed ai rimanenti nodi clausola
é una colorazione valida del grafo costruito a partire da ϕ.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[31]
Sia:
ϕ(X1, X2, X3) = (X1 ∨ ¬X2 ∨ X3) ∧ (¬X1 ∨ X2, ∨¬X3)
Una soluzione é costituita dal seguente assegnamento:
X1 = 1 X2 = 1 X3 = 0
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[32]
Facciamo vedere un algoritmo polinomiale per il problema della colorazione di un grafo.
Il problema della colorazione di un grafo é associato al problema dell’allocatore dei registri virtuali in
un compilatore.
.
.
.
1000.
.
.
.
1010.
1001.
.
.
.
1020.
.
.
.
R100 = R0+1
R300 = R1+1
R400 = R300+1
R500 = R100+1
.
.
.
1000.
.
.
.
1010.
1001.
.
.
.
1020.
.
.
.
R10 = R0+1
R10 = R1+1
R11 = R10+1
R12 = R10+1
I registri virtuali R100 ed R300 interferiscono quindi non possono essere mappati sullo stesso registro
fisico.
Cioé il mapping sui registri fisici che appare a destra della tabella sarebbe sbagliato.
Costruisco un grafo di interferenza e cerco di colorare il grafo con un numero di colori pari al numero
di registri fisici diponibili.
Un classico algoritmo di allocazione dei registri e’ quello che va sotto il nome di Graph Coloring.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[33]
Graph Coloring: supponiamo di avere un numero k di colori ed una cartina geografica (politica). Si
vuole colorare ogni stato della cartina con un colore differente in modo che ogni stato abbia un colore
diverso dallo stato confinante.
In termini matematici il problema puo’ essere formulato nel seguente modo:
Dato un grafo G=(N,E) e k colori si vuole colorare ogni nodo del grafo in modo tale che ogni
nodo abbia un colore diverso dal nodo adiacente.
Sia n un nodo del grafo tale che degree(n)< k, allora il grafo G=(N,E) e’ colorabile con k colori se é
colorabile il grafo G=(N-n, E). Un algoritmo che colora il grafo e’ il seguente:
1. Selezionare un nodo n tale che degree(n)< k e metterlo in uno stack S
2. Rimuovere il nodo selezionato ed i suoi archi dal grafo
3. Ripetere i precedenti passi finchè o il grafo è vuoto o ogni nodo ha un grado maggiore od uguale a
k. In quest’ultimo caso il grafo non e’ colorabile con k colori
4. Se il grafo è vuoto allora si comincia ad estrarre un nodo alla volta dallo stack
5. Ad ogni nodo si associa il colore che non conflitta con i nodi adiacenti e si reinserisce il nodo nel
grafo.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[34]
Esempio: Dato il seguente grafo
si vuole colorare ogni nodo del grafo usando solamente 3 colori.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[35]
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[36]
Classe co-N P
Dato un problema decisionale p definiamo il problema pc, cioé il problema decisionale complementare
come quel problema che ha risposta affermativa laddove p aveva risposta negativa e viceversa.
Se p ∈ P allora pc ∈ P, infatti basta usare lo stesso algoritmo di risoluzione e scambiare le istruzioni
di success con quelle di failure.
Se p ∈ NP allora non possiamo affermare nulla su problema pc.
Infatti, gli algoritmi non deterministici danno risposta affermativa alla prima computazione che termina
con l’istruzione di success.
Ma per dare risposta negativa devono terminare tutte le possibili computazioni con l’istruzione di
failure.
Se scambiassimo le istruzioni di success con quelle di failure otterremmo un algoritmo non deterministico
che non risolve pc poiché si fermerebbe alla prima esecuzione dell’istruzione di success.
Per molti problemi appartenenti alla classe NP non si sá nulla del
corrispondente problema complementare.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[37]
II Compito
Lunedi 29 Novembre 2004 ore 14:00 AULA G
Dipartimento di Fisica
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[38]
Esercizio: CRICCA ∝ Independent Set
Definizione Independet Set Graph
Dato un grafo non orientato G = (N, E) ed un insieme I ⊆ N si dice che I é un insieme
indipendente (IS) per G se per ogni i, j ∈ I l’arco (i, j) ∈
/ E.
Dato un grafo G = (N, A) per il problema CRICCA, si definisca il grafo complemento Gc = (N, A)c
di G avente gli stessi nodi ma gli archi sono scambiati con i non archi. Cioé
c
∀ i, j (i, j) ∈ A ⇔ (i, j) ∈
/A
É immediato verificare che un sottoinsime S di nodi é una soluzione di CRICCA di G se e solo se é
anche una soluzione del problema Independent Set per Gc.
La riduzione puó essere effettuata in tempo polinomiale.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[39]
Esempio Ad ogni soluzioni di IS corrisponde una soluzione di CRICCA.
. se supponiamo k = 3, abbiamo le seguenti soluzioni per IS e CRICCA
(A, B, C), (D, E, F ), (B, C, D)
. se supponiamo k = 4, abbiamo le seguenti soluzioni di IS e CRICCA
(B, D, C, F ), (D, C, F, E)
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[40]
Esercizio: Hamiltonian Path ∝ TSP
Dato un grafo G = (N, A) si definisca un insieme di dati per il problema TSP come segue:
. si introducano n = |N | cittá
. si ponga k = n
. si definisca la matrice D = [dij ] delle distanze tra le cittá
∀i, j = 1 . . . n
dij = 1
dij = 2
se
se
[i, j] ∈ A
[i, j] ∈
/A
É immediato verificare che esiste un circuito Hamiltoniano in G se e solo se esiste una soluzione al
commesso viaggiatore con distanza c omplessiva k.
La riduzione puó essere fatta in tempo polinomiale.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[41]
Esempio
Ad ogni soluzione TSP corrisponde una soluzione equivalente HP.
Ad esempio una soluzione TSP é il cammino:
(A, F, E, B, C, D, A)
a cui corrisponde una soluzione per HP.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[42]
Esercizio: PARTIZIONE ∝ SCHEDULING MULTIPROCESSORE
Definizione PARTIZIONE
Dato un insieme A = {a1, . . . , an} di interi positivi esiste un sottoinsieme S ⊂ {1, . . . , n}
tale che
Σi∈S ai = Σi∈S
/ ai
Definizione SCHEDULING MULTIPROCESSORE
Dati un insieme P = {p1, . . . , pn} di programmi tali che pi richieda un tempo (intero) di
esecuzione ti, m processori identici ed un intero d é possibile eseguire tutti i programmi sugli
m processori in d unitá di tempo ?
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[43]
Data una generica istanza per il problema PARTIZIONE rappresentata dall’insieme
A = {a1, . . . , an}
si definisca P = {p1, . . . , pn} insieme di programmi tali che pi richieda tempo ti = ai, ∀i =
1, . . . , n.
Si considerino m = 2 processori e si ponga
d=
1 n
Σi=1ai
2
Allora, se é possibile eseguire tutti i programmi sui due processori in d unitá di tempo esiste
una soluzione per il problema PARTIZIONE costituita dagli indici dei programmi che sono eseguiti
rispettivamente dal processore 1 al processore 2.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[44]
Esercizio: PARTIZIONE ∝ SOMMA DI SOTTOINSIEME
Definizione PARTIZIONE
Dato un insieme A = {a1, . . . , an} di interi positivi esiste un sottoinsieme S ⊂ {1, . . . , n}
tale che
Σi∈S ai = Σi∈S
/ ai
Definizione SOMMA DI SOTTOINSIEME
Dati un insieme A = {a1, . . . , an} di interi positivi ed un intero k esiste un sottoinsieme
S ⊂ {1, . . . , n} tale che Σi∈S ai = k
Il problema PARTIZIONE si riduce al problema SOMMA di SOTTOINSIEME.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[45]
Infatti sia data una istanza del problema partizione PARTIZIONE, ovvero un insieme
A = {a1, . . . , an}
di valori interi positivi.
Per costruire una istanza corrispondente per il problema SOMMA DI SOTTOINSIEME si ponga
k=
1 n
Σ ai
2 i=1
Allora per costruzione una soluzione per il problema SOMMA DI SOTTOINSIEME con A =
{a1, . . . , an} e k costituisce anche una soluzione per il problema PARTIZIONE.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[46]
PARTIZIONE ∝ ZAINO
Definizione PARTIZIONE
Dato un insieme A = {a1, . . . , an} di interi positivi esiste un sottoinsieme S ⊂ {1, . . . , n}
tale che
Σi∈S ai = Σi∈S
/ ai
Definizione ZAINO
Dati un insieme O = {o1, . . . , on} di oggetti tali che oi é caratterizzato da un profitto pi e da
un volume vi, e due interi positivi c (capacitá dello zaino) e k (obiettivo) esiste un sottoinsieme
S ⊆ O tale che
Σi∈S vi ≤ c e Σi∈S pi ≥ k
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[47]
Data una generica istanza per il problema PARTIZIONE rappresentata dall’insieme
A = {a1, . . . , an}
si consideri la seguente istanza per il problema dello ZAINO di n oggetti in cui, i profitti ed i volumi
sono definiti nel seguente modo:
pi = vi = ai ∀i = 1 . . . n
e la capacitá e l’obiettivo nel seguente modo:
k=c=
1 n
Σi=1ai
2
Se determiniamo un insieme S ⊂ {1, . . . , n} tale che
Σi∈S vi ≤ c e Σi∈S pi ≥ k
abbiamo anche trovata una soluzione per il problema partizione costituita da tutti gli indici di S .
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[48]
Independet Set Graph
Definizione Independet Set Graph
Dato un grafo non orientato G=(N,E) ed un insieme I ⊆ N si dice che I é un insieme indipendente
(IS) per G se per ogni i, j ∈ I l’arco (i, j) ∈
/ E.
Il problema di stabilire se dato un grafo esiste un insieme indipendente di k nodi é un problema NP
poiché é risolvibile tramite un algoritmo non deterministico.
Per dimostrare l’NP-completezza facciamo vedere tramite un esempio che 3-SAT ∝ IS.
Sia quindi, per esempio, ϕ una istanza di 3-SAT definita nel seguente modo:
ϕ = (X1 ∨ ¬X2 ∨ X3) ∧ (¬X1 ∨ X2 ∨ ¬X3)
1. per ogni clausola costruisco un sottografo completo associando un nodo ad ogni letterale
2. aggiungo archi tra i nodi che rappresentano letterali complementari
Se il grafo cosí costruito ammette un IS di cardinalitá 2, in generale un independent set di cardinalitá
uguale al numero delle clausole, allora ϕ é soddisfattibile con un assegnamento che da valore True ai
letterali corrispondenti ai nodi del set indipendente individuato.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica
[49]
Soluzioni:
1. soluzione IS={X1, X2}, soluzione 3-SAT=X1 = 1, X2 = 1, X3 = 0
2. soluzione IS={¬X1, ¬X2}, soluzione 3-SAT=X1 = 0, X2 = 0, X3 = 1
Schifano S. Fabio
Scarica