La matematica e la logica nella computer science Bari, 13 marzo 2015

Luigi Borzacchini
(Dipartimento di Matematica, Università di Bari)
La matematica e la logica nella
computer science
Bari, 18 marzo 2015
Storicamente la logica e la matematica sono alle radici
della computer science: il primo computer con
programma registrato si deve a Charles Babbage, un
matematico inglese dell’Ottocento.
Il modello teorico degli algoritmi e dello stesso
computer è la macchina di Turing, l’attuale
architettura dei computer è sostanzialmente ascritta a
John von Neumann: ebbene Turing e von Neumann
erano logici e matematici di un secolo fa, legati al più
importante approccio alla indagine matematica
all’inizio del secolo: il “formalismo”. Ed anche oggi,
tutti gli aspetti sia teorici che applicativi della
computer science hanno una base matematica,
più precisamente in un approccio ‘formalista’
Il pensiero formale
Che intendiamo per ‘formale’? La ‘forma’ contrapposta
al ‘contenuto’? Come nei temi di italiano : il contenuto
è buono, ma la forma è sgrammaticata.
O alla ‘materia’? un tavolo fatto di legno e di forma
rettangolare.
O alla ‘sostanza’? Come nel diritto in cui il ‘vizio di
forma’ annulla un procedimento sostanzialmente
ineccepibile.
‘Formale’ in matematica e nella computer science sta
per sintattico, basato sulla sola manipolazione di segni
secondo regole, mentre semantico è relativo al
significato.
formale in logica e matematica
• <Giovanni è brindisino>, <tutti i brindisini sono
pugliesi>, quindi <Giovanni è pugliese>.
• <Ogni scatola contiene 6 uova>, <ho comprato 4
scatole>, quindi <ho comprato 24 uova>.
• <Joe è un sarchiapone>, <tutti i sarchiaponi sono
sequipedali>, quindi <Joe è sesquipedale>
• <Ogni struck ha 6 striff>, <ho 4 struck>, quindi
<ho 24 striff>. Qual è la differenza?
• Nei primi due la deduzione si appoggia anche su un
contenuto semantico, nei secondi è solo formale.
<ogni a è B>, <tutti i B sono C>, quindi <a è C>
Ragione formale:
«Ragionare senza comprendere»
• Ragionare tramite la sola manipolazione di segni
secondo regole. E’ una capacità soltanto umana
• Gli animali hanno un qualche linguaggio, una certa
logica concreta, anche una semplice aritmetica di
piccoli numeri. Ma non hanno una ragione formale.
• La ragione formale e la logica formale sono assenti
anche nelle popolazioni cosiddette ‘primitive’, e
storicamente appare insieme alla alfabetizzazione.
• E il computer è la macchina sintattica, che possiede
solo la ragione formale: è l’opposto del ‘primitivo’,
che possiede solo una ragione concreta.
Matematica e computer science
Matematica del continuo (geometria, numeri reali,
analisi) e del discreto (aritmetica, algebra, logica)
- Matematica col computer
La realtà è (quasi sempre) continua: modelli matematici,
analisi matematica, calcolo numerico, calcolo delle
probabilità, ricerca operativa: il mondo delle cose
- Matematica del computer
Il computer, il linguaggio e il cervello sono discreti: logica
matematica, combinatoria, algebra, teoria degli algoritmi e
linguaggi formali: il mondo dei segni
Matematica del Continuo
• Linguaggio di base è quello della analisi
matematica, con la quale si possono rappresentare
innumerevoli problemi reali: l’analisi matematica è il
linguaggio di base di quasi tutta la descrizione fisica
del mondo e quindi della parte principale dei
problemi concreti.
• La risoluzione di un problema certe volte si può fare
col calcolo simbolico, ma non sempre. In tali casi,
molto frequenti, si deve trovare un algoritmo di tipo
numerico che risolva il problema. Quando ci si
accontenta di soluzioni approssimate, entra in gioco
il calcolo numerico.
• Altre volte il problema contiene aspetti aleatori:
anche la gestione di uno sportello di informazioni
richiede di ipotizzare quanti clienti arriveranno per
ogni periodo di tempo, e questo si può solo
approssimare per via probabilistica e trattare con il
calcolo delle probabilità.
• La matematica col computer è anch’essa talora
matematica discreta (come ad esempio in molti
problemi di ricerca operativa o basati sulle matrici).
• Ma in realtà la varietà di tecniche matematiche che
possono essere utili per risolvere i problemi
trasformandoli in algoritmi da implementare con
programmi del computer è oggi enorme.
Matematica Discreta
• Ma il computer in quanto tale è in sé un oggetto
matematico, la sua memoria, le sue procedure di
base, la sua stessa concezione è cresciuta come
manipolazione di segni. Questa è matematica del
computer.
• Questa è sempre una matematica discreta, tratta in
modo formale di simboli: alla base è l’aritmetica dei
numeri interi, ma oggi è in primo luogo logica
matematica, teoria dei linguaggi formali,
combinatoria e algebra simbolica.
L’anima logico-matematica del
computer
• Storicamente il computer nasce 70 anni fa dalla
collaborazione di due classi di scienziati: gli
‘elettronici’ e i ‘logici-matematici’ che fornirono
rispettivamente il corpo e l’anima del computer.
• L’elettronica ha subito cambiamenti epocali: dai
relais alle valvole, ai transistor, ai microchip sempre
più piccoli e potenti, tanto che questa evoluzione di
misura in ‘generazioni’
• L’anima logico-matematica invece è rimasta sempre
la stessa: lo schema della macchina universale di
Turing e l’architettura di von Neumann.
Il computer e le tecniche matematiche
• Sino dal Rinascimento esistono professioni che si
fondano sulla conoscenza degli algoritmi, dai
ragionieri agli ingegneri. Ma oggi il computer può
eseguire ogni algoritmo meglio di noi.
• D’altra parte la creazione di algoritmi e la capacità
di saperli applicare, combinare e generalizzare è
una abilità strettamente matematica e umana.
• L’abilità matematica non è più allora la capacità di
eseguire gli algoritmi, ma la capacità di trovarli,
costruirli e applicarli a una rappresentazione
formale del problema: l’informatica e la matematica
algoritmica diventano sempre più simili.
La rappresentazione
La rappresentazione iconica (analogica)
La rappresentazione sintattica (digitale)
CASA
𝐴 = 𝜋𝑟 2
Nessuna somiglianza, non è
Si basa sulla somiglianza,
analitica (la lettera C di CASA
è analitica (il camino nella
non corrisponde a nessuna
immagine della casa è la
parte di una casa), ha natura
immagine di un camino), è
linguistica, dipende da un
universale, ma ha difficoltà
particolare linguaggio, ma può
coi termini astratti, la verità,
rappresentare anche termini
la negazione, l’essere, etc.
astratti.
Talora si usano insieme i due tipi di
rappresentazione
Linguaggio e Calcolo
• Già Leibniz si accorse che la rappresentazione
sintattica aveva un altro grande vantaggio: era sia
un linguaggio di rappresentazione che un calcolo.
• Da un lato ogni individuo e ogni fatto del mondo da
rappresentare poteva essere rappresentato tramite
i simboli: la rappresentazione era universale.
• Dall’altro lato, il divenire e le deduzioni in tale
mondo potevano essere ‘simulate’ tramite la
manipolazione dei segni secondo regole: la
rappresentazione era un calcolo.
• L’algebra, l’analisi, i linguaggi di programmazione, e
soprattutto la logica e gli algoritmi
Gli algoritmi
• La computer science si fonda sulla connessione tra
algoritmi e logica.
• Al-Khwarizmi è stato un matematico arabo vissuto a
Bagdad nella prima metà del IX secolo, celebre sia
per aver diffuso la manipolazione algebrica dei
problemi che per la diffusione delle cifre indo-arabe,
importanti non tanto perché posizionali o per la
presenza dello 0, ma perché il calcolo con esse si
faceva tramite procedure sintattiche: gli algoritmi.
• Le costruzioni geometriche o iconiche e i processi
meccanici non sono algoritmi: non esistono segni
senza algoritmi e non esistono algoritmi senza segni.
Algoritmi e Logica
• Storicamente erano state sempre profondamente
diverse: la logica era interna alla filosofia e alla
teologia, gli algoritmi erano invece molto pratici,
roba da bottegai, agrimensori e contabili.
• Nella matematica moderna invece diventano
sempre più simili. La sovrapposizione si delinea
all’inizio del XX secolo, quando si scopre che una
dimostrazione logica è solo un calcolo particolare e
che ogni calcolo è la dimostrazione di un certo
risultato. E che un calcolo fosse una dimostrazione
l’aveva già capito Leibniz nel Seicento.
Un calcolo è una dimostrazione
• Per esempio ‘dimostriamo’ che 4+3=7. Definiamo i
numeri: 2=1+1, 3=2+1, 4=3+1, 5=4+1, 6=5+1, 7=6+1,
etc. e usiamo come unica regola che «in una
espressione si possono sostituire espressioni
uguali». Allora 4+3 = 4+2+1 = 4+1+1+1 = 5+1+1 =
6+1 = 7.
• E nel contempo questa dimostrazione è anche un
algoritmo per effettuare la somma.
• Viceversa l’idea che ogni dimostrazione in fondo sia
una sorta di calcolo appare solo alla fine
dell’Ottocento, soprattutto con Gottlob Frege.
Una dimostrazione è un calcolo
• Per Frege «una dimostrazione è una sequenza di
frasi (formule) ciascuna delle quali o è già nota
(assioma o teorema già dimostrato) o si ricava dalle
frasi precedenti mediante regole di inferenza».
• La verifica della correttezza di una dimostrazione
logica è un fatto ‘meccanico’, non c’è bisogno di
‘capire’ nulla! «La matematica è logica travestita.»
• Una dimostrazione matematica è una sorta di
compressione di una dimostrazione logica molto più
lunga: «Se ci vogliono 27 equazioni per provare che
1 è un numero, quante ce ne vorranno per
dimostrare un vero teorema?» (Poincarè).
Logicismo e Formalismo
Russell, Whitehead: Principia Matematica
Le regole di inferenza devono
essere puramente sintattiche,
senza alcuna ‘intuizione’ della
‘verità’:
A
A B
B
I teoremi di incompletezza di
Gödel hanno smentito questa idea logicista e
formalista, che però resta in qualche modo ancora
presente nell’opinione comune.
E vedremo due teoremi matematici che ci dicono che
cosa il computer può fare.
Aristotele e la logica antica
• Il sillogismo: «tutti gli umani sono
mortali», «tutti i greci sono umani» e
quindi «tutti i greci sono mortali».
Oppure «alcuni ateniesi sono alti» e
«tutti gli alti sono robusti» e quindi
«alcuni ateniesi sono robusti».
• Ma da «alcuni ateniesi sono alti»,
«alcuni ateniesi sono biondi» non si
può dedurre niente di rilevante.
I principi formali: non contraddizione (non può essere la
stessa proposizione vera e falsa), terzo escluso (ogni
proposizione è vera o falsa), verità per corrispondenza (è
vero dire che è ciò che è, o che non è ciò che non è, è falso
dire che è ciò che non è, o che non è ciò che è).
I connettivi
• Le proposizioni sono gli ‘atomi’ della logica: le
asserzioni che hanno un valore di verità, V/1 o F/0.
• Le proposizioni complesse si ottengono tramite
l’uso dei connettivi: non/not (), e/and/
congiunzione (), o/or/disgiunzione (), se … allora
/if … then (), se e solo se/if and only if ().
• Si dicono verofunzionali, poiché agiscono solo sui
valori di verità: ad es.  A è vera se e solo se A è
falsa, A  B è vera se e solo se sono vere sia A che B,
AB è vera se e solo se A e B hanno uguale valore
di verità, a prescindere dal significato di A e B.
Rappresentare con gli insiemi
• I diagrammi di Venn e gli intervalli. L’insieme P :
P
P
Sia P la proprietà ‘umano’, P l’insieme degli esseri
umani, Q sia ‘maschio’, Q l’insieme dei maschi.
P (complemento di P) è l’insieme degli «esseri non
umani», corrispondente alla proprietà P.
PQ (intersezione di P e Q) è l’insieme degli «umani
maschi», corrispondente alla proprietà P  Q
PQ (unione di P e Q) è l’insieme degli «esseri umani
o maschi», corrispondente alla proprietà P  Q
PQ se ogni elemento di P è anche elemento di Q.
• «tutti gli umani sono mortali», «tutti i greci sono
umani» e quindi «tutti i greci sono mortali». Oppure
«alcuni ateniesi sono biondi» e «tutti i biondi sono
robusti» e quindi «alcuni ateniesi sono robusti».
•
•
•
mortali
umani
greci
robusti
GU UM
GM
ateniesi
biondi
BR AB Ø
AR Ø
• «nessun umano è immortale», «tutti gli dei sono
immortali», e quindi «nessun umano è un dio»,
•
•
•
umani
dei
immortali
UI=Ø DI
UD=Ø
• «alcuni ateniesi sono robusti», «alcuni ateniesi
sono biondi», …..?
•
•
•
•
•
ateniesi
AR Ø
AB Ø
?
ateniesi
robusti
biondi
robusti
biondi
• «nessun umano è immortale», «qualche
immortale è biondo», …..?
•
immortali
UI=Ø IB Ø
biondi
umani
?
biondi
immortali
umani
Gli algoritmi e le macchine.
• L’algoritmo è una macchina sintattica.
• Il computer è una macchina sintattica.
Input:
dati
algoritmo
Output:
soluzione
Sintattica perché consiste nel manipolare segni secondo
regole fisse indipendenti dal significato dei segni.
Tuttavia, creare algoritmi non è una procedura meccanica.
Può essere facile o difficile, magari talora banale.
Ma è sempre un’attività creativa (la dottrina ‘catarella’).
Il computer manipola segni
• Che ‘significa’ un segno quando lavori col
computer? Solo l’uso che di quel segno faranno il
sistema operativo o il compilatore, che sono gli
algoritmi che manipolano i segni sul computer.
• Alcuni segni sono interpretabili, indici, parametri,
indirizzi di memoria, etc., assegnabili a piacere,
altri sono delle primitive, il cui significato è ‘built
in’, fissato nel compilatore dal modo con cui esso
li manipola.
Non esistono algoritmi senza segni da manipolare e
non esistono segni senza algoritmi che li manipolano
Tutto è un data base
• Cantor alla fine dell’Ottocento crea la teoria
dell’infinito, in cui mostra di fatto che ogni insieme
(anche infinito) di oggetti comunque descrivibili in un
linguaggio sono sempre codificabili/decodificabili
come stringhe di 0 e 1. E codifica e decodifica sono
sempre realizzabili tramite algoritmi.
• Il computer può memorizzare tutto ciò che è
comunque descrivibile. Tutti i clienti di una banca
con i loro conti correnti, tutti i cittadini italiani con i
loro dati, tutte le immagini, ma anche tutti gli
algoritmi, tutte le formule, tutti i calcoli sono sempre
codificabili e decodificabili come stringhe di 0 e 1.
Esempio: le espressioni aritmetiche
• L’alfabeto: {+, -, :, , (, ), 0, 1, 2, 3, 4, ……, n, ….}
• La codifica: 0 1 2 3 4 5 6 7 8 9 10 ….. n+6 …..
• Usando il teorema fondamentale della aritmetica
per cui ogni numero N è univocamente determinato
dalla sua espressione come prodotto di potenze di
numeri primi , e considerando i numeri associati ai
simboli, l’espressione (2 - 4)  2 diventa il numero
di codice: 24 38 51 710 115 133 178
•
( 2 - 4
)

2
• che può essere scritto in base 2 come sequenza di 0
e 1, e dal quale si può ricavare l’espressione.
Tutto è un programma
• Turing negli anni trenta del XX secolo descrive una
macchina/algoritmo che può simulare al suo
interno qualsiasi algoritmo che lavora su qualsiasi
insieme di dati, è la macchina universale, lo schema
teorico del moderno computer, che quindi può
eseguire qualsiasi algoritmo codificato nella forma
di un programma.
MACCHINA DI TURING UNIVERSALE
programma(algoritmo), dati
soluzione
dati
algoritmo
soluzione
L’insieme di tutti i possibili algoritmi è il calcolabile.
Il calcolabile
• Il calcolabile è la risposta alla domanda «che cosa si
può fare manipolando segni secondo regole?», e si
potrebbe rispondere «dipende: dalle regole, dalla
memoria, etc.». Ma oltre un certo punto ciò che si
può fare manipolando segni non può più crescere, il
calcolabile diventa un concetto stabile ed assoluto:
«tutto quello che si può fare manipolando segni
secondo regole», ed è quello che
può fare il computer, realizzando
il sogno di Leibniz:
un linguaggio di rappresentazione
ed un calcolo universali
Analogico e Digitale
• Le trasformazioni nella rappresentazione analogica
seguono le leggi naturali: una stampa fotografica
invecchiando sbiadisce, e il ritratto di Dorian Gray
invecchiava ‘naturalmente’ al posto di Dorian Gray.
• Le trasformazioni nella rappresentazione digitale
sono impossibili, una foto digitale in linea di
principio non invecchia. Se Dorian Gray avesse
avuto una foto digitale da fare invecchiare in sua
vece, poteva farlo solo tramite un apposito
algoritmo che lavorasse su stringhe di 0 e 1.
Il calcolabile e la realtà
• Di fronte al calcolabile, il regno assoluto degli
algoritmi, c’è la realtà, con una struttura molto più
varia e imprevedibile, a cui applicare gli algoritmi.
• Ed esistono algoritmi semplici e dalla applicazione
non problematica, come le operazioni aritmetiche.
• Ma esistono anche algoritmi più complessi, in cui ci
sono scelte non meccanizzabili da fare, algoritmi
che sembrano un laboratorio pieno di pezzi da
assemblare. Ci sono algoritmi che possono non
terminare e algoritmi che su problemi complessi
richiedono tempi biblici per terminare.
Il computer e l’intelligenza matematica
• Questa è l’intelligenza matematica dell’informatico:
applicare alla complessità del mondo reale gli
strumenti del mondo algoritmico, tenendo presente
che in primo luogo nel mondo reale c’è anche il
computer che è la macchina algoritmica per
eccellenza, e alla quale e sulla quale gli algoritmi
vanno applicati.
• All’informatico non serve saper ‘eseguire’ gli
algoritmi, questo lo fa benissimo il computer.
Bisogna degli algoritmi conoscere invece la logica, le
caratteristiche ed i limiti, sceglierli, comporli,
adattarli, generalizzarli e specializzarli.
Questa presentazione potete trovarla in rete nel sito:
www.dm.uniba.it/Members/borzacchini
nella cartella Orientamento Consapevole.
Nello stesso sito trovate un corso introduttivo alla
logica matematica di slides e tutorials
Auguri!