Progetto e analisi di algoritmi versione 1.0.4 Appunti ::::::::::: 28 gennaio 2007 Indice 1 Complessità asintotica 2 1.1 2 1.2 1.3 2 6 Compresa . . . . . . . . . . . Limite inferiore Limite superiore . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 2 3 4 NP NP . Complementare-N P Pspace . . . . . . . . Asimmetria di . . . . . 4 . . . . . 5 . . . . . 6 Relazioni fra spazio e tempo . 6 3 Inviluppo convesso 7 4 Esame del 21 Aprile 2006 8 5 4.1 Domanada 1 4.2 Domanda 4 7 . . . . . . . . . 8 . . . . . . . . . . 8 Esame del 21 Aprile 2005 9 5.1 Domanda 1 . . . . . . . . . . 9 5.2 Domanda 2 . . . . . . . . . . 10 5.3 Domanda 4 . . . . . . . . . . 12 8 9 Esame del 6 Giugno 2005 12 6.1 12 Domanda 1 . . . . . . . . . . Esame del 14 Luglio 2005 13 7.1 Domanda 1 . . . . . . . . . . 13 7.2 Domanda 4 . . . . . . . . . . 14 Esame del 13 Settembre 2004 16 8.1 Domanda 1 . . . . . . . . . . 16 8.2 Domanda 3 . . . . . . . . . . 17 Esame del 4 Novembre 2004 18 9.1 Domanda 1 . . . . . . . . . . 18 9.2 Domanda 2 . . . . . . . . . . 18 10 Esame del 31 Ottobre 2006 19 10.1 Domanda 1 . . . . . . . . . . 19 10.2 Domanda 2 . . . . . . . . . . 19 11 Esame del 19 Settembre 2006 (CA) 20 11.1 Domanda 1 12 Esame (CA) del 27 . . . . . . . . . . Gennaio 20 2005 21 1 2 Complessità asintotica 1 Complessità asintotica 1.1 Compresa Mostrare che T (n) = 3n2 + 7n + 8 ∈ Θ(n2 ). Cioè: ∃c1 , c2 ∈ R+ , n0 ∈ N+ : 0 ≤ c1 n2 ≤ 3n2 + 7n + 8 ≤ c2 n2 c1 , posso prenderlo minore del coeciente di 3n2 ; c2 , deve essere maggiore di c1 . Come coeciente tre il coeciente ∀n ≥ n0 men- c1 = 3, c2 = 4. Verico le due condizioni: • c1 n2 ≤ 3n2 + 7n + 8 3n2 ≤ 3n2 + 7n + 8; è vero. • 3n2 + 7n + 8 ≤ c2 n2 4n2 ≥ 3n2 + 7n + 8 Per essere vera occorre che allora, n2 − 7n − 8 ≥ 0 quindi (n − 8)(n + 1) ≥ 0; n ≥ 8, n ≤ −1. Il minore lo scarto sempre. Inne pongo 1.2 n0 = 8. Limite inferiore Mostrare che T (n) = n2 ∈ Ω(n2 + 2n + 5). Cioè: ∃c > 0, n0 ∈ N+ : n2 ≥ c(n2 + 2n + 5) ≥ 0 1 , voglio dimostrare che 2 Risolvendo: n2 > 21 n2 + n + 25 1 2 n − n − 25 ≥ 0 2 2 Pongo c= ∀n ≥ n0 n2 > 12 n2 + n + 5 . 2 n − 2n − √ √5 ≥ 0 n=1± 1+5 n√ =1± 6 √ dimostro che n ≤ 1 − 6 oppure n ≥ 1 + 6 √ inne pongo n0 = 1 + 6 = d1 + 2.44e = d3.44e = 4. 1 3 Complessità asintotica 1.3 Limite superiore Mostrare che 2 T (n) = n2 ∈ O( n4 − 2). Cioè: ∃c > 0, n0 ∈ N+ : Pongo c = 8, Risolvendo: 2 2 n2 ≤ c( n4 − 2) voglio dimostrare che 2n − 16 ≥ 0 n2 ≥ 16 ottengo n1 ≥ −4, n2 ≤ 4 inne pongo n0 = 4. n2 > ∀n ≥ n0 8 . 4 2 4 NP 2 NP NP è l'insieme dei problemi per i quali esistono: • un insieme di certicate • un insieme • un polinomio ∆ R⊆I ×∆ p(.) tali che 1. la relazione R sia riconosclibile in tempo polinomiale 2. ogni istanza positiva è in relazione con alemeno un certicato 3. nessuna istanza negativa è in relazione con un certicato 4. la dimensione del certicato è al più p(.) nella dimensione delle istanze; (il certicato deve essere più piccolo della dimensione dell'istanza) Dire che la classe di problemi corretto, in quanto nella classe N P, P NP sia quella non polinomiale non è del tutto e un sottoinsieme di NP ed inoltre non sappiamo se non esistano problemi risolvibili con un algoritmo polino- miale. Proprietà (1): P P. Per dimostrare che un certicato ad ogni problema di è sottoinsieme di N P , bisogna fornire ∆ = {1}; Il cericato fasullo pari a in quanto rispetta tutte le condizioni riportate sopra: ogni istanza positiva è in relazione con il certicato. . . NP signica non-deterministico polinomiale, cioè risolubile in tempo poli- nomiale da una macchina di Turing non deterministica. Proprietà (2): N P , esiste un polinomio f (.) e una f tempo O(2 (n) ); questa proprietà ci dice per ogni problema in macchina di Turing che lo risolve in che i problemi in NP non sono indecidibili, in linea di principio sono tutti risolvibili, ma attraverso, alla peggio, un algoritmo esponenziale. 2.1 Asimmetria di Le denizioni di NP N P , sono asimmetriche, la prima richiede certicati solo per 1 le istanze positive (cfr 2), mentre la seconda, attraverso la NTM , richiede: • per le istanze positive almeno un ramo positivo • per le istanze negative, tutti i rami negativi 1 Macchina di Turing non deterministica. 2 5 NP 2.2 Complementare-N P Proprio a seguito delle considerazione fatte in 2.1, si ottiene la classe complementare ad • Ci sono certicati solo per le istanze negative • la NTM ha: P N P. per le istanze negative, almeno un ramo per le istanze positive tutti i rami positivi è contenuto in co-N P si dimostra attraverso in certicato fasullo (cfr. 2). L'intersezione tra le classi di problemi NP e co-N P , si chiamano problemi ben caratterizzati. Figura 1: P e NP Figura 2: co-N P 2 6 NP Figura 3: Problemi ben caratterizzati Pspace 2.3 Pspace è la classe dei problemi che si risolvono usado un numero polinomiale di celle. Dimostro che • n N P ⊆ Pspace ; l'algoritmo TM esaustivo usa: celle per l'istanza • p(n) celle per il certicato • φ(n) celle per riconoscere la relazione Siccome in un tempo polinomiale si usano un numero polinomiale di celle, allora anche 2.4 Exp φ(n) è un polinomio. Relazioni fra spazio e tempo è la classe di problemi che si risolvono in tempo esponenziale: Pspace ⊆ Exp Prendo un problema in Pspace , ed un algoritmo (siccome è un algoritmo, deve terminare!. cfr. denizione di algoritmo) anché questo algoritmo termini, non ci devono essere congurazioni nella macchina di Turing uguali altrimenti si entrerebbe in un ciclo senza ne. Per questo ci domandiamo: ma quante congurazioni ci sono? • |Q| stati • φ(n) • posizioni 2 simboli per ciascuna della rio: φ(n) posizioni (stiamo ragionando in bina- {0, 1}) Il numero di passi T (n) ≤ |Q|φ(n)2φ(n) ; ci sono meno passi che congurazioni. 3 7 Inviluppo convesso 3 Inviluppo convesso Dati n punti sul piano determinare se sia possibile tramite una gura toccare tutti i punti più esterni ed iglobare al suo interno i restanti; si tratta di un problema di ricerca. Il problema dell'ordinamento è trasformabbile nel problema dell'inviluppo convesso: Ordinamento <T IC . Passo 1 Prendo n valori Passo n+1 elaboro i valori ed ottengo una istanza dell'inviluppo convesso Passo n+2 chiamo l'oracolo Passo n+3 ottengo i valori ordinati Come funziona l'inviluppo convesso: 1. n punti [2, −5, −4, 3, 5, −2] (n1 , n21 ) [(2, 4); (−5, 25); (−4, 16); (5, 25) · · · ] 2. costruisco il quadrato come: 3. con le coordinate ottenute disegno su un piano la parabola ottenuta 4. Prendo le coordinate del quadrante positivo e poi quelle del quadrante negativo 5. (2, 4); (3, 9); (5, 25); (−5, 25) 6. tolgo i quadrati 4, 9, 25 . . . scorro i numeri rimasti, quando trovo un numero negativo lo porto all'inizio e ripeto lo scorrimento. 4 8 Esame del 21 Aprile 2006 4 Esame del 21 Aprile 2006 4.1 Domanada 1 Spiegare che cosa signica che un problema è in NP e quali conseguenze questo ha sulla possibilità di risolverlo. Un problema è in • un certicato • una relazione: NP quando esiste: ∆, R ⊆ I × ∆, cioè una relazione che associa ad una istanza del problema un certicato, • ed un polinomio p(.), tali che: 1. la relazione R è riconoscibile in tempo polinomiale 2. ogni istanza positiva è in relazione che almeno un certicato 3. nessuna istanza negativa è in relazione con un certicato 4. la dimensione del certicato è al più p(.) della dimensione dell'istanza Riguardo alla possibilità di risolvero, è possibile con una macchina di Turing non deterministica risolverlo in tempo polinomiale. Dire che cosa signica che un problema è indecidibile. Può un problema in NP essere indecidibile? Motivare la risposta. Un problema N P non è indecidibile 2 in quanto, attraverso la TM, si f (n) possono provare tutti i possibili certicati in un tempo O 2 ; un tempo si esponenziale ma che ci garantisce la non indecidibilità di questa classe di problemi. 4.2 Domanda 4 Dimostrare le seguenti aermazioni, fornendo per ciascuna gli opportuni valori delle relative costanti. 2 Un problema si dice tale se non esistono istanze per le quali la Turing Machine da una soluzione 5 9 Esame del 21 Aprile 2005 1. 3n ∈ / O(2n ) 2. n2 + 2 sin πn ∈ Θ(n2 ) Soluzione 1: 3n ∈ / O(2n ) ∃c > 0, n0 ∈ N+ : T (n) ≤ cf (n) ∀n ≥ n0 ∃n ≥ n0 : T (n) > cf (n) ∀c > 0∀n0 > n n n 3 3 n n 3 > c2 ⇐⇒ > c ⇐⇒ log 3 > log 3 c 2 2 2 2 l m Pongo n = max n0 , log 3 c 2 Soluzione 2: n2 + 2 sin πn ∈ Θ(n2 ) ∃c1 , c2 ∈ R+ , n0 ∈ N+ : 0 ≤ c1 f (n) ≤ T (n) ≤ c2 f (n) 1 Pongo c1 = , c2 = 5 2 1 2 n ≤n2 + 2n sin πn ≤ 5n2 2 1 − n2 ≤n2 − 2n sin πn ≤ 0 vericata. 2 5 ∀n ≥ n0 Esame del 21 Aprile 2005 5.1 Domanda 1 N P -completi. Perché N P -completo? Motivare la risposta. Denire lo spazio dei problemi le un problema Un problema si dice N P -completo quando N P. si può denire dici- tutti i problemi di N P, si possono ridurre a quel problema in Un problema N P -completo, viene denito dicile perché se riesco a risol- verlo, risolvo automaticamente tutti i problemi che a lui si riducono. 5 10 Esame del 21 Aprile 2005 Che relazione esiste fra un generico problema N P -completo e il problema di soddisfacibilità (SAT)? Esempio: tutti i problemi di NP si riducono al problema generico perché è appunto completo quindi anche SAT essendo blema NP Pg , si riduce al pro- Pg . Tutti i problemi NP si riducono a SAT (cfr. dimostrazione di Cook) quindi vale anche il viceversa. 5.2 Domanda 2 Descrivere la macchina di Turing. È denita da una settupla: T M = (Q, q0 , A, Γ, Σ, b, δ). • Q Un insieme nito di stati tra cui q0 ∈ Q, rappresenta lo stato iniziale A ⊆ Q rappresenta un sottoinsieme degli starti accettanti • Γ un alfabeto di lavoro che contiene l'alfabeto di ingresso simbolo speciale • blank: ed un Γ ⊇ Σ ∪ {b} un nastro suddiviso in celle, ogni cella contiene un solo simbolo tratto da • b, Σ Γ una posizione corrente di lettura: testina. Indicare in che cosa consistono la risorsa tempo e la risorsa spaio nella macchina di Turing • La risorsa spazio, è rappresentata dal numero di celle scritte prima di arrestarsi. • La risorsa tempo, è rappresentata dal numero di passi prima di arrestarsi Che cosa signica che una macchina è polinomialmente equivalente alla macchina di Turing (cfr. 8.1 a Pagina 16). 5 11 Esame del 21 Aprile 2005 Inventare una macchina di Turing che risolva il seguente problema: dato un numero intero (codicato in forma binaria), indicare se esso è strettamente maggiore di 3. Ricerco le istanze del tipo: • · · · 0000: 0 • · · · 0001: 1 • · · · 0010: 2 [0/D] q0 q3 [0/D] q1 [b, D] [b, D] [1/D] q2 q4 [0, D] Tabella 1: Funzione di transizione Q × Γ Q × Γ × {S, D} (q0 , 0) (q1 , 0, D) (q0 , 1) non denita (q1 , 0) (q1 , 0, D) (q1 , 1) (q2 , 1, D) (q2 , 1) non denita (q2 , 0) (q4 , 0, D) (q3 , 0) non denita (q3 , 1) non denita (q4 , 1) non denita (q4 , 0) non denita (q4 , b) (q3 , b, D) 6 12 Esame del 6 Giugno 2005 Q = {q0 , q1 , q2 , q3 , q4 } A = {q1 , q3 , q4 } Σ = {0, 1} Γ = {0, 1, b} Nella macchina di Turing, la risorsa tempo è data dal numero di passi prima di arrestarsi; mentre la risorsa spazio, è il numero di celle scritte prima di arrestarsi. 5.3 Domanda 4 Inviluppo convesso (cfr. 3). 6 Esame del 6 Giugno 2005 6.1 Domanda 1 Spiegare che cosa signica dal punto di vista formale risolvere un problema. Dato un problema P, cioè un insieme di istanze, la risoluzione di questo, signica trovare un algoritmo che associ ad ogni istanza I la stringa soluzio- ne. Per i problemi di decisione, signica riconoscere le istanze positive. Dire che cosa si intende con algoritmo e se sia possibile risolvere con un opportuno algoritmo qualsiasi problema. Con algoritmo si intende una sequenza di operazioni: • limitate, • eseguibili in un tempo nito, • meccanicamente determinate dall'istanza. Esistono problemi che non hanno algoritmi risolutori, percui la risposta è negativa. 7 13 Esame del 14 Luglio 2005 Descrivere il procedimento della diagonalizzazione di Cantor e dire che ruolo svolge tale procedimento nel denire se sia possibile risolvere qualsiasi problema con un opportuno algoritmo. Ipotesi I sottoinsiemi di P (dei problemi), siano numerabili Passo 1 Creo una matrice dove ogni riga contiene un problema Passo 2 Creata la matrice, isolo la diagonale principale (è un sottoinsieme P dei problemi) e ne faccio il complemento Passo 3 Adesso posso concludere che il complemento della diagonale non è presente nella matrice dei problemi Conclusioni I sottoinsiemi di P non si possono tabellare. Tramite la diagonalizzazione di Cantor, si dimostra che i problemi non sono numerabili; di conseguenza siccome le Turing macchine possono essere codicate come interi, non sono numerabili; conclusione: non è possibile che per ogni problema ci sia un algoritmo risolutore. Il modello computazionale adottato può inuire sulla risposta? No, in quanto ogni problema può essere codicato tramite la macchina di Turing, essendo la macchina più potente; di conseguenza con altri modelli non c'è nessuna speranza. 7 Esame del 14 Luglio 2005 7.1 Domanda 1 Descrivre una macchina di Turign che risolva il seguente problema di decisione. Dato un alfabeto a 4 simboli (0,1,2,3), stabile se la stringa in ingresso contiene triplette proprie, vale a dire sequenze di tre simboli identici non contenute in sequenza di lunghezza superiore. 7 14 Esame del 14 Luglio 2005 1 q1 1 q2 b q3 q4 1 1 q0 1 q5 1 q6 b q7 q8 1 1 1 q9 1 q10 1 q13 b q11 1 q14 q12 b q15 q16 Anché la macchina di Turing sia perfettamente conforme alle speciche, si dovrebbe complicarla parecchio; questa è una versione semplicata leggermente diorme dalle speciche. Q = {q0 , q1 , · · · , q16 } A = {q4 , q8 , q12 , q16 , } Σ = {0, 1, 2, 3, 4} Γ = {0, 1, 2, 3, 4, b} Che cosa signica che un algoritmo ha complessità ottimale? 7.2 Domanda 4 Dimostrare le seguenti aermazioni, fornendo per ciascuna gli opportuni valori delle relative costanti. 1. n2 ∈ Ω(n2 + 1) 2. n3 ∈ Θ(n3 − 3n2 + 3n − 1) 3. log n ∈ / Ω(n3 ) 4. 10n + 2 log n ∈ / O(log n2 ) 7 15 Esame del 14 Luglio 2005 Soluzione 1: 1 2 n0 va bene qualsiasi. Pongo c= n2 ∈ Ω(n2 + 1) ∃c ∈ R+ , n0 ∈ N+ : T (n) ≤ cf (n) n2 1 n2 ≤ + 2 2 1 n2 + 2 Pongo n0 = 1 ∀n ≥ n0 Soluzione 2: n3 ∈ Θ(n3 − 3n2 + 3n − 1) ∃c1 , c2 ∈ R+ , n0 ∈ N+ : 0 ≤ c1 f (n) ≤ T (n) ≤ c2 f (n) 1 1 3 Pongo c1 = (n − 3n2 + 3n − 1) ≤ n3 ≤ n3 2 2 1 1 3 3 2 3 n − n + n− ≥0 2 2 2 2 n3 − 3n2 + 3n − 1 ≥ 0 3 2 Come x − 3x + 3x − 1 ≥ 0 ∀n ≥ n0 Calcolo la derivata: ( 0 f(2) = 12 − 12 + 3 = 3 0 f(x) = 3x2 − 6x + 3 positivo, le due soluzioni sono: Pongo Verico con: x1 = 0; x2 = 2. 1 n0 = 3; c1 = ; c2 = 4. 2 n0 = 3 1 (27 − 18 − 9 − 1) ≤27 ≤ 4 · (27 − 18 + 9 − 1) 2 1 (17) ≤27 ≤ 4 · (17) 2 d9e <27 < 68 8 16 Esame del 13 Settembre 2004 Soluzione 3: 3 log n ∈Ω(n / ) + + @c ∈ R , n0 ∈ N : T (n) ≥ cf (n) ∀n ≥ n0 + Posso esprimerlo come: ∃c ∈ N : T (n) < cf (n) ∃c ∈N+ : log n > cn3 + Vero per ogni valore di N Soluzione 4: 10n + 2 log n ∈ / O(log n2 ) ∃c > 0, n0 ∈ N+ : T (n) ≤ cf (n) ∀n ≥ n0 In questo caso però: @c > 0, n0 ∈ N+ : Posso 8 T (n) ≤ cf (n) ∀n ≥ n0 + esprimerlo come: ∃c ∈ N : T (n) > cf (n) + 2 Pongo c = 1 ∃c ∈ N : 10n + 2 log n > log n Esame del 13 Settembre 2004 8.1 Domanda 1 Precisare che cosa si intende per complessità computazionale nel caso della macchina di Turing. Nel caso della macchina di Turing, la complessità è data dal tempo e dallo spazio impiegato dalla macchina per risolvere l'istanza peggiore. Il tempo è dato dal numero di stati della macchina, lo spazio è dato dalla lunghezza del nastro. Che cosa signica che la maggior parte degli altri modelli computazionali sono polinomialmente equivalenti alla macchina di Turing? Perché questa proprietà ci avvantaggia nello studio degli algoritmi?. p(.) e q(.) indipendente dall'istanza I , risolve I in certo tempo T (I) ed in un certo Signica che esiste un polinomio tale che se la Turing machine S(I), allora questo altro modello, equivavalente, la risolve in un tem≤ p(T(I) ) e spazio ≤ q(S(I) ) quindi c'è un legame tra le varie macchine, spazio po 8 17 Esame del 13 Settembre 2004 questo ci avvantaggia in quanto possiamo risolvere gli stessi problemi, indipendentemente da quale macchina si usi. Denire formalmente una TM che segnala la presenza del simbolo 1 nella stringa in ingresso, che si assume codicata un alfabeto binario. Tabella 2: Funzione di transizione 1/0 1 Q × Γ Q × Γ × {S, D} (q0 , 0) (q1 , 0, D) (q0 , 1) (q2 , 1, D) (q1 , 0) (q1 , 0, D) (q1 , 1) (q2 , 1, D) (q2 , 1) (q2 , 1, D) (q2 , 0) (q2 , 0, D) (q, γ) non denita q2 1 q0 0 0 q1 Q = {q0 , q1 , q2 } A = {q2 } Σ = {0, 1} Γ = {0, 1, (b = γ)} 8.2 Domanda 3 Che cosa si inende aermando che il tempo di calcolo di un algorimto è Θ(f (n))? Si intende che la complessità asintotica dell'algoritmo, T (n) ∈ Θ(f (n)) cioè: ∃c1 , c2 ∈ R+ , n0 ∈ N+ : 0 ≤ c1 f (n) ≤ T (n) ≤ c2 f (n) ∀n ≥ n0 9 18 Esame del 4 Novembre 2004 9 Esame del 4 Novembre 2004 9.1 Domanda 1 Spiegare che cosa si intende con complessità computazionale di un problema, in particolare rispetto al tempo, e di quali aspetti bisogna tener conto nel denirla. La complessità di un problema rispetto al tempo, è data dal miglior algoritmo possibile che risolva quel problema. Il tempo risultante dalla computazione, è la miglior complessità rispetto al tempo di quel problema. Quando si dice che u problema è dicile Un problema per noi è dicile quando non è trattabile, quindi è esponenziale. Denire lo spazio dei problemi NP (cfr. 5.1 a Pagina 9). Il fatto che un problama sia in No se un problema è in NP lo rende automaticamente dicile N P , non è datto che sia automaticamente dicile (cfr. Figura 1 a Pagina 5). 9.2 Domanda 2 Denire il concetto di riduzione fra problemi diversi. Con riduzione polinomiale di un problema P in P 0 : P ≤R P 0 , si intende P in tempo polinomiale una macchina dotata di oracolo, OTM che risolve 3 0 per P , un numero polinomiale di volte. consultando un oracolo Esempio: • Ordinamento • Confronto Se so confrontare posso anche ordinare. 3 Nel caso della trasformazione polinomiale, l'oracolo viene consultato solo una volta. 10 19 Esame del 31 Ottobre 2006 Tin + TO + Tf in · p (1) L'equazione (1), rappresenta la velocità di risoluzione, che è data da un tempo di recupero dei dati, sommato al tempo di richista dell'oracolo sommato ad un tempo nale per il riassemblaggio della soluzione tutto questo un numero polinomiale di volte. 10 10.1 Esame del 31 Ottobre 2006 Domanda 1 Il seguente problema di decisione è noto come problema del cammino hamil- toniano : dato un grafo orientato G = (N, A) e due nodi s, t ∈ N , esiste in G s, percorra tutti i nodi in N s, t una e una un cammino orientato che parta da sola volta e raggiunga il nodo t? Si disegnino due gra che corrispondono, rispettivamente, a un'istanza positiva e a un'istanza negativa del problema. Si progetti per induzione un algoritmo che risolva il problema con la forza bruta nel caso base in cui il grafo ha n = |N | = 2 nodi e n − 1 nodi per ogni saperlo risolvere nel caso di un grafo di che assuma di scelta di s e t. Si scriva uno pseudocodice dell'algoritmo, indicando le istruzioni destinate a risolvere il caso base, quelle che riducono il problema corrente al/ai sottoproblema/i di dimensione ridotta e quelle che costruiscono la soluzione del problema corrente a partire dalle soluzioni del/dei sottoproblema/i. Si valuti la complessità dell'algoritmo stesso, impostando la discussione con le tecniche trattate nel corso. 10.2 Domanda 2 Denire la complessità computazionale di un problema. Denire le classi di complessità P e NP e illustrare le relazioni che le legano, se ve ne sono. Mostrare che il problema del cammino hamiltoniano, descritto nella domanda 1, appartiene a N P , proponendo una denizione per l'insieme dei certicati e per la procedura che riconosce la validità del certicato stesso. Fare qualche (I, ∆) valida e non valida. Si denisca il concetto di problema N P -completo e se ne fornisca un esempio. esempio di coppia istanza-certicato (crf. 2 a Pagina 4); mentre un legame tra P e NP è: P ⊆ N P. 11 Esame del 19 Settembre 2006 (CA) 11 20 Esame del 19 Settembre 2006 (CA) Esame di Complementi di algoritmi. Solo la domanda 1 11.1 Domanda 1 Si consideri il semplice algoritmo iterativo che, dato un numero naturale ne calcola l fattoriale a n n!, n, moltiplicando fra loro tutti i numeri naturali da 1 compreso. Si fornisca lo pseudocodice dell'algoritmo e si indichino: 1. l'invariante di ciclo che ne garantisce la correttezza 2. la misura della distanza che consente di vericare il raggiungimento della soluzione e il corrispondente test di ne 3. il modo con cui viene istituiti l'invariante 4. il modo in cui viene conservato l'invariante e ridotta la distanza Si tracci la dimostrazione di correttezza dell'algoritmo (non è necessario sviluppare tutti i punti, occorre però indicarli tutti). 12 1 Fattoriale ( n ) 3 i =1; Fatt =1; 5 21 Esame del 27 Gennaio 2005 (CA) while ( i <= n ) 7 Fatt = Fatt * i ; i = i + 1; 9 return Fatt ; 11 Codice 1: Esempio Fattoriale Esecuzione con 1a iterazione 1≤5 F att = 1 · 1 i=1+1 n = 5: 2a iterazione 2≤5 F att = 1 · 2 i=2+1 3a iterazione 3≤5 F att = 2 · 3 i=3+1 4a iterazione 5a iterazione f ine 4≤5 5≤5 F att = 6 · 4 F att = 24 · 5 FINE i=4+1 - Soluzione (1): l'invariante di ciclo che ne garantisce la correttezza: zione, ho i fattoriale di F att =!i; ad ogni itera- i. Soluzione (2): La diminuzione della distanza, è garantira dalla riga 9: con la riga 6: i≤n i=i+1 combinata che ne garantisce il test di ne. Soluzione (3): L'istituzione dell'invariante è data dalle righe 3 e 4: i=1 e F att = 1. Soluzione (4): La conservazione dell'invariante è data dalla riga 8 mentre la riduzione della distanza è il passo (2). 12 Esame del 27 Gennaio 2005 (CA) Indicare brevemente a parole (senza formule) quale invariante di ciclo garantisce la correttezza dell'algoritmo di Euclide per il calcolo del Massimo Comune Divisore (MCD) di due interi dati a e b, come viene istituito e quale stato nale consente di interrompere l'esecuzione e restituire la soluzione del 12 Esame del 27 Gennaio 2005 (CA) 22 problema. Indicare quali fra le seguenti implementazioni di tale algoritmo funzionano, e suggerire una semplice correzione per ciascun caso scorretto. 1 3 5 Euclide1 (a , b ) while ( a != b ) do if ( a > b ) then a := b - a ; else b := a - b ; return a ; 7 9 11 13 Euclide2 (a , b ) while ( a != b ) do if ( a > b ) then a := a - b ; else b := b - a ; return b ; 15 17 19 21 Euclide3 (a , b ) while ( a != b ) do if ( a > b ) then b := a - b ; else a := b - a ; return a ; Codice 2: MCD Euclide ( M CD(ai , bi ) = M CD(a, b) δi = 0 ⇔ ai = bi Euclide (1): Esecuzione con a = 12; b = 4: 1a iterazione f ine 12 ≥ 4 a = 4 − 12 = 8 FINE b = 12 − 4 = 8 Non conserva l'invariante,non riduce la distanza. Euclide (2): è una implementazione corretta Euclide (2): Non conserva l'invariante, non riduce la distanza.