Algoritmi e dimostrazioni stefano berardi
This presentation is the property of its rightful owner.
Sponsored Links
1 / 36

Algoritmi e Dimostrazioni Stefano Berardi PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Algoritmi e Dimostrazioni Stefano Berardi

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


  • Login