What's an algorithm? - David J. Malan

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

TED-Ed


Κάντε διπλό κλικ στους αγγλικούς υπότιτλους παρακάτω για να αναπαραγάγετε το βίντεο.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
Μετάφραση: Maria K. Επιμέλεια: Lucas Kaimaras
00:15
What's an algorithm?
1
15483
1348
Τι είναι ένας αλγόριθμος;
00:16
In computer science,
2
16831
831
Στην πληροφορική, ο αλγόριθμος είναι μια σειρά από οδηγίες
00:17
an algorithm is a set of instructions
3
17662
1754
00:19
for solving some problem, step-by-step.
4
19416
2689
για τη σταδιακή επίλυση ενός προβλήματος.
Κατά κανόνα, οι αλγόριθμοι εκτελούνται από υπολογιστές,
00:22
Typically, algorithms are executed by computers,
5
22105
2272
00:24
but we humans have algorithms as well.
6
24377
2167
αλλά έχουμε και οι άνθρωποι αλγορίθμους.
00:26
For instance, how would you go about counting
7
26544
1853
Για παράδειγμα, πώς θα μετρούσατε τον αριθμό των ανθρώπων σε ένα δωμάτιο;
00:28
the number of people in a room?
8
28397
1820
00:30
Well, if you're like me,
9
30217
1215
Αν είστε σαν εμένα,
00:31
you probably point at each person,
10
31432
1496
πιθανώς θα δείχνατε κάθε άνθρωπο,
00:32
one at a time,
11
32928
960
00:33
and count up from 0:
12
33888
1837
έναν-έναν
και θα μετρούσατε από το 0:
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1, 2, 3, 4 και ούτω καθεξής.
00:38
Well, that's an algorithm.
14
38598
1113
Να ένας αλγόριθμος.
00:39
In fact, let's try to express it
15
39711
1134
Ας προσπαθήσουμε να τον εκφράσουμε λίγο πιο επίσημα, σε ψευδοκώδικα,
00:40
a bit more formally in pseudocode,
16
40845
2229
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
μια σύνταξη αγγλικής μορφής σαν γλώσσα προγραμματισμού.
00:46
Let n equal 0.
19
46029
1767
Έστω ότι το ν ισούται με 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
Για κάθε άνθρωπο στο δωμάτιο, θέστε ν = ν + 1.
00:52
How to interpret this pseudocode?
21
52588
1497
Πώς ερμηνεύεται αυτός ο ψευδοκώδικας;
00:54
Well, line 1 declares, so to speak,
22
54085
1836
Η γραμμή 1 υποδηλώνει, ας το πούμε έτσι,
00:55
a variable called n
23
55921
1416
μια μεταβλητή που ονομάζεται ν και έχει αρχική τιμή 0.
00:57
and initializes its value to zero.
24
57337
2379
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
Αυτό σημαίνει με λίγα λόγια ότι στην αρχή του αλγορίθμου μας,
01:02
the thing with which we're counting
26
62051
1584
αυτό για το οποίο μετράμε έχει τιμή 0.
01:03
has a value of zero.
27
63635
1668
01:05
After all, before we start counting,
28
65303
1336
Εξάλλου, πριν αρχίσουμε να μετράμε, δεν έχουμε μετρήσει τίποτε ακόμη.
01:06
we haven't counted anything yet.
29
66639
1669
01:08
Calling this variable n is just a convention.
30
68308
2248
Η ονομασία της μεταβλητής ν είναι απλά μια σύμβαση.
01:10
I could have called it almost anything.
31
70556
2005
Μπορούσαμε να την ονομάσουμε οτιδήποτε.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
Η γραμμή 2 σηματοδοτεί την αρχή της διαδικασίας, μια ακολουθία
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
από πολλαπλώς επαναλαμβανόμενα βήματα.
01:17
So, in our example, the step we're taking
34
77691
1794
Στο παράδειγμά μας, το βήμα που λαμβάνουμε
01:19
is counting people in the room.
35
79485
1734
είναι η καταμέτρηση ανθρώπων στο δωμάτιο.
01:21
Beneath line 2 is line 3,
36
81219
1763
01:22
which describes exactly how we'll go about counting.
37
82982
2511
Κάτω από τη γραμμή 2 είναι η γραμμή 3 που περιγράφει πώς θα μετρήσουμε.
01:25
The indentation implies that it's line 3
38
85493
2250
Η εσοχή υποδηλώνει ότι η γραμμή 3 θα επαναληφθεί.
01:27
that will repeat.
39
87743
1222
01:28
So, what the pseudocode is saying
40
88965
1219
Οπότε, στην ουσία ο ψευδοκώδικας λέει ότι αφότου αρχίσουμε από το 0,
01:30
is that after starting at zero,
41
90184
2066
01:32
for each person in the room,
42
92250
1710
για κάθε άνθρωπο στο δωμάτιο, θα αυξάνουμε το ν κατά ένα.
01:33
we'll increase n by 1.
43
93960
2218
01:36
Now, is this algorithm correct?
44
96178
2329
Τώρα, είναι αυτός ο αλγόριθμος σωστός;
01:38
Well, let's bang on it a bit.
45
98507
1608
Ας τον αναλύσουμε.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
Λειτουργεί αν υπάρχουν δύο άνθρωποι στο δωμάτιο;
01:42
Let's see.
47
102941
780
Ας δούμε.
01:43
In line 1, we initialize n to zero.
48
103721
2085
Στη γραμμή 1, θέτουμε αρχικά το ν στο 0.
01:45
For each of these two people,
49
105806
1302
Για κάθε άνθρωπο αυξάνουμε το ν κατά ένα.
01:47
we then increment n by 1.
50
107108
2168
01:49
So, in the first trip through the loop,
51
109276
1582
Οπότε, στην πρώτη φάση της ακολουθίας, ανανεώνουμε το ν από 0 σε 1,
01:50
we update n from zero to 1,
52
110858
2005
01:52
on the second trip through that same loop,
53
112863
1655
στη δεύτερη φάση ανανεώνουμε το ν από 1 σε 2.
01:54
we update n from 1 to 2.
54
114518
2249
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
Έτσι, μέχρι το τέλος του αλγορίθμου,
το ν είναι 2, που είναι ο αριθμός των ανθρώπων στο δωμάτιο.
02:00
which indeed matches the number of people in the room.
56
120108
2113
02:02
So far, so good.
57
122221
1223
Μέχρι εδώ, όλα καλά.
02:03
How about a corner case, though?
58
123444
1752
Τι συμβαίνει σε ακραίες περιπτώσεις όμως;
02:05
Suppose that there are zero people in the room,
59
125196
1964
Υποθέστε δεν υπάρχουν άνθρωποι στο δωμάτιο εκτός από μένα, που μετράω.
02:07
besides me, who's doing the counting.
60
127160
2347
02:09
In line 1, we again initialize n to zero.
61
129507
3010
Στη γραμμή 1, ρυθμίζουμε το ν στο 0.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
Αυτή τη φορά όμως, η γραμμή 3 δεν εκτελείται,
02:15
since there isn't a person in the room,
63
135039
1880
αφού δεν υπάρχει άνθρωπος στο δωμάτιο.
02:16
and so, n remains zero,
64
136919
1624
Οπότε, το ν παραμένει 0,
02:18
which indeed matches the number of people in the room.
65
138543
2359
που όντως ισοδυναμεί με τον αριθμό των ανθρώπων στο δωμάτιο.
02:20
Pretty simple, right?
66
140902
906
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
Αρκετά απλό, σωστά;
Μετρώντας, όμως, ανθρώπους έναν-έναν δεν είναι αποδοτικό.
02:25
Surely, we can do better!
68
145024
1568
Σίγουρα, μπορούμε καλύτερα!
02:26
Why not count two people at a time?
69
146592
1866
Γιατί να μη μετράμε δύο ανθρώπους τη φορά;
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
Αντί να μετράμε 1, 2, 3, 4, 5, 6, 7, 8 και ούτω καθεξής,
02:33
why not count
71
153557
918
γιατί να μη μετρήσουμε 2, 4, 6, 8 και ούτω καθεξής;
02:34
2, 4, 6, 8, and so on?
72
154475
2127
02:36
It even sounds faster, and it surely is.
73
156602
2418
Ακούγεται και πιο γρήγορο, και σίγουρα είναι.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
Ας εκφράσουμε αυτή τη βελτιστοποίηση σε ψευδοκώδικα.
02:41
Let n equal zero.
75
161855
1462
Έστω ότι το ν ισούται με 0.
02:43
For each pair of people in room,
76
163317
1997
Για κάθε ζευγάρι ανθρώπων στο δωμάτιο, θέτουμε ν = ν + 2.
02:45
set n = n + 2.
77
165314
2588
02:47
Pretty simple change, right?
78
167902
1673
Αρκετά απλό, σωστά;
02:49
Rather than count people one at a time,
79
169575
1791
Αντί να μετράμε έναν-έναν άνθρωπο, τους μετράμε δύο-δύο.
02:51
we instead count them two at a time.
80
171366
2343
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
Αυτός ο αλγόριθμος γίνεται έτσι δύο φορές πιο γρήγορος.
02:56
But is it correct?
82
176524
1346
Είναι όμως αυτό σωστός;
02:57
Let's see.
83
177870
794
Ας δούμε.
02:58
Does it work if there are 2 people in the room?
84
178664
2125
Πιάνει αν υπάρχουν δύο άνθρωποι στο δωμάτιο;
03:00
In line 1, we initialize n to zero.
85
180789
2342
Στη γραμμή 1, θέτουμε αρχικά το ν ως 0.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
Για αυτό το ένα ζευγάρι ανθρώπων, αυξάνουμε το ν κατά δύο.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
Έτσι, με το τέλος του αλγορίθμου, το ν ισούται με 2,
03:08
which indeed matches the number of people in the room.
88
188921
2382
όσος και αριθμός των ανθρώπων στο δωμάτιο.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
Κατόπιν, έστω ότι δεν υπάρχουν άνθρωποι.
03:13
In line 1, we initialize n to zero.
90
193715
2587
Στη γραμμή 1, θέτουμε αρχικά το ν σε 0.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
Όπως πριν, η γραμμή 3 δεν εκτελείται,
03:18
since there aren't any pairs of people in the room,
92
198382
2342
αφού δεν υπάρχουν ζεύγη ανθρώπων στο δωμάτιο.
03:20
and so, n remains zero,
93
200724
1686
Οπότε, το ν παραμένει 0,
03:22
which indeed matches the number of people in the room.
94
202410
2773
κάτι που ισοδυναμεί με τον αριθμό των ανθρώπων στο δωμάτιο.
03:25
But what if there are 3 people in the room?
95
205183
2372
Τι γίνεται, όμως, αν υπάρχουν τρεις άνθρωποι στο δωμάτιο;
03:27
How does this algorithm fair?
96
207555
1937
Πώς διαμορφώνεται ο αλγόριθμος;
03:29
Let's see.
97
209492
829
Ας δούμε.
03:30
In line 1, we initialize n to zero.
98
210321
2670
Στη γραμμή 1, θέτουμε αρχικά το ν σε 0.
03:32
For a pair of those people,
99
212991
1290
Για ένα ζευγάρι ανθρώπων αυξάνουμε το ν κατά δύο.
03:34
we then increment n by 2,
100
214281
1916
03:36
but then what?
101
216197
992
Μετά όμως τι;
03:37
There isn't another full pair of people in the room,
102
217189
2262
Δεν υπάρχει άλλο ζευγάρι ανθρώπων,
03:39
so line 2 no longer applies.
103
219451
2210
οπότε η γραμμή 2 δεν εφαρμόζεται πια.
03:41
And so, by this algorithm's end,
104
221661
1669
Έτσι, με το τέλος αυτού του αλγορίθμου, το ν παραμένει 2, που είναι λάθος.
03:43
n is still 2, which isn't correct.
105
223330
2596
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
Αυτός ο αλγόριθμος είναι προβληματικός, επειδή έχει ένα λάθος.
03:48
because it has a mistake.
107
228258
1148
03:49
Let's redress with some new pseudocode.
108
229406
1896
Ας το επανορθώσουμε με έναν νέο ψευδοκώδικα.
03:51
Let n equal zero.
109
231302
1793
Έστω ότι το ν ισούται με 0.
03:53
For each pair of people in room,
110
233095
2123
Για κάθε ζευγάρι ανθρώπων στο δωμάτιο, θέτουμε ν = ν + 2.
03:55
set n = n + 2.
111
235218
2422
03:57
If 1 person remains unpaired,
112
237640
2459
Αν ένας άνθρωπος μείνει χωρίς «ταίρι», θέτουμε ν = ν + 1.
04:00
set n = n + 1.
113
240099
2376
04:02
To solve this particular problem,
114
242475
1507
Για να λύσουμε αυτό το πρόβλημα,
04:03
we've introduced in line 4 a condition,
115
243982
2249
θέτουμε στη γραμμή 4 μια υπόθεση,
04:06
otherwise known as a branch,
116
246231
1835
αλλιώς γνωστή ως διακλάδωση, που εκτελείται μόνο
04:08
that only executes if there is one person
117
248066
2253
αν υπάρχει άνθρωπος που δεν μπορεί να βρει «ταίρι».
04:10
we could not pair with another.
118
250319
1876
04:12
So now, whether there's 1 or 3
119
252195
2065
Οπότε τώρα, είτε είναι ένας ή τρεις,
04:14
or any odd number of people in the room,
120
254260
2273
ή άλλος μονός αριθμός ανθρώπων στο δωμάτιο,
04:16
this algorithm will now count them.
121
256533
2288
αυτός ο αλγόριθμος τώρα θα τους μετρήσει.
04:18
Can we do even better?
122
258821
1345
Μπορούμε ακόμη καλύτερα;
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
Θα μπορούσαμε να μετρήσουμε ανά τρία ή τέσσερα ή ανά πέντε και δέκα,
04:23
but beyond that it's going to get
124
263460
1300
αλλά θα ήταν πολύ δύσκολο να πάμε πέρα από αυτό.
04:24
a little bit difficult to point.
125
264760
1870
04:26
At the end of the day,
126
266630
937
Όπως και να έχει,
04:27
whether executed by computers or humans,
127
267567
2264
είτε εκτελούνται από υπολογιστές ή ανθρώπους,
04:29
algorithms are just a set of instructions
128
269831
1960
οι αλγόριθμοι είναι απλώς μια σειρά οδηγιών
04:31
with which to solve problems.
129
271791
1838
για την επίλυση προβλημάτων.
04:33
These were just three.
130
273629
1743
Αυτοί ήταν μόνο τρεις.
04:35
What problem would you solve with an algorithm?
131
275372
2982
Τι πρόβλημα θα λύνατε εσείς με έναν αλγόριθμο;
Σχετικά με αυτόν τον ιστότοπο

Αυτός ο ιστότοπος θα σας παρουσιάσει βίντεο στο YouTube που είναι χρήσιμα για την εκμάθηση της αγγλικής γλώσσας. Θα δείτε μαθήματα αγγλικών που διδάσκουν κορυφαίοι καθηγητές από όλο τον κόσμο. Κάντε διπλό κλικ στους αγγλικούς υπότιτλους που εμφανίζονται σε κάθε σελίδα βίντεο για να αναπαράγετε το βίντεο από εκεί. Οι υπότιτλοι μετακινούνται συγχρονισμένα με την αναπαραγωγή του βίντεο. Εάν έχετε οποιαδήποτε σχόλια ή αιτήματα, παρακαλούμε επικοινωνήστε μαζί μας χρησιμοποιώντας αυτή τη φόρμα επικοινωνίας.

https://forms.gle/WvT1wiN1qDtmnspy7