Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: [email protected].

36
Algoritmi e Dimostrazioni Stefano Berardi Università di Torino http://www.di.unito. it /~ stefano E-mail: [email protected]

Transcript of Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: [email protected].

Page 1: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Algoritmi e Dimostrazioni Stefano Berardi

Università di Torino

http://www.di.unito.it/~stefano

E-mail: [email protected]

Page 2: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 3: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 all’Informatica.

Page 4: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 5: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

1. Dimostrazioni per induzione

• L’induzione è 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”.

Page 6: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 7: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 …………………

Page 8: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 9: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 10: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 …………

Page 11: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 12: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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ù).

Page 13: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Dimostrazione per Induzione: passo base

• Esiste almeno un numero primo, il numero 2.

Page 14: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Dimostrazione per Induzione: passo induttivo• Supponiamo che esistano n+1 primi:

p1, p2, p3, …, pn+1

• Sia X = (p1p2p3…pn+1 + 1). X diviso pi fa (p1…pi-1pi+1…pn+1), con resto 1.

• Dunque nessun pi divide esattamente X, cioè nessun pi è fattore primo di X.

Page 15: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Dimostrazione per Induzione: passo induttivo (segue)

• Segue che ogni fattore primo di X è distinto da p1, p2, p3, …, pn+1.

• Sia pn+2 il minimo fattore primo di X. Allora p1, p2, p3, …, pn+1 , pn+2 sono n+2 primi distinti.

Page 16: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo nascosto nella prova di Euclide.• Partiamo con una lista di un solo primo, p1

= 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.

Page 17: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo nascosto nella prova di Euclide (segue)

• La lista dei primi prosegue con:• X= 2.3.7+1 = 43, p4= 43• X= 2.3.7.43+1 = 1807 = 13.139 p5= 13• X= 2.3.7.43.13+1= 23479 = 53.443 p6= 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).

Page 18: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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, l’algoritmo di ordinamento che otterremo porta il nome di InsertSort.

Page 19: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 20: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Un Esempio.

• Sia L una lista di nomi:

Gabriele, Eloisa, Emanuele, Federico

• Una versione ordinata L’ di L è:

Eloisa, Emanuele, Federico, Gabriele

Page 21: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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.

Page 22: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 (l’argomento può apparire paradossale, ma è logicamente corretto).

Page 23: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Passo Induttivo.

• Sia L = a1, a2, a3, …, an+1 una lista di n+1 elementi, M = L, an+2 una lista di n+2 elementi.

• Supponiamo che L abbia una versione ordinata L’= b1, b2, b3, …, bn+1. Dobbiamo definire una versione ordinata M’ della lista M.

Page 24: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Passo Induttivo (segue)

• Inseriamo an+2 entro L’, dopo tutti gli elementi b1, …, bi, che precedono an+2 nell’ordine, ma prima di tutti gli elementi bi+1, …, bn+1 che seguono an+2 .

• Sia M’ = b1, …, bi, an+2 , bi+1, …, bn+1

• M’ è una versione ordinata di M. Infatti in M’ vengono prima gli elementi di L precedenti an+2, nel loro ordine, poi an+2 stesso, poi gli elementi di L che seguono an+2, sempre nel loro ordine.

Page 25: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo 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).

Page 26: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo di ordinamento (passo 1)

• La lista di 1 elemento L1 = Gabriele viene lasciata com’è.

Page 27: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo di ordinamento (passo 2)

• Sia L2 = L1, Eloisa = Gabriele, Eloisa • Si inizia col dividere L1 in due parti: i nomi che

precedono Eloisa nell’ordine 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.

Page 28: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo di ordinamento (passo 3)

• Sia L3 = L’2, Emanuele = Eloisa, Gabriele, Emanuele.

• Si inizia col dividere L’2 in due parti: i nomi che precedono Emanuele nell’ordine alfabetico (la sola Eloisa), e i nomi che seguono Emanuele (il solo Gabriele).

Page 29: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo 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

Page 30: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo di ordinamento (passo 4)

• Sia L4 = L’3, Federico = Eloisa, Emanuele, Gabriele, Federico.

• Si inizia col dividere L’3 in due parti: i nomi che precedono Federico nell’ordine alfabetico (Eloisa e Emanuele), e i nomi che seguono Federico (il solo Gabriele).

Page 31: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

L’algoritmo 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.

Page 32: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

4. Un risultato generale

• Un logico, G. Kreisel, ha provato nel 1960 che ogni dimostrazione matematica dell’esistenza 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.

Page 33: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

Un esempio di applicazione del Teorema di Kreisel• L’enunciato “esiste una versione ordinata

L’ di una lista L data” afferma l’esistenza 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.

Page 34: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 dell’esistenza 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’è).

Page 35: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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).

Page 36: Algoritmi e Dimostrazioni Stefano Berardi Università di Torino stefano E-mail: stefano@di.unito.it.

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 l’algoritmo associato alla prova stessa.