What's an algorithm? - David J. Malan

Il cervello può risolvere algoritmi - David J. Malan

2,570,249 views

2013-05-20 ・ TED-Ed


New videos

What's an algorithm? - David J. Malan

Il cervello può risolvere algoritmi - David J. Malan

2,570,249 views ・ 2013-05-20

TED-Ed


Fare doppio clic sui sottotitoli in inglese per riprodurre il video.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
Traduttore: Claudio Dinapoli Revisore: Anna Cristiana Minoli
00:15
What's an algorithm?
1
15483
1348
Cos'è un algoritmo?
00:16
In computer science,
2
16831
831
Nella scienza informatica,
00:17
an algorithm is a set of instructions
3
17662
1754
un algoritmo è una serie di istruzioni
00:19
for solving some problem, step-by-step.
4
19416
2689
per risolvere, passo dopo passo, alcuni problemi.
00:22
Typically, algorithms are executed by computers,
5
22105
2272
In genere gli algoritmi sono eseguiti da computer,
00:24
but we humans have algorithms as well.
6
24377
2167
ma anche noi esseri umani abbiamo in nostri algoritmi.
00:26
For instance, how would you go about counting
7
26544
1853
Ad esempio: come approcci il problema di contare
00:28
the number of people in a room?
8
28397
1820
il numero di persone in una stanza?
00:30
Well, if you're like me,
9
30217
1215
Be', se tu fossi come me,
00:31
you probably point at each person,
10
31432
1496
probabilmente indicheresti ciascun presente,
00:32
one at a time,
11
32928
960
uno alla volta,
00:33
and count up from 0:
12
33888
1837
e conteresti a partire da 0:
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1, 2, 3, 4 eccetera eccetera.
00:38
Well, that's an algorithm.
14
38598
1113
Bene, quello è un algoritmo.
00:39
In fact, let's try to express it
15
39711
1134
Infatti, cerchiamo di esprimerlo
00:40
a bit more formally in pseudocode,
16
40845
2229
un po' più formalmente come un pseudocodice,
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
una sintassi simile al lunguaggio umano
con le apparenze di un linguaggio di programmazione.
00:46
Let n equal 0.
19
46029
1767
Ammettiamo n uguale a 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
Per ciascuna persona nella stanza, impostiamo n = n + 1.
00:52
How to interpret this pseudocode?
21
52588
1497
Come si interpreta questo pseudocodice?
00:54
Well, line 1 declares, so to speak,
22
54085
1836
Be', la linea 1 dichiara, per dire,
00:55
a variable called n
23
55921
1416
una variabile chiamata n
00:57
and initializes its value to zero.
24
57337
2379
a cui assegniamo un valore pari a zero.
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
Questo significa solo che all'inizio del nostro algoritmo
01:02
the thing with which we're counting
26
62051
1584
la cosa con cui stiamo contando
01:03
has a value of zero.
27
63635
1668
parte dal valore zero.
01:05
After all, before we start counting,
28
65303
1336
Dopotutto, prima di iniziare a contare,
01:06
we haven't counted anything yet.
29
66639
1669
non abbiamo ancora contato nulla.
01:08
Calling this variable n is just a convention.
30
68308
2248
Chiamare questa variabile 'n' è solo una consuetudine.
01:10
I could have called it almost anything.
31
70556
2005
Avrei potuto assegnargli quasi qualsiasi nome.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
Ora, la linea 2 demarca l'inizio di una istruzione ripetuta, un loop,
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
una sequenza di passaggi che si ripeteranno un tot di volte.
01:17
So, in our example, the step we're taking
34
77691
1794
Quindi, ad esempio, il passaggio che stiamo affrontando
01:19
is counting people in the room.
35
79485
1734
è contare le persone nella stanza.
01:21
Beneath line 2 is line 3,
36
81219
1763
Al di sotto della linea 2 c'è la linea 3,
01:22
which describes exactly how we'll go about counting.
37
82982
2511
che descrive in maniera precisa come inizieremo il conteggio.
01:25
The indentation implies that it's line 3
38
85493
2250
La rientranza implica che è la linea 3
01:27
that will repeat.
39
87743
1222
ad essere ripetuta.
01:28
So, what the pseudocode is saying
40
88965
1219
Quindi, lo pseudocodice sta dicendo
01:30
is that after starting at zero,
41
90184
2066
che dopo essere partiti con 0,
01:32
for each person in the room,
42
92250
1710
per ciascuna persona nella stanza,
01:33
we'll increase n by 1.
43
93960
2218
accresceremo il valore di n di 1.
01:36
Now, is this algorithm correct?
44
96178
2329
Ora: l'algoritmo è corretto?
01:38
Well, let's bang on it a bit.
45
98507
1608
Be', discutiamone un po'.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
Funziona se ci sono due persone nella stanza?
01:42
Let's see.
47
102941
780
Vediamo.
01:43
In line 1, we initialize n to zero.
48
103721
2085
Nella linea 1 impostiamo n sullo zero.
01:45
For each of these two people,
49
105806
1302
Per ciascuna di queste 2 persone,
01:47
we then increment n by 1.
50
107108
2168
incrementiamo n di 1.
01:49
So, in the first trip through the loop,
51
109276
1582
Quindi, al primo giro del loop
01:50
we update n from zero to 1,
52
110858
2005
aggiorniamo n da zero a 1,
01:52
on the second trip through that same loop,
53
112863
1655
nel secondo giro del medesimo loop,
01:54
we update n from 1 to 2.
54
114518
2249
aggiorniamo n da 1 a 2.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
E in questo modo, con la fine dell'algoritmo, n è 2,
02:00
which indeed matches the number of people in the room.
56
120108
2113
che davvero rispecchia il numero di persone nella stanza.
02:02
So far, so good.
57
122221
1223
Fin qui ci siamo con i conti.
02:03
How about a corner case, though?
58
123444
1752
E se introduciamo un caso limite?
02:05
Suppose that there are zero people in the room,
59
125196
1964
Supponiamo che ci siano zero persone nella stanza,
02:07
besides me, who's doing the counting.
60
127160
2347
oltre a me che sto contando.
02:09
In line 1, we again initialize n to zero.
61
129507
3010
Nella linea 1, di nuovo impostiamo n con il valore 0.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
Questa volta, tuttavia, la linea 3 non viene eseguita
02:15
since there isn't a person in the room,
63
135039
1880
dato che non c'è una persona nella stanza,
02:16
and so, n remains zero,
64
136919
1624
e quindi, n rimane zero,
02:18
which indeed matches the number of people in the room.
65
138543
2359
che è davvero il numero di persone nella stanza.
02:20
Pretty simple, right?
66
140902
906
Piuttosto semplice, vero?
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
Ma contare le persone una alla volta è anche piuttosto inefficiente, no?
02:25
Surely, we can do better!
68
145024
1568
Certamente, e possiamo fare di meglio!
02:26
Why not count two people at a time?
69
146592
1866
Perché non contare le persone due alla volta?
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
Invece di contare 1, 2, 3, 4, 5, 6, 7, 8, e così via,
02:33
why not count
71
153557
918
perché non contare
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2, 4, 6, 8, e via dicendo?
02:36
It even sounds faster, and it surely is.
73
156602
2418
Suona anche più veloce, e di sicuro lo è.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
Ora esprimiamo questa ottimizzazione in pseudocodice.
02:41
Let n equal zero.
75
161855
1462
Impostiamo n con il valore zero.
02:43
For each pair of people in room,
76
163317
1997
Per ciascuna coppia di persone nella stanza,
02:45
set n = n + 2.
77
165314
2588
impostiamo n = n + 2.
02:47
Pretty simple change, right?
78
167902
1673
Una modifica piuttosto semplice, vero?
02:49
Rather than count people one at a time,
79
169575
1791
Invece di contare le persone una alla volta
02:51
we instead count them two at a time.
80
171366
2343
le contiamo due alla volta.
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
Questo algoritmo è quindi due volte più veloce del precedente.
02:56
But is it correct?
82
176524
1346
Ma può funzionare?
02:57
Let's see.
83
177870
794
Vediamo.
02:58
Does it work if there are 2 people in the room?
84
178664
2125
Funziona se ci sono 2 persone nella stanza?
03:00
In line 1, we initialize n to zero.
85
180789
2342
Nella linea 1 impostiamo n su 0.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
Per quell'unica coppia di persone, incrementiamo n di 2.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
E quindi, con la fine di questo algoritmo, n è 2,
03:08
which indeed matches the number of people in the room.
88
188921
2382
che è davvero il numero di persone nella stanza.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
Supponiamo ora che ci siano zero persone nella stanza.
03:13
In line 1, we initialize n to zero.
90
193715
2587
Nella linea 1, impostiamo n col valore 0.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
Come prima, la linea tre non viene affatto eseguita,
03:18
since there aren't any pairs of people in the room,
92
198382
2342
dato che non c'è alcuna coppia di persone nella stanza,
03:20
and so, n remains zero,
93
200724
1686
e quindi n rimane 0,
03:22
which indeed matches the number of people in the room.
94
202410
2773
che rispecchia davvero il numero di persone nella stanza.
03:25
But what if there are 3 people in the room?
95
205183
2372
Ma se ci sono 3 persone nella stanza?
03:27
How does this algorithm fair?
96
207555
1937
Come si comporta questo algoritmo?
03:29
Let's see.
97
209492
829
Vediamo.
03:30
In line 1, we initialize n to zero.
98
210321
2670
Nella linea 1, impostiamo n con il valore 0.
03:32
For a pair of those people,
99
212991
1290
Per una coppia di quelle persone,
03:34
we then increment n by 2,
100
214281
1916
incrementiamo n di 2,
03:36
but then what?
101
216197
992
e poi cosa accade?
03:37
There isn't another full pair of people in the room,
102
217189
2262
Non c'è un'altra coppia completa nella stanza,
03:39
so line 2 no longer applies.
103
219451
2210
quindi la linea 2 non si applica più.
03:41
And so, by this algorithm's end,
104
221661
1669
E quindi, con questa fine dell'algoritmo,
03:43
n is still 2, which isn't correct.
105
223330
2596
n è ancora 2, che non è il valore corretto.
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
Questo algoritmo si dice che ha un bug
03:48
because it has a mistake.
107
228258
1148
perché contiene un errore.
03:49
Let's redress with some new pseudocode.
108
229406
1896
Ripariamolo con un po' di nuovo pseudocodice.
03:51
Let n equal zero.
109
231302
1793
Impostiamo n con il valore 0.
03:53
For each pair of people in room,
110
233095
2123
Per cuascuna coppia nella stanza,
03:55
set n = n + 2.
111
235218
2422
impostiamo n = n + 2.
03:57
If 1 person remains unpaired,
112
237640
2459
se 1 persona rimane senza coppia,
04:00
set n = n + 1.
113
240099
2376
impostiamo n = n + 1.
04:02
To solve this particular problem,
114
242475
1507
Per risolvere questo particolare problema,
04:03
we've introduced in line 4 a condition,
115
243982
2249
abbiamo introdotto nella linea 4 una condizione,
04:06
otherwise known as a branch,
116
246231
1835
altrimenti conosciuta come diramazione
04:08
that only executes if there is one person
117
248066
2253
che viene eseguita se c'è una persona
04:10
we could not pair with another.
118
250319
1876
che non ptoremmo accoppiare con un'altra.
04:12
So now, whether there's 1 or 3
119
252195
2065
Adesso, quindi, se c'è 1 o 3
04:14
or any odd number of people in the room,
120
254260
2273
o un qualsiasi numero dispari di persone nella stanza,
04:16
this algorithm will now count them.
121
256533
2288
questo algoritmo li conterà.
04:18
Can we do even better?
122
258821
1345
Possiamo fare ancora meglio?
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
Be', potremmo contare 3, 4, 5 o anche 10 alla volta,
04:23
but beyond that it's going to get
124
263460
1300
ma oltre sarebbe
04:24
a little bit difficult to point.
125
264760
1870
un po' difficile da indicare.
04:26
At the end of the day,
126
266630
937
Alla fine della giornata
04:27
whether executed by computers or humans,
127
267567
2264
che sia eseguito da computer o da esseri umani,
04:29
algorithms are just a set of instructions
128
269831
1960
gli algortismi sono solo una serie di istruzioni
04:31
with which to solve problems.
129
271791
1838
con cui risolvere i problemi.
04:33
These were just three.
130
273629
1743
Questi erano solo tre.
04:35
What problem would you solve with an algorithm?
131
275372
2982
Quale problema risolveresti con un algoritmo?
A proposito di questo sito web

Questo sito vi presenterà i video di YouTube utili per l'apprendimento dell'inglese. Vedrete lezioni di inglese tenute da insegnanti di alto livello provenienti da tutto il mondo. Fate doppio clic sui sottotitoli in inglese visualizzati su ogni pagina video per riprodurre il video da lì. I sottotitoli scorrono in sincronia con la riproduzione del video. Se avete commenti o richieste, contattateci tramite questo modulo di contatto.

https://forms.gle/WvT1wiN1qDtmnspy7