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
المترجم: Ammar Alqatari المدقّق: khalid marbou
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
وسوف تعد من الصفر
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
حسنا، في السطر الأول قمنا بتعريف
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
الآن، السطر الثاني ينوه ببداية "حلقة تكرار"،
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
والذي يصف تماما كيف سنقوم بعدّنا.
01:25
The indentation implies that it's line 3
38
85493
2250
المسافة تبين أن السطر الثالث
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
في السطر الأول، نعيد قيمة n للعدد 0.
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
افرض أنه كان هناك 0 من الأشخاص في الغرفة،
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
في السطر الأول، نعيد قيمة n إلى 0.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
ولكن في هذه الحالة السطر الثالث لا ينفذ على الإطلاق
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 يساوي 0.
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
في السطر الأول، نعين قيمة 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
فلنفرض الآن بأنه هناك 0 من الأشخاص في الغرفة.
03:13
In line 1, we initialize n to zero.
90
193715
2587
في السطر الأول، نعيد قيمة n إلى صفر.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
كما في السابق، السطر الثالث لا ينفذ على الإطلاق
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 تساوي 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
ولكن ماذا يحصل إن كان هناك 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
في السطر الأول، نعيد قيمة n إلى 0.
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
وبالتالي لن يطبق السطر الثاني.
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 يساوي 0.
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
قمنا في السطر الرابع بإضافة شرط،
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
حسنا نستطيع أن نعد كل 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