What's an algorithm? - David J. Malan

המוח שלכם יכול לפתור אלגוריתמים - דייויד מלן

2,570,249 views

2013-05-20 ・ TED-Ed


New videos

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
תרגום: Ido Dekkers עריכה: eviatar edlerman
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
ניצור n ששווה ל 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
לכל אדם בחדר, נציב n=n+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
משתנה שנקרא n
00:57
and initializes its value to zero.
24
57337
2379
ומאתחלת אותו עם הערך 0.
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
הדבר שאיתו אנחנו סופרים
01:03
has a value of zero.
27
63635
1668
יש לו ערך של 0.
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
לקרוא למשתנה הזה n זו פשוט מוסכמה.
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
מתחת לשורה 2 בשורה 3,
01:22
which describes exactly how we'll go about counting.
37
82982
2511
שמתארת בדיוק איך אנחנו נספור.
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
אז, מה שהפסואודו קוד אומר
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
אנחנו נגדיל את n ב 1.
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, אנחנו מאתחלים את n באפס.
01:45
For each of these two people,
49
105806
1302
לכל אחד משני האנשים האלה,
01:47
we then increment n by 1.
50
107108
2168
אנחנו נגדיל את n ב 1.
01:49
So, in the first trip through the loop,
51
109276
1582
אז, במעבר הראשון בלולאה,
01:50
we update n from zero to 1,
52
110858
2005
אנחנו מעדכנים את n מ 0 ל 1,
01:52
on the second trip through that same loop,
53
112863
1655
במעבר השני באותה לולאה,
01:54
we update n from 1 to 2.
54
114518
2249
אנחנו מעדכנים את n מ 1 ל 2.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
וכך, בסיום האלגוריתם, n הוא 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 אנחנו מאתחלים את n לאפס.
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
וכך, n נשאר אפס,
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
למה לא לספור
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2,4,6,8 וכך הלאה?
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
נצהיר על n שווה אפס.
02:43
For each pair of people in room,
76
163317
1997
לכל זוג אנשים בחדר,
02:45
set n = n + 2.
77
165314
2588
נציב n=n+2.
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, אנחנו מאתחלים את n ל 0.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
לזוג האנשים הזה, אנחנו מגדילים את n ב 2.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
וכך, בסוף האלגוריתם הזה, n הוא 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, אנחנו מאתחלים את n לאפס.
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
וכך, n נשאר אפס,
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
אבל מה אם היו 3 אנשים בחדר?
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 מאתחלים את n לאפס.
03:32
For a pair of those people,
99
212991
1290
לזוג מהאנשים האלה,
03:34
we then increment n by 2,
100
214281
1916
אנחנו מעלים את n ב 2,
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
וכך, בסופו אל האלגוריתם הזה,
03:43
n is still 2, which isn't correct.
105
223330
2596
n הוא עדיין 2, מה שלא נכון.
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
נצהיר על n שווה לאפס.
03:53
For each pair of people in room,
110
233095
2123
לכל זוג של אנשים בחדר,
03:55
set n = n + 2.
111
235218
2422
נציב n=n+2
03:57
If 1 person remains unpaired,
112
237640
2459
אם אדם אחד נשאר ללא זוג,
04:00
set n = n + 1.
113
240099
2376
נציב n=n+1.
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
אז עכשיו, בין אם יש 1 או 3
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
ובכן, אנחנו יכולים לספור בקפיצות של 3, 4 או אפילו 5 ו 10,
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