Algoritmi e Dimostrazioni Stefano Berardi

Slides:



Advertisements
Presentazioni simili
Corsi di allenamento 2013 Congetturare e dimostrare.
Advertisements

Ricorrenze Il metodo di sostituzione Il metodo iterativo
Il TEOREMA.
Gli Elementi di Euclide
Calcolo del minimo comune multiplo (m.c.m.) Luigi Sante
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
che cosa fa un matematico? calcoli, per esempio,  3518, (a+b)9
Specifiche Algebriche Modello Iniziale Versione 1.0 Gianna Reggio
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Integrazione Corso: Analisi Numerica Anno Accademico:
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
esponente del radicando
Il computer ragiona? Problemi e algoritmi.
Iterazione enumerativa (for)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Numeri razionali I numeri RAZIONALI sono i numeri che possono essere rappresentati come frazioni. I razionali comprendono i numeri interi e quelli decimali.
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
Modelli simulativi per le Scienze Cognitive
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Corso di Matematica Discreta cont. 2
Intelligenza Artificiale
5 febbraio 2010 Prof Fabio Bonoli
Prof. Fabio Bonoli6 maggio 2009 Quesiti per lEsame di Stato Il coefficiente binomiale.
PROBLEMI RISOLUBILI E COMPUTABILITÀ
Intelligenza Artificiale - AA 2001/2002 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
Come ragiona il computer
Logica Matematica Seconda lezione.
Metodo della moltiplicazione
GEOMETRIA EUCLIDEA o RAZIONALE
Daniele Santamaria – Marco Ventura
Radix-Sort(A,d) // A[i] = cd...c2c1
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
A cura di Maria Angela Varone.

Algoritmi e Strutture Dati
TEORIA DEGLI INSIEMI INIZIO.
Costruire una tabella pivot che riepiloghi il totale del fatturato di ogni agente per categorie di vendita, mese per mese. Per inserire una tabella pivot.
ESTENSIONI SEMPLICI e TEOREMA DELL’ELEMENTO PRIMITIVO
Numeri figurati Numeri triangolari fine
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Valutare la difficoltà dei problemi
I numeri NATURALI.
Rappresentazione dell’informazione nel calcolatore.
Calcolo letterale.
Logica Lezioni Lunedì 18 Nov. Annuncio E' possibile che dovrò rinviare delle lezioni della prossima settimana. Tenete d'occhio gli annunci.
Logica F. orilia. Lezz Lunedì 4 Novembre 2013.
Tag FRAMESET. I frame sono un particolare tipo di struttura HTML, che consente di suddividere la finestra del browser in diversi riquadri distinti. Un'insieme.
INTRODUZIONE ALLA GEOMETRIA EUCLIDEA
“o piccolo” Siano f e g entrambi infiniti o infinitesimi per
“o piccolo” Siano f e g entrambi infiniti o infinitesimi per
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP) Un commesso viaggiatore deve visitare un certo numero di città Conosce la distanza.
liceo Lioy e liceo Pigafetta, 10 febbraio 2011
Congettura di Collatz (Lothar Collatz, 1937)
GEOMETRIA EUCLIDEA NELLO SPAZIO
La logica degli enunciati interamente realizzata da GIANNUZZI SILVIA
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
6. LIMITI Definizione - Funzioni continue - Calcolo dei limiti
Analisi matematica Introduzione ai limiti
Introduzione alla LOGICA MATEMATICA Corso di Matematica Discreta. Corso di laurea in Informatica. Prof. Luigi Borzacchini III. La logica delle proposizioni.
La numerazione ottale. Il sistema di numerazione ottale ha ampio utilizzo in informatica E’ un sistema di numerazione posizionale La base è 8 Il sistema.
Lezione marzo nota su "a meno che" A meno che (non) = oppure Il dolce lo porto io (I) a meno che (non) lo porti Mario (M) I  M   I  M.
DEFINIZIONE. I multipli di un numero sono costituiti dall’insieme dei prodotti ottenuti moltiplicando quel numero per la successione dei numeri naturali.
Logica Lezione 11, Annuncio Non si terrà la lezione di Lunedì 16 Marzo.
INSIEMI E LOGICA PARTE QUARTA.
Transcript della presentazione:

Algoritmi e Dimostrazioni Stefano Berardi Università di Torino http://www.di.unito.it/~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.

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 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 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. (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? 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) 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) 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 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. 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 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 Esiste almeno un numero primo, il numero 2.

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

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) La lista di 1 elemento L1 = Gabriele viene lasciata com’è.

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