Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
logiche
( 2022/10/06 )
Outline
Computer
1837, Charles Babbge. “On the Mathematical Power of the Calculating Engine”. Proposta
di un calcolatore meccanico a vapore, in grado di eseguire algoritmi rappresentati su
schede perforate. Mai completato.
Una macchina di Turing è definita da un insieme di regole che definiscono il comportamento della
macchina su un nastro di input-output (lettura e scrittura). Il nastro può essere immaginato come
un nastro di carta di lunghezza infinita, diviso in quadratini dette celle. Ogni cella contiene un
simbolo oppure è vuota. Una MdT ha una testina che si sposta lungo il nastro leggendo,
scrivendo oppure cancellando simboli nelle celle del nastro. La macchina analizza il nastro, una
cella alla volta, iniziando dalla cella che contiene il simbolo più a sinistra nel nastro.
Ad ogni passo, la macchina legge un simbolo sul nastro ed in accordo al suo stato interno
(memoria interna):
“Turing's paper ... contains, in essence, the invention of the modern computer and some of the programming
techniques that accompanied it.”
— Minsky (1967)
La Macchina di Touring : esempio
A=0 A yes
A=A+B >=
B=1 10?
Start
no Stop
La Macchina di Touring : esempio
Supponiamo che l'UNITA' LOGICA possa leggere quanto passato dalla TESTINA, interpretando i
SIMBOLI ed associandogli un comportamento specifico.
65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in
DX+2 allora muovi la testina in DX+3, altrimenti muovila in DX+4;
9 = Stop
La Macchina di Touring : esempio
1 2 3 4 5 6 7 8 9 10 100 101
Tt0 Tt1
1 2 3 4 5 6 7 8 9 10 100 101
12 = prendi il valore contenuto nella posizione indicata a DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella
posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;
65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina nella
posizione indicata in DX+3, altrimenti muovila nella posizione indicata in DX+4;
9 = Stop
La Macchina di Touring : esempio
12 = prendi il valore contenuto nella posizione indicata in DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella
posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;
65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina in
DX+3, altrimenti muovila in DX+4;
9 = Stop
La Macchina di Touring
O = istruzione
O = posizione (locazione)
O = dato (locazione)
12 = prendi il valore contenuto nella posizione indicata in DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato nella posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;
65 = se il contenuto nella posizione indicata in DX+1 è maggiore del contenuto nella posizione indicata in DX+2 allora muovi la testina in DX+3, altrimenti muovila in DX+4;
82 = muovi la testina nella posizione indicata in DX+1
9 = Stop
— Minsky (1967)
La Macchina di Touring
https://turingmachine.io/
La Macchina di Touring
Tuttavia.... : architettura di von Naumann
1945. John von Neumann. “First draft of a report on the EDVAC”. Concettualizza il computer come
lo conosciamo noi oggi
Computer : Siamo poi molto distanti?
Abbiamo visto “the big picture”, la visione architetturale MACROSCOPICA con cui un
computer si possa concepire e possa funzionare.
NULLA abbiamo detto su come CONCRETAMENTE questo possa accadere, su quali dispositive
fisici reali possa basarsi (idraulici? Meccanici? Elettronici? Ottici? Quantici? etc .. )
L' Algebra è una branca della matematica che studia le possibili relazioni fra elementi, insiemi
e relazioni [Roberto '21]
L'algebra di Boole, ad esempio si occupa del caso in cui i possibili elementi siano solo due
simboli (cui puo' venire associato il significato di VERO e FALSO, 0 o 1, … in ogni caso
BINARIO)
Algebra di Boole
Lavorando con I simboli di VERO e FALSO (di cui adotteremo I sinonimi '1' e '0'
rispettivamente), si introducono alcuni operatori:
AND , OR , NOT
NOT x inverte il valore di x (VERO => FALSO oppure FALSO => VERO)
Algebra di Boole e Porte Logiche : tabelle di verità
Definiti alternativamente :
AND = *
OR = +
Valgono le seguenti
proprietà
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A AND B) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:
C B A Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A OR B) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:
C B A Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Rispetto ai possibili valori di A, B e C, quando la scrittura “(A OR NOT(B)) AND C” risulta
VERA? Possiamo facilmente indagarlo costruendo la tabella di verità:
C B !B A Y
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
Algebra di Boole e Reti Logiche : tabelle di verità
Possiamo anche fare il ragionamento opposto: dalla tabella di verità costruire
l'espressione algebrica che la rappresenti
C B A Y
0 0 0 1 Sostituendo
0 0 1 0 NOT = !
AND = <nulla>
0 1 0 1 OR = +
0 1 1 0
1 0 0 0
1 0 1 1 Y = !A!B!C + !AB!C + A!BC + ABC
1 1 0 0
1 1 1 1
Rappresentazione binaria
Rappresentazione Binaria
Precendentemente abbiamo lavorato con simboli '0' e '1' che non solo erano numeri,
ma, piu' genericamente, simboli. Ad essi potevano associare un significato numerico
o un significato di verita' (V/F) o un qualunque evento fisico del mondo purchè
dicotomico (es: APRI/CHIUDI, ALZA/ABBASSA, etc..)
Associamo quindi a '0' il significato di una quantità pari a 0 e a '1' il significato di una
quantità pari a 1.
33 = 100001 = 1* 25 + 0 *24+ 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20
Rappresentazione Binaria
33 = 100001 = 1 * 25 + 0 *24+ 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20
Per sommare velocemente è sufficiente ricordarsi le potenze di 2:
20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
Rappresentazione Binaria
( 67 )10 = ( 1000011 )2
( 10 )10 = ( 1010 )2
Rappresentazione Binaria : operazione SOMMA
0 1 0 0 0 0 1 1 +
0 0 0 0 1 0 1 0
“0” con riporto di “1”
0 1 0 0 1 1 0 1
E’ il sommatore visto
prima che pero’ prende
in ingresso l’eventuale
riporto da una somma
precedente
Algebra di Boole e Porte Logiche : reti sommatrici
B3B2B1B0 = 0100
S3S2S1S0 = 1110
Algebra di Boole e Porte Logiche : reti sommatrici
Algebra di Boole e Porte Logiche : reti sommatrici
Un piccolo pezzetto..
https://logic.ly/demo/
12 = prendi il valore contenuto nella posizione indicata a DX+1, sommalo a quello nella posizione indicata in DX+2 e metti il risultato
nella posizione indicata in DX+3. Poi sposta la testina nella posizione DX+4;
Abbiamo quindi visto come quanto enunciato nella macchina di Touring, in forma
teorica, possa avere un riscontro concreto in una macchina costutita da dispositive
elettronici che lavorano in codifica binaria (digitale).