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