La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi e Dimostrazioni Stefano Berardi Università di Torino

Presentazioni simili


Presentazione sul tema: "Algoritmi e Dimostrazioni Stefano Berardi Università di Torino"— Transcript della presentazione:

1 Algoritmi e Dimostrazioni Stefano Berardi Università di Torino

2 Un po di terminologia Un algoritmo è un procedimento meccanico, affidabile a un calcolatore, per ottenere un certo risultato: è uno strumento di uso pratico. Una dimostrazione è invece un argomento rigoroso per mostrare, senza possibilità di dubbio, la verità di una certa affermazione matematica: è uno strumento concettuale.

3 Argomento della conferenza Algoritmi e dimostrazioni sono oggetti di uso molto diverso. Mostreremo tuttavia come, in vari casi, una dimostrazione si possa leggere come un algoritmo, e quindi essere usata per risolvere dei problemi pratici. Tale nuova lettura delle dimostrazioni matematiche, prevista dalla Logica, è stata sviluppata grazie allInformatica.

4 Sommario Daremo esempi di dimostrazioni fatte per Induzione che si possono usare per risolvere dei problemi. 1. Le dimostrazioni per induzione. 2. La prova di Euclide che esistono infiniti numeri primi. 3. Un algoritmo di ordinamento. 4. Un risultato generale.

5 1. Dimostrazioni per induzione Linduzione è una regola per dimostrare enunciati del tipo: ogni numero naturale ha una certa proprietà P. Un esempio (facile): possiamo utilizzare la regola di induzione per dimostrare: ogni numero naturale è pari oppure dispari.

6 Regola di Induzione. (Passo base) Supponiamo di aver dimostrato che 0 soddisfa la proprietà P. (Passo Induttivo) Supponiamo di aver anche dimostrato, per ogni numero naturale n, che se n soddisfa P anche n+1 soddisfa P. (Conclusione) Allora ogni numero naturale soddisfa P.

7 Perché P vale per ogni n? 0 soddisfa P. Se 0 soddisfa P, anche 1=0+1 soddisfa P. Dunque 1 soddisfa P. Se 1 soddisfa P, anche 2=1+1 soddisfa P. Dunque 2 soddisfa P. Se 2 soddisfa P, anche 3=2+1 soddisfa P. Dunque 3 soddisfa P. Se 3 soddisfa P, anche 3=2+1 soddisfa P. Dunque 4 soddisfa P. ………………… eccetera …………………

8 Un Esempio (facile) Proviamo che ogni numero naturale è pari o dispari. (Passo base) 0 è pari, dunque pari o dispari. (Passo Induttivo) Se n è pari, allora n+1 è dispari, e se n è dispari, allora n+1 è pari. Dunque: se n è pari o dispari, anche n+1 è pari o dispari.

9 Un Esempio (continua) Concludiamo, per la Regola di Induzione, che la proprietà P essere pari o dispari vale per ogni n. Lo sapevamo già, ma non importa: volevamo solo spiegare come si usa la regola.

10 Perché P vale per ogni n? 0 è pari o dispari. Se 0 è pari o dispari, allora 1=0+1 è pari o dispari. Dunque 1 è pari o dispari. Se 1 è pari o dispari, allora 2=1+1 è pari o dispari. Dunque 2 è pari o dispari. Se 2 è pari o dispari, allora 3=2+1 è pari o dispari. Dunque 3 è pari o dispari. Se 3 è pari o dispari, allora 4=3+1 è pari o dispari. Dunque 4 è pari o dispari. ………… eccetera …………

11 2. La Prova di Euclide. Negli Elementi di Geometria, Euclide prova che esistono infiniti numeri primi. La prova contiene un algoritmo (non molto efficiente, per la verità), per generare infiniti numeri primi.

12 Dimostrazione per induzione Proveremo per Induzione che, per ogni n, esistono almeno n+1 primi (distinti tra loro). Dobbiamo provare che esiste almeno un numero primo, e che se ne esistono almeno n+1, allora ne esistono almeno (n+1)+1=n+2 (almeno uno in più).

13 Dimostrazione per Induzione: passo base Esiste almeno un numero primo, il numero 2.

14 Dimostrazione per Induzione: passo induttivo Supponiamo che esistano n+1 primi: p 1, p 2, p 3, …, p n+1 Sia X = (p 1 p 2 p 3 …p n+1 + 1). X diviso p i fa (p 1 …p i-1 p i+1 …p n+1 ), con resto 1. Dunque nessun p i divide esattamente X, cioè nessun p i è fattore primo di X.

15 Dimostrazione per Induzione: passo induttivo (segue) Segue che ogni fattore primo di X è distinto da p 1, p 2, p 3, …, p n+1. Sia p n+2 il minimo fattore primo di X. Allora p 1, p 2, p 3, …, p n+1, p n+2 sono n+2 primi distinti.

16 Lalgoritmo nascosto nella prova di Euclide. Partiamo con una lista di un solo primo, p 1 = 2. Sia X = (prodotto del solo 2) + 1 = 2+1=3. Il minimo fattore primo di X, cioè 3, è il secondo primo nella nostra lista. Sia X =2. 3+1=7. Il minimo fattore primo di X, cioè 7, è il terzo primo della nostra lista.

17 Lalgoritmo nascosto nella prova di Euclide (segue) La lista dei primi prosegue con: X= = 43, p 4 = 43 X= = 1807 = p 5 = 13 X= = = p 6 = 53 Il procedimento trova dunque infiniti numeri primi (non trova però tutti i numeri primi, ma solo alcuni, disposti per di più in modo bizzarro).

18 3.Un algoritmo di ordinamento (ottenuto da una dimostrazione) Daremo un esempio di una prova per induzione corrispondente ad un algoritmo di ordinamento. Per la cronaca, lalgoritmo di ordinamento che otterremo porta il nome di InsertSort.

19 Cosè un algoritmo di ordinamento Un algoritmo di ordinamento prende una lista di oggetti (per esempio, una lista di nomi), e la dispone seguendo un certo ordine (per esempio, quello alfabetico), senza aggiungere né togliere elementi. Si tratta di un procedimento che viene ampiamente usato in Informatica.

20 Un Esempio. Sia L una lista di nomi: Gabriele, Eloisa, Emanuele, Federico Una versione ordinata L di L è: Eloisa, Emanuele, Federico, Gabriele

21 Dimostrazione: una lista può sempre essere ordinata. Proviamo per induzione che, per ogni n, ogni lista L di n+1 elementi ha una versione ordinata L. Dobbiamo provare che una lista di 1 elemento ha una versione ordinata, e che se le liste di n+1 elementi hanno versioni ordinate, allora anche le liste di (n+1)+1=n+2 elementi hanno versioni ordinate.

22 Passo base. Una lista L di 1 elemento è già ordinata. Infatti L non ha due elementi, e dunque, a maggior ragione, non ha due elementi in ordine errato (largomento può apparire paradossale, ma è logicamente corretto).

23 Passo Induttivo. Sia L = a 1, a 2, a 3, …, a n+1 una lista di n+1 elementi, M = L, a n+2 una lista di n+2 elementi. Supponiamo che L abbia una versione ordinata L= b 1, b 2, b 3, …, b n+1. Dobbiamo definire una versione ordinata M della lista M.

24 Passo Induttivo (segue) Inseriamo a n+2 entro L, dopo tutti gli elementi b 1, …, b i, che precedono a n+2 nellordine, ma prima di tutti gli elementi b i+1, …, b n+1 che seguono a n+2. Sia M = b 1, …, b i, a n+2, b i+1, …, b n+1 M è una versione ordinata di M. Infatti in M vengono prima gli elementi di L precedenti a n+2, nel loro ordine, poi a n+2 stesso, poi gli elementi di L che seguono a n+2, sempre nel loro ordine.

25 Lalgoritmo nascosto nella prova di ordinamento. Sia L = Gabriele, Eloisa, Emanuele, Federico, una lista di nomi. Utilizzeremo la prova di ordinamento come algoritmo per ordinare L (in ordine alfabetico).

26 Lalgoritmo di ordinamento (passo 1) La lista di 1 elemento L 1 = Gabriele viene lasciata comè.

27 Lalgoritmo di ordinamento (passo 2) Sia L 2 = L 1, Eloisa = Gabriele, Eloisa Si inizia col dividere L 1 in due parti: i nomi che precedono Eloisa nellordine alfabetico (la lista vuota), e i nomi che seguono Eloisa (il solo Gabriele). Quindi si forma la lista ordinata L 2 = Eloisa, Gabriele ponendo prima i nomi precedenti Eloisa, poi Eloisa stessa, infine i nomi che seguono Eloisa.

28 Lalgoritmo di ordinamento (passo 3) Sia L 3 = L 2, Emanuele = Eloisa, Gabriele, Emanuele. Si inizia col dividere L 2 in due parti: i nomi che precedono Emanuele nellordine alfabetico (la sola Eloisa), e i nomi che seguono Emanuele (il solo Gabriele).

29 Lalgoritmo di ordinamento (segue passo 3) Quindi si forma la lista ordinata L 3 = Eloisa, Emanuele, Gabriele ponendo prima i nomi precedenti Emanuele, poi Emanuele stesso, infine i nomi che seguono Emanuele

30 Lalgoritmo di ordinamento (passo 4) Sia L 4 = L 3, Federico = Eloisa, Emanuele, Gabriele, Federico. Si inizia col dividere L 3 in due parti: i nomi che precedono Federico nellordine alfabetico (Eloisa e Emanuele), e i nomi che seguono Federico (il solo Gabriele).

31 Lalgoritmo di ordinamento (passo 4 e fine) Quindi si forma la lista ordinata L 4 = Eloisa, Emanuele, Federico, Gabriele ponendo prima i nomi precedenti Federico, poi Federico stesso, infine i nomi che seguono Federico.

32 4. Un risultato generale Un logico, G. Kreisel, ha provato nel 1960 che ogni dimostrazione matematica dellesistenza di un oggetto con proprietà decidibili (=verificabili mediante un procedimento meccanico) può essere letta come un algoritmo. Tale algoritmo utilizza effettivamente le idee contenute nella dimostrazione stessa.

33 Un esempio di applicazione del Teorema di Kreisel Lenunciato esiste una versione ordinata L di una lista L data afferma lesistenza di un oggetto, L, con una proprietà decidibile, essere ordinata. Dunque ogni prova per induzione di tale proprietà, contiene, per il per il Teorema di Kreisel, un metodo per costruire tale versione ordinata L di L.

34 Conclusioni In questa conferenza abbiamo visto come la regola di Induzione abbia una lettura come algoritmo abbastanza intuitiva. Il Teorema di Kreisel, però, ci dice che la stessa lettura è possibile per tutte le dimostrazioni dellesistenza di un oggetto con proprietà decidibili, anche per quelle che utilizzano ragionamenti per assurdo, in cui la lettura come algoritmo non è affatto evidente (pero cè).

35 Uno Slogan Dimostrazioni di esistenza di un x avente una proprietà P = un algoritmo che trova tale x + una prova che x soddisfa P (purché la proprietà P sia decidibile).

36 Estrazione di Programmi da Prove Esistono vari sistemi di sviluppo di dimostrazione al calcolatore, come il francese Coq. Essi consentono di scrivere una dimostrazione al calcolatore, quindi di controllarne la correttezza logica, infine di produrre automaticamente lalgoritmo associato alla prova stessa.


Scaricare ppt "Algoritmi e Dimostrazioni Stefano Berardi Università di Torino"

Presentazioni simili


Annunci Google