What's an algorithm? - David J. Malan

Votre cerveau peut résoudre des algorithmes - David J. Malan

2,570,249 views

2013-05-20 ・ TED-Ed


New videos

What's an algorithm? - David J. Malan

Votre cerveau peut résoudre des algorithmes - David J. Malan

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

TED-Ed


Veuillez double-cliquer sur les sous-titres anglais ci-dessous pour lire la vidéo.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
Traducteur: Pierre-Louis Bernard Relecteur: Elisabeth Buffard
00:15
What's an algorithm?
1
15483
1348
Qu'est ce qu'un algorithme ?
00:16
In computer science,
2
16831
831
En informatique,
00:17
an algorithm is a set of instructions
3
17662
1754
un algorithme est un ensemble d'instructions
00:19
for solving some problem, step-by-step.
4
19416
2689
pour résoudre un problème étape après étape.
00:22
Typically, algorithms are executed by computers,
5
22105
2272
Généralement, les algorithmes sont exécutés par des ordinateurs
00:24
but we humans have algorithms as well.
6
24377
2167
mais les humains ont aussi des algorithmes.
00:26
For instance, how would you go about counting
7
26544
1853
Par exemple, comment feriez-vous
00:28
the number of people in a room?
8
28397
1820
pour compter le nombre de personnes dans une pièce ?
00:30
Well, if you're like me,
9
30217
1215
Eh bien, si vous êtes comme moi,
00:31
you probably point at each person,
10
31432
1496
vous désignez probablement chaque personne,
00:32
one at a time,
11
32928
960
une à la fois,
00:33
and count up from 0:
12
33888
1837
et commencez à compter à partir de 0 :
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1, 2, 3, 4 et ainsi de suite.
00:38
Well, that's an algorithm.
14
38598
1113
Eh bien ça, c'est un algorithme.
00:39
In fact, let's try to express it
15
39711
1134
En fait, essayons de l'exprimer
00:40
a bit more formally in pseudocode,
16
40845
2229
de manière un peu plus formelle, en pseudocode
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
une syntaxe presque française
qui ressemble à un langage de programmation
00:46
Let n equal 0.
19
46029
1767
Soit n égal 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
Pour chaque personne dans la pièce, faire n = n + 1
00:52
How to interpret this pseudocode?
21
52588
1497
Comment interpréter ce pseudocode ?
00:54
Well, line 1 declares, so to speak,
22
54085
1836
Eh bien, la ligne 1 déclare, pour ainsi dire,
00:55
a variable called n
23
55921
1416
une variable appelée n
00:57
and initializes its value to zero.
24
57337
2379
et initialise sa valeur à zéro.
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
Ça veut dire qu'au début de notre algorithme
01:02
the thing with which we're counting
26
62051
1584
la chose avec laquelle nous comptons
01:03
has a value of zero.
27
63635
1668
a une valeur de zéro.
01:05
After all, before we start counting,
28
65303
1336
Après tout, avant d'avoir commencé à compter,
01:06
we haven't counted anything yet.
29
66639
1669
on avait encore rien compté .
01:08
Calling this variable n is just a convention.
30
68308
2248
Appeler cette variable n est simplement une convention.
01:10
I could have called it almost anything.
31
70556
2005
J'aurais pu l'appeler presque n'importe comment.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
Maintenant, la ligne 2 marque le début de la boucle,
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
une séquence d'étapes qui se répète un certain nombre de fois.
01:17
So, in our example, the step we're taking
34
77691
1794
Donc, dans notre exemple, l'étape que nous prenons
01:19
is counting people in the room.
35
79485
1734
c'est le comptage des personnes dans la salle.
01:21
Beneath line 2 is line 3,
36
81219
1763
Après la ligne 2 vient la ligne 3,
01:22
which describes exactly how we'll go about counting.
37
82982
2511
qui décrit exactement comment on va procéder.
01:25
The indentation implies that it's line 3
38
85493
2250
L'indentation sous-entend que c'est la ligne 3
01:27
that will repeat.
39
87743
1222
qui va se répéter.
01:28
So, what the pseudocode is saying
40
88965
1219
Donc, ce que dit le pseudocode,
01:30
is that after starting at zero,
41
90184
2066
c'est qu'après avoir commencé à zéro,
01:32
for each person in the room,
42
92250
1710
pour chaque personne dans la pièce,
01:33
we'll increase n by 1.
43
93960
2218
nous allons augmenter n de 1.
01:36
Now, is this algorithm correct?
44
96178
2329
Alors, cet algorithme est-il correct ?
01:38
Well, let's bang on it a bit.
45
98507
1608
Eh bien, jetons un coup d’œil là-dessus.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
Est-ce que ça marche si il y a 2 personnes dans la salle ?
01:42
Let's see.
47
102941
780
Voyons ça.
01:43
In line 1, we initialize n to zero.
48
103721
2085
À la ligne 1, nous initialisons n à zéro.
01:45
For each of these two people,
49
105806
1302
Pour chacune de ces deux personnes,
01:47
we then increment n by 1.
50
107108
2168
nous incrémentons n par 1.
01:49
So, in the first trip through the loop,
51
109276
1582
Dans le premier parcours à travers la boucle,
01:50
we update n from zero to 1,
52
110858
2005
nous mettons à jour n de zéro à 1,
01:52
on the second trip through that same loop,
53
112863
1655
lors du second parcours à travers cette même boucle,
01:54
we update n from 1 to 2.
54
114518
2249
nous mettons à jour n de 1 à 2.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
Et donc, à la fin de cet algorithme, n vaut 2,
02:00
which indeed matches the number of people in the room.
56
120108
2113
ce qui correspond au nombre de personnes dans la salle.
02:02
So far, so good.
57
122221
1223
Pour l'instant ça va.
02:03
How about a corner case, though?
58
123444
1752
Cependant, si on poussait le raisonnement plus loin ?
02:05
Suppose that there are zero people in the room,
59
125196
1964
Supposons qu'il y a zéro personnes dans la salle,
02:07
besides me, who's doing the counting.
60
127160
2347
à part moi, qui fait le comptage..
02:09
In line 1, we again initialize n to zero.
61
129507
3010
À la ligne 1, nous initialisons à nouveau n à zéro.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
Cependant, cette fois, la ligne 3 ne s'exécute pas du tout
02:15
since there isn't a person in the room,
63
135039
1880
puisqu'il n'y a personne dans la pièce,
02:16
and so, n remains zero,
64
136919
1624
et donc, n reste à zéro,
02:18
which indeed matches the number of people in the room.
65
138543
2359
ce qui correspond en effet au nombre de personnes dans la salle.
02:20
Pretty simple, right?
66
140902
906
Assez simple, non ?
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
Mais compter les personnes une à une est plutôt inefficace, non ?
02:25
Surely, we can do better!
68
145024
1568
Bien sûr, nous pouvons faire mieux !
02:26
Why not count two people at a time?
69
146592
1866
Pourquoi ne pas les compter deux par deux ?
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
Au lieu de compter 1, 2, 3, 4, 5, 6, 7, 8 et ainsi de suite,
02:33
why not count
71
153557
918
pourquoi ne pas compter
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2, 4, 6, 8 etc ?
02:36
It even sounds faster, and it surely is.
73
156602
2418
Ça semble bien plus rapide, et ça l'est assurément.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
Nous allons exprimer cette optimisation en pseudocode.
02:41
Let n equal zero.
75
161855
1462
Soit n égal zéro.
02:43
For each pair of people in room,
76
163317
1997
Pour chaque paire de personnes dans la salle,
02:45
set n = n + 2.
77
165314
2588
la valeur de n prend n + 2.
02:47
Pretty simple change, right?
78
167902
1673
C'est un changement assez simple, pas vrai ?
02:49
Rather than count people one at a time,
79
169575
1791
Plutôt que de compter les gens un par un,
02:51
we instead count them two at a time.
80
171366
2343
nous les comptons deux par deux.
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
Cet algorithme est donc deux fois plus vite que le dernier.
02:56
But is it correct?
82
176524
1346
Mais est-ce correct ?
02:57
Let's see.
83
177870
794
Nous allons voir.
02:58
Does it work if there are 2 people in the room?
84
178664
2125
Est-ce que ça marche si il y a 2 personnes dans la salle ?
03:00
In line 1, we initialize n to zero.
85
180789
2342
À la ligne 1, nous initialisons n à zéro.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
Pour cette paire de personnes, nous incrémentons n par 2.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
Et donc, à la fin de cet algorithme, n vaut 2,
03:08
which indeed matches the number of people in the room.
88
188921
2382
ce qui, en effet, correspond au nombre de personnes dans la salle.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
Supposons ensuite qu'il y a zéro personnes dans la salle.
03:13
In line 1, we initialize n to zero.
90
193715
2587
À la ligne 1, nous initialisons n à zéro.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
Comme précédemment, la ligne 3 ne s'exécute pas du tout
03:18
since there aren't any pairs of people in the room,
92
198382
2342
car il n'y a aucune paire de personnes dans la pièce,
03:20
and so, n remains zero,
93
200724
1686
et donc, n reste à zéro,
03:22
which indeed matches the number of people in the room.
94
202410
2773
ce qui correspond en effet au nombre de personnes dans la salle.
03:25
But what if there are 3 people in the room?
95
205183
2372
Mais que se passe-t-il s'il y a 3 personnes dans la salle ?
03:27
How does this algorithm fair?
96
207555
1937
Comment s’exécute cet algorithme ?
03:29
Let's see.
97
209492
829
Nous allons voir.
03:30
In line 1, we initialize n to zero.
98
210321
2670
À la ligne 1, nous initialisons n à zéro.
03:32
For a pair of those people,
99
212991
1290
Pour une paire de ces personnes,
03:34
we then increment n by 2,
100
214281
1916
nous incrémentons n par 2,
03:36
but then what?
101
216197
992
mais alors quoi ?
03:37
There isn't another full pair of people in the room,
102
217189
2262
Il n'y a pas une autre paire complète de personnes dans la salle,
03:39
so line 2 no longer applies.
103
219451
2210
par conséquent, la ligne 2 ne s'applique plus.
03:41
And so, by this algorithm's end,
104
221661
1669
Et donc, à la fin de cet algorithme,
03:43
n is still 2, which isn't correct.
105
223330
2596
n vaut encore 2, ce qui n'est pas correct.
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
En effet, on dit que cet algorithme est buggé
03:48
because it has a mistake.
107
228258
1148
parce qu'il comporte une erreur.
03:49
Let's redress with some new pseudocode.
108
229406
1896
Nous allons réparer ça en apportant du pseudocode.
03:51
Let n equal zero.
109
231302
1793
Soit n égal zéro.
03:53
For each pair of people in room,
110
233095
2123
Pour chaque paire de personnes dans la salle,
03:55
set n = n + 2.
111
235218
2422
la valeur de n = n + 2.
03:57
If 1 person remains unpaired,
112
237640
2459
Si 1 personne reste non appariée,
04:00
set n = n + 1.
113
240099
2376
n prend la valeur n + 1.
04:02
To solve this particular problem,
114
242475
1507
Pour résoudre ce problème particulier,
04:03
we've introduced in line 4 a condition,
115
243982
2249
nous avons introduit à la ligne 4 une condition,
04:06
otherwise known as a branch,
116
246231
1835
qu'on appelle aussi une branche,
04:08
that only executes if there is one person
117
248066
2253
qui ne s'exécute que s'il y a une personne
04:10
we could not pair with another.
118
250319
1876
qu'on a pas pu apparier avec une autre.
04:12
So now, whether there's 1 or 3
119
252195
2065
Donc, maintenant, qu'il y ait 1, 3
04:14
or any odd number of people in the room,
120
254260
2273
ou tout nombre impair de personnes dans la salle,
04:16
this algorithm will now count them.
121
256533
2288
cet algorithme les comptera.
04:18
Can we do even better?
122
258821
1345
Pouvons-nous faire mieux encore ?
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
Eh bien, nous pourrions compter par 3, 4 ou même par 5 et 10,
04:23
but beyond that it's going to get
124
263460
1300
mais au-delà de ça, ça va devenir
04:24
a little bit difficult to point.
125
264760
1870
un peu plus difficile à pointer.
04:26
At the end of the day,
126
266630
937
À la fin de la journée,
04:27
whether executed by computers or humans,
127
267567
2264
qu'ils soient exécuté par des ordinateurs ou par des humains,
04:29
algorithms are just a set of instructions
128
269831
1960
les algorithmes ne sont qu'un ensemble d'instructions
04:31
with which to solve problems.
129
271791
1838
permettant de résoudre les problèmes.
04:33
These were just three.
130
273629
1743
Ce n'en était que trois parmi tant d'autres.
04:35
What problem would you solve with an algorithm?
131
275372
2982
Quel problème pourriez-vous résoudre avec un algorithme ?
À propos de ce site Web

Ce site vous présentera des vidéos YouTube utiles pour apprendre l'anglais. Vous verrez des leçons d'anglais dispensées par des professeurs de premier ordre du monde entier. Double-cliquez sur les sous-titres anglais affichés sur chaque page de vidéo pour lire la vidéo à partir de là. Les sous-titres défilent en synchronisation avec la lecture de la vidéo. Si vous avez des commentaires ou des demandes, veuillez nous contacter en utilisant ce formulaire de contact.

https://forms.gle/WvT1wiN1qDtmnspy7