• Non ci sono risultati.

Correttezzadeglialgoritmi Capitolo3

N/A
N/A
Protected

Academic year: 2021

Condividi "Correttezzadeglialgoritmi Capitolo3"

Copied!
2
0
0

Testo completo

(1)

Capitolo 3

Correttezza degli algoritmi

3.1 Algoritmi iterativi

Per dimostrare la correttezza degli algoritmi iterativi si utilizza l’invariante di ciclo. L’invariante è una proposizione che riguarda riguardante i contenuti delle variabili della procedura o del programma e che rispetta le seguenti proprietà:

Inizializzazione: la proposizione vale immediatamente prima di entrare nel ciclo.

Mantenimento: se la proposizione vale prima di eseguire un’iterazione, allora vale anche al termine dell’iterazione stessa.

Terminazione: al termine del ciclo (qualora il ciclo termini), la proposizione permette di ricavare la proprietà che permette di dimostrare la correttezza dell’algoritmo.

Per provare che il ciclo termina bisogna definire una funzione strettamente decrescente ad ogni iterazione e dimostrare che non può decrescere all’infinito.

Esempio 3.1. Consideriamo l’algoritmo fibonacciIterativoModificato, del quale vogliamo dimostra- re il fatto che calcoli l’n-esimo numero di Fibonacci; l’invariante di ciclo è il seguente:

Ad ogni iterazione, b = Fi−1 e a = Fi−2

Inizializzazione: poiché i = 3, dobbiamo verificare che b = F2e a = F1; la dimostrazione è immediata, poiché b = 1 = F2 e a = 1 = F1.

Mantenimento: assumiamo l’invariante verificato per una generica i-esima iterazione e dimostriamo che esso vale anche al termine di tale iterazione; ricordiamo inoltre, nonostante non sia esplicitamente indicato, che al termine dell’iterazione viene incrementato l’indice i. Grazie alla nostra assunzione, abbiamo b = Fi−1 e a = Fi−2: alla variabile c viene assegnato il valore della somma a + b = Fi−2+ Fi−1= Fi, alla variabile a viene assegnato il valore di b = Fi−1, alla variabile b il valore di c = Fied i viene incrementata (i = i + 1); è immediato dimostrare che continua a valere l’invariante, ossia che b = F(i+1)−1 e a = F(i+1)−2.

Terminazione: all’uscita del ciclo, si ha i = n + 1, dunque b = F(n+1)−1= Fn, che è il valore restituito, come volevasi dimostrare.

3.2 Algoritmi ricorsivi

La dimostrazione viene svolta procedendo per induzione. Occorre formalizzare una proprietà utile per dimostrare la correttezza dell’algoritmo e provare che:

• valga per i casi base;

• assumendo che valga per problemi di dimensione inferiore, ossia per le chiamate ricorsive eseguite, provare che vale anche per il problema iniziale (passo induttivo).

25

(2)

26 CAPITOLO 3. CORRETTEZZA DEGLI ALGORITMI

Esempio 3.2. Consideriamo l’algoritmo fibonacciRicorsivo e formalizziamo la seguente proprietà:

L’output della chiamata di funzione fibonacciRicorsivo(n) è l’n-esimo numero di Fibonacci.

Casi base: per n = 1 e n = 2, l’algoritmo restituisce 1 = F1= F2.

Ipotesi induttiva: supponiamo che, per k < n, fibonacciRicorsivo(k) restituisca Fk.

Passo induttivo: l’algoritmo restituisce fibonacciRicorsivo(n− 1) + fibonacciRicorsivo(n − 2) (sia n > 2); per ipotesi, essi restituiscono, rispettivamente, Fn−1 e Fn−2, la cui somma è Fn, come volevasi dimostrare.

Riferimenti

Documenti correlati

A – Avanzato L’alunno/a svolge compiti e risolve problemi complessi, mostrando padronanza nell’uso delle conoscenze e delle abilità; propone e sostiene le proprie opinioni e

D6a - Sapere riconoscere in contesti di- versi il carattere misurabile di oggetti e fenomeni e saper utilizzare strumenti di misura (saper individuare l'unità o lo strumento

Licei non scientifici e Istituti professionali –

In realtà, tale disciplina trova un precedente nel Regolamento (CE) n. Esso aveva modificato la disciplina dell’esenzione per le PMI al fine di includervi anche la

D6a - Sapere riconoscere in contesti di- versi il carattere misurabile di oggetti e fenomeni e saper utilizzare strumenti di misura (saper individuare l'unità o lo strumento

Da’ a ogni giornata la possibilità di essere la più bella. della

Sviluppando negli alunni i valori della responsabilità, della partecipazione e della solidarietà verranno prese in esame le capacità del saper rispettare le regole condivise, il

Entrambi, terapeuta e paziente, sono ricondotti al momento della genesi della rappresentazione: la quale non è solo parola, immagine o gesto, ma è quel particolare stile di