algoritmi e dimostrazioni stefano berardi
Download
Skip this Video
Download Presentation
Algoritmi e Dimostrazioni Stefano Berardi

Loading in 2 Seconds...

play fullscreen
1 / 36

Algoritmi e Dimostrazioni Stefano Berardi - PowerPoint PPT Presentation


  • 134 Views
  • Uploaded on

Algoritmi e Dimostrazioni Stefano Berardi. Università di Torino http://www.di.unito.it/~stefano E-mail: [email protected] Un po’ di terminologia. Un algoritmo è un procedimento meccanico, affidabile a un calcolatore, per ottenere un certo risultato: è uno strumento di uso pratico.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Algoritmi e Dimostrazioni Stefano Berardi' - tiger-carter


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
algoritmi e dimostrazioni stefano berardi

Algoritmi e DimostrazioniStefano Berardi

Università di Torino

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

E-mail: [email protected]

un po di terminologia
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.
argomento della conferenza
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.
sommario
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.
1 dimostrazioni per induzione
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”.
regola di induzione
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.
perch p vale per ogni n
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 …………………
un esempio facile
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.
un esempio continua
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.
perch p vale per ogni n1
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 …………
2 la prova di euclide
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.
dimostrazione per induzione
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ù).
dimostrazione per induzione passo base
Dimostrazione per Induzione: passo base
  • Esiste almeno un numero primo, il numero 2.
dimostrazione per induzione passo induttivo
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.
dimostrazione per induzione passo induttivo segue
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.
l algoritmo nascosto nella prova di euclide
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.
l algoritmo nascosto nella prova di euclide segue
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).
3 un algoritmo di ordinamento ottenuto da una dimostrazione
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.
cos un algoritmo di ordinamento
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.
un esempio
Un Esempio.
  • Sia L una lista di nomi:

Gabriele, Eloisa, Emanuele, Federico

  • Una versione ordinata L’ di L è:

Eloisa, Emanuele, Federico, Gabriele

dimostrazione una lista pu sempre essere ordinata
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.
passo base
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).
passo induttivo
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.
passo induttivo segue
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+1che 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.
l algoritmo nascosto nella prova di ordinamento
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).
l algoritmo di ordinamento passo 1
L’algoritmo di ordinamento (passo 1)
  • La lista di 1 elemento L1 = Gabrieleviene lasciata com’è.
l algoritmo di ordinamento passo 2
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.
l algoritmo di ordinamento passo 3
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).
l algoritmo di ordinamento segue passo 3
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
l algoritmo di ordinamento passo 4
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).
l algoritmo di ordinamento passo 4 e fine
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.
4 un risultato generale
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.
un esempio di applicazione del teorema di kreisel
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.
conclusioni
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’è).
uno slogan
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).

estrazione di programmi da prove
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.
ad