Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
1
00:00:00,011 --> 00:00:02,463
(موسيقى خفيفة)
2
2
00:00:02,463 --> 00:00:05,270
(نقر لوحة المفاتيح)
3
3
00:00:05,270 --> 00:00:06,930
حسنًا ، في بعض مقاطع الفيديو v>
4
4
00:00:06,930 --> 00:00:10,610
سنبدأ في البحث في خوارزميات الفرز ،
5
5
00:00:10,610 --> 00:00:12,690
وسيكون من المفيد حقًا أن نكون كذلك
6
6
00:00:12,690 --> 00:00:16,490
قادرة على مقارنة أداء خوارزمية واحدة
7
7
00:00:16,490 --> 00:00:18,190
ضد خوارزمية أخرى.
8
8
00:00:18,190 --> 00:00:21,060
لذلك قد تعتقد أن طريقة واحدة يمكننا القيام بذلك
9
9
00:00:21,060 --> 00:00:25,430
هو تنفيذ خوارزمية واحدة ثم وضع سطر من التعليمات البرمجية
10
10
00:00:25,430 --> 00:00:29,820
يسجل وقت البدء ثم تشغيل التنفيذ
11
11
00:00:29,820 --> 00:00:32,670
وبعد ذلك يكون لديك سطر من التعليمات البرمجية يسجل وقت الانتهاء
12
12
00:00:32,670 --> 00:00:36,100
ويمكننا طرح وقت البدء من وقت الانتهاء
13
13
00:00:36,100 --> 00:00:38,910
ونحصل على وقت تشغيل التنفيذ
14
14
00:00:38,910 --> 00:00:40,280
من تلك الخوارزمية.
15
15
00:00:40,280 --> 00:00:42,560
ثم نفعل الشيء نفسه مع خوارزمية أخرى
16
16
00:00:42,560 --> 00:00:44,120
ونقارن بين الاثنين فقط.
17
17
00:00:44,120 --> 00:00:46,490
يبدو رائعا من الناحية النظرية ولكن لسوء الحظ
18
18
00:00:46,490 --> 00:00:49,540
هذه ليست طريقة جيدة للقيام بذلك بسبب الأجهزة.
19
19
00:00:49,540 --> 00:00:52,550
ستؤثر الأجهزة على وقت التشغيل
20
20
00:00:52,550 --> 00:00:53,540
من هذه الخوارزميات.
21
21
00:00:53,540 --> 00:00:54,710
. أعني، فكر في ذلك
22
22
00:00:54,710 --> 00:00:59,470
إذا أردنا تشغيل تنفيذ على كمبيوتر سطح المكتب
23
23
00:00:59,470 --> 00:01:02,900
التي تم بناؤها في عام 2017 وقارن ذلك
24
24
00:01:02,900 --> 00:01:06,650
إلى وقت تشغيل نفس التنفيذ بالضبط
25
25
00:01:06,650 --> 00:01:09,760
على جهاز كمبيوتر مكتبي تم إنشاؤه قبل 20 عامًا
26
26
00:01:09,760 --> 00:01:11,810
وربما كان كمبيوتر بنتيومًا قديمًا ،
27
27
00:01:11,810 --> 00:01:14,450
أو حتى نذهب أبعد من ذلك ونركض
28
28
00:01:14,450 --> 00:01:18,180
التنفيذ على Commodore 64 أو شيء من هذا القبيل ،
29
29
00:01:18,180 --> 00:01:21,350
من الواضح أن التطبيقات ستعمل بشكل أبطأ
30
30
00:01:21,350 --> 00:01:23,420
على الأجهزة القديمة.
31
31
00:01:23,420 --> 00:01:26,470
وإذا أردنا تنفيذ تنفيذ على جهاز كمبيوتر فائق ،
32
32
00:01:26,470 --> 00:01:28,810
ستعمل بسرعة كبيرة على الرغم من ذلك
33
33
00:01:28,810 --> 00:01:31,710
قد تكون خوارزمية غير فعالة حقًا.
34
34
00:01:31,710 --> 00:01:34,400
لذلك نحن بحاجة إلى مقياس أكثر موضوعية
35
35
00:01:34,400 --> 00:01:36,870
من مجرد وقت التشغيل المباشر.
36
36
00:01:36,870 --> 00:01:41,870
وما نفعله هو أن ننظر إلى عدد الخطوات
37
37
00:01:42,220 --> 00:01:45,740
التي يتطلبها تنفيذ الخوارزمية.
38
38
00:01:45,740 --> 00:01:49,200
ونسمي هذا تعقيد الوقت.
39
39
00:01:49,200 --> 00:01:50,850
هناك نوعان من التعقيد:
40
40
00:01:50,850 --> 00:01:52,900
هناك تعقيد زمني وهو العدد
41
41
00:01:52,900 --> 00:01:56,590
من الخطوات المتبعة لتشغيل الخوارزمية ؛
42
42
00:01:56,590 --> 00:01:59,750
ثم هناك تعقيد الذاكرة وهو المقدار
43
43
00:01:59,750 --> 00:02:01,800
من الذاكرة اللازمة لتشغيل خوارزمية.
44
44
00:02:01,800 --> 00:02:04,590
الآن هذه الأيام ، لأن الذاكرة رخيصة جدًا ،
45
45
00:02:04,590 --> 00:02:07,270
تعقيد الذاكرة ليس مثل هذه المشكلة.
46
46
00:02:07,270 --> 00:02:09,850
لذلك نحن في هذه الأيام نهتم بأنفسنا بشكل رئيسي
47
47
00:02:09,850 --> 00:02:10,960
مع تعقيد الوقت.
48
48
00:02:10,960 --> 00:02:14,500
لذلك نحن مهتمون بعدد الخطوات التي يستغرقها ذلك
49
49
00:02:14,500 --> 00:02:15,890
لتشغيل خوارزمية؟
50
50
00:02:15,890 --> 00:02:19,270
الآن عندما نفعل ذلك ، نود أن ننظر في أسوأ الحالات.
51
51
00:02:19,270 --> 00:02:21,760
إن النظر إلى أفضل حالة لا يساعدنا لأنه
52
52
00:02:21,760 --> 00:02:24,280
نادرًا ما تحصل على أفضل حالة.
53
53
00:02:24,280 --> 00:02:26,460
الآن يمكننا أن نأخذ متوسط الحالة
54
54
00:02:26,460 --> 00:02:30,050
لكن هذا لن يخبرنا بالمطلق
55
55
00:02:30,050 --> 00:02:31,610
أسوأ تعقيد زمني.
56
56
00:02:31,610 --> 00:02:33,840
إذا أردنا معرفة الحد الأعلى ،
57
57
00:02:33,840 --> 00:02:36,990
مثل ما هو أسوأ ما يمكن أن نتوقعه
58
58
00:02:36,990 --> 00:02:39,380
من هذه الخوارزمية ، إنها مفيدة أكثر
59
59
00:02:39,380 --> 00:02:40,930
للنظر في أسوأ الحالات.
60
60
00:02:40,930 --> 00:02:44,580
لذلك من المفيد مقارنة السيناريو الأسوأ
61
61
00:02:44,580 --> 00:02:47,160
لخوارزمية واحدة ضد السيناريو الأسوأ
62
62
00:02:47,160 --> 00:02:48,240
للخوارزمية الأخرى.
63
63
00:02:48,240 --> 00:02:50,330
وهذه هي الطريقة التي نقوم بها.
64
64
00:02:50,330 --> 00:02:52,060
لذلك دعونا نلقي نظرة على الخوارزمية
65
65
00:02:52,060 --> 00:02:54,100
التي أعرضها على هذه الشاشة.
66
66
00:02:54,100 --> 00:02:56,650
لقد بحثنا بالفعل في خوارزمية لصنع الشاي
67
67
00:02:56,650 --> 00:02:59,850
لذا سننظر الآن في خطوة واحدة صغيرة.
68
68
00:02:59,850 --> 00:03:03,120
ولدينا خوارزمية لإضافة السكر إلى الشاي.
69
69
00:03:03,120 --> 00:03:07,060
لذا في هذه الخوارزمية ، الخطوة الأولى هي الحصول على الوعاء
70
70
00:03:07,060 --> 00:03:08,450
تحتوي على السكر.
71
71
00:03:08,450 --> 00:03:10,730
الخطوة الثانية هي الحصول على ملعقة.
72
72
00:03:10,730 --> 00:03:13,360
لذلك نفترض أن لدينا سكرًا سائبًا هنا.
73
73
00:03:13,360 --> 00:03:16,540
الخطوة الثالثة هي استخلاص السكر باستخدام الملعقة ،
74
74
00:03:16,540 --> 00:03:19,070
والخطوة الرابعة هي صب السكر
75
75
00:03:19,070 --> 00:03:21,190
من الملعقة إلى الشاي.
76
76
00:03:21,190 --> 00:03:24,880
وطبعا إذا كنت تريد أكثر من ملعقة شاي
77
77
00:03:24,880 --> 00:03:27,690
ثم عليك أن تكرر الخطوتين الثالثة والرابعة
78
78
00:03:27,690 --> 00:03:30,330
حتى تضيف الكمية المرغوبة من السكر.
79
79
00:03:30,330 --> 00:03:33,460
يمكننا الآن أن نرى من هذا أن عدد الخطوات
80
80
00:03:33,460 --> 00:03:35,800
أنه سيتطلب إضافة السكر إلى الشاي الخاص بك
81
81
00:03:35,800 --> 00:03:38,920
ستعتمد على عدد السكريات التي تريدها.
82
82
00:03:38,920 --> 00:03:41,000
إذا كنت تريد سكرًا واحدًا فقط ،
83
83
00:03:41,000 --> 00:03:44,410
ثم ستعمل هذه الخوارزمية بأربع خطوات.
84
84
00:03:44,410 --> 00:03:45,840
ولكن إذا كنت تريد سكرين ،
85
85
00:03:45,840 --> 00:03:47,760
سوف يستغرق ست خطوات لأن
86
86
00:03:47,760 --> 00:03:50,510
سيتعين عليك تكرار الخطوتين الثالثة والرابعة.
87
87
00:03:50,510 --> 00:03:52,910
لذلك دعونا نلقي نظرة على ما يحدث
88
88
00:03:52,910 --> 00:03:54,620
لعدد السكريات.
89
89
00:03:54,620 --> 00:03:58,330
لذلك إذا كان لديك سكر واحد ، ما عليك سوى القيام بأربع خطوات.
90
90
00:03:58,330 --> 00:04:02,350
إذا كان لديك نوعان من السكر ، فستحتاج إلى ست خطوات.
91
91
00:04:02,350 --> 00:04:04,080
إذا كنت تريد ثلاثة أنواع من السكريات في الشاي
92
92
00:04:04,080 --> 00:04:06,270
ستحتاج إلى ثماني خطوات لأنك ستفعل
93
93
00:04:06,270 --> 00:04:09,830
يجب أن تكرر الخطوتين الثالثة والرابعة ثلاث مرات.
94
94
00:04:09,830 --> 00:04:11,930
وإذا كنت تريد أربعة سكريات في الشاي الخاص بك ،
95
95
00:04:11,930 --> 00:04:14,230
أنا متأكد من أن معظمنا كان سيخرج بكفالة الآن ،
96
96
00:04:14,230 --> 00:04:16,770
لكن لدي صديق أقول أنه يأخذ
97
97
00:04:16,770 --> 00:04:19,360
الشاي مع السكر لها وليس العكس.
98
98
00:04:19,360 --> 00:04:22,230
لذلك قد تصل إلى الصف الرابع.
99
99
00:04:22,230 --> 00:04:24,640
إذا كنت تريد أربعة سكريات في الشاي الخاص بك ،
100
100
00:04:24,640 --> 00:04:25,770
ثم سيتعين عليك التكرار
101
101
00:04:25,770 --> 00:04:28,430
الخطوتين الثالثة والرابعة أربع مرات.
102
102
00:04:28,430 --> 00:04:30,380
ولذا سوف تتخذ 10 خطوات
103
103
00:04:30,380 --> 00:04:31,810
لوضع السكر في الشاي الخاص بك.
104
104
00:04:31,810 --> 00:04:33,990
هكذا يمكننا أن نرى عدد الخطوات
105
105
00:04:33,990 --> 00:04:36,920
أو التعقيد الزمني لخوارزمية السكر لدينا
106
106
00:04:36,920 --> 00:04:40,540
يعتمد على عدد السكريات التي يريدها شخص ما في الشاي.
107
107
00:04:40,540 --> 00:04:42,470
إذا كانوا يريدون سكرًا واحدًا فقط ،
108
108
00:04:42,470 --> 00:04:44,060
يستغرق الأمر منهم أربع خطوات فقط.
109
109
00:04:44,060 --> 00:04:47,920
لكن إذا أرادوا أربعة أنواع من السكريات ، فسيتخذون 10 خطوات.
110
110
00:04:47,920 --> 00:04:50,440
لذا فإن تعقيد الوقت يعطينا فكرة
111
111
00:04:50,440 --> 00:04:54,110
حول كيفية أداء الخوارزمية كعدد العناصر
112
112
00:04:54,110 --> 00:04:57,080
عليه أن يتعامل مع النمو كما نرى
113
113
00:04:57,080 --> 00:04:59,730
كعدد السكريات التي يجب أن تضيفها هذه الخوارزمية
114
114
00:04:59,730 --> 00:05:04,120
إلى الشاي ، يزداد عدد الخطوات المطلوبة.
115
115
00:05:04,120 --> 00:05:06,270
طريقة أخرى لقول هذا هو أنه يخبرنا
116
116
00:05:06,270 --> 00:05:08,890
مدى جودة الخوارزمية.
117
117
00:05:08,890 --> 00:05:11,060
إذن ما مدى نجاحها عندما يتعين عليها التعامل
118
118
00:05:11,060 --> 00:05:15,590
مع 100 عنصر مقابل 1،00 عنصر مقابل مليون عنصر؟
119
119
00:05:15,590 --> 00:05:18,840
وسنرى أن بعض الخوارزميات ستتوسع بشكل جيد حقًا
120
120
00:05:18,840 --> 00:05:20,720
والبعض الآخر ليس جيدًا.
121
121
00:05:20,720 --> 00:05:22,130
كلما زاد عدد العناصر ،
122
122
00:05:22,130 --> 00:05:25,240
كلما انخفض أداء الخوارزمية.
123
123
00:05:25,240 --> 00:05:28,710
الآن تدوين O الكبير هو وسيلة للتعبير
124
124
00:05:28,710 --> 00:05:31,733
التعقيد المرتبط بعدد العناصر
125
125
00:05:31,733 --> 00:05:33,900
أن الخوارزمية يجب أن تتعامل معها.
126
126
00:05:33,900 --> 00:05:36,060
وهي مكتوبة برأس مال O
127
127
00:05:36,060 --> 00:05:38,680
متبوعًا بتعبير بين قوسين.
128
128
00:05:38,680 --> 00:05:43,680
لذلك دعونا نحسب قيمة O الكبيرة لخوارزمية السكر لدينا.
129
129
00:05:44,570 --> 00:05:49,570
لذلك من المعتاد تحديد عدد العناصر بواسطة N.
130
130
00:05:50,730 --> 00:05:54,910
لذلك في حالتنا ، فإن عدد السكريات المرغوبة سوف يساوي N.
131
131
00:05:54,910 --> 00:05:58,370
وكما نرى من طاولتنا
132
132
00:05:58,370 --> 00:06:00,733
ومن خوارزميتنا هنا ،
133
133
00:06:01,760 --> 00:06:06,760
عدد الخطوات سيكون مرتين في N زائد اثنين.
134
134
00:06:07,880 --> 00:06:10,950
والسبب في ذلك هو أن عليك التكرار
135
135
00:06:10,950 --> 00:06:14,390
الخطوتين الثالثة والرابعة لعدد السكريات التي لديك ،
136
136
00:06:14,390 --> 00:06:15,980
لذلك هذا هو اثنان N.
137
137
00:06:15,980 --> 00:06:19,190
ثم زائد اثنين هو الخطوتين واحد واثنين.
138
138
00:06:19,190 --> 00:06:23,140
الآن كما رأينا عندما ينمو N ، يزداد عدد الخطوات.
139
139
00:06:23,140 --> 00:06:25,170
الآن لاحظ أن الاثنين ،
140
140
00:06:25,170 --> 00:06:26,530
سيكون من الصعب علي أن أقول ،
141
141
00:06:26,530 --> 00:06:30,220
لكن الاثنين في اثنين N زائد اثنين ،
142
142
00:06:30,220 --> 00:06:32,000
تظل ثابتة.
143
143
00:06:32,000 --> 00:06:34,930
لا تتغير مع تغير عدد السكريات.
144
144
00:06:34,930 --> 00:06:38,100
وبسبب ذلك فإننا لا نعتبرهم
145
145
00:06:38,100 --> 00:06:40,980
عندما نتوصل إلى قيمة O الكبيرة.
146
146
00:06:40,980 --> 00:06:44,090
إن N هو الذي يؤثر على عدد الخطوات.
147
147
00:06:44,090 --> 00:06:47,050
ولذا في هذه الحالة نقول أن الوقت معقد
148
148
00:06:47,050 --> 00:06:50,410
لهذه الخوارزمية هي O لـ N.
149
149
00:06:50,410 --> 00:06:53,110
ولأن التعقيد الزمني لهذه الخوارزمية
150
150
00:06:53,110 --> 00:06:55,340
يزيد بشكل خطي ،
151
151
00:06:55,340 --> 00:06:58,614
نحن نعتبر هذا تعقيدًا زمنيًا خطيًا.
152
152
00:06:58,614 --> 00:07:03,614
لذا فإن التعقيد الزمني لـ O لـ N هو تعقيد زمني خطي.
153
153
00:07:03,640 --> 00:07:06,340
وإذا عدنا إلى طاولتنا ،
154
154
00:07:06,340 --> 00:07:09,580
سنرى أننا نذهب أربعة ، ستة ، ثمانية ، 10
155
155
00:07:09,580 --> 00:07:13,350
وبالطبع سنستمر ، 12 ، 14 ، 16 ، 18.
156
156
00:07:13,350 --> 00:07:16,570
هذا تسلسل خطي ، إنه تسلسل خطي.
157
157
00:07:16,570 --> 00:07:21,120
وبالتالي التعقيد الزمني للسكريات المضافة
158
158
00:07:21,120 --> 00:07:23,920
إلى خوارزمية الشاي هي O من N.
159
159
00:07:23,920 --> 00:07:25,820
هذه هي قيم O الكبيرة
160
160
00:07:25,820 --> 00:07:28,627
سنرى بشكل أساسي في هذه الدورة.
161
161
00:07:28,627 --> 00:07:33,440
لديك O من واحد وهو تعقيد زمني مستمر ،
162
162
00:07:33,440 --> 00:07:36,930
O من لوغاريتم N أي تعقيد زمني لوغاريتمي ،
163
163
00:07:36,930 --> 00:07:41,460
وهذا هو log للأساس اثنين وليس للأساس 10.
164
164
00:07:41,460 --> 00:07:44,080
إذن فهو لوغاريتم ن للأساس اثنين.
165
165
00:07:44,080 --> 00:07:47,030
O لـ N وهو تعقيد زمني خطي.
166
166
00:07:47,030 --> 00:07:49,540
ثم لدينا O لـ N log N
167
167
00:07:49,540 --> 00:07:52,820
وهو N مرات لوغاريتم القاعدة اثنين N ،
168
168
00:07:52,820 --> 00:07:56,710
وهذا التعقيد الزمني لنجوم تسجيل نون ن.
169
169
00:07:56,710 --> 00:07:58,970
ولدينا O لـ N تربيع
170
170
00:07:58,970 --> 00:08:01,210
وهو تعقيد زمني من الدرجة الثانية.
171
171
00:08:01,210 --> 00:08:04,000
ستلاحظ أنه عندما ننظر إلى خوارزميات الفرز ،
172
172
00:08:04,000 --> 00:08:06,930
في الواقع ، ستكون المراتب القليلة الأولى التي ننظر إليها تربيعية.
173
173
00:08:06,930 --> 00:08:11,320
والترتيب في الجدول من الأفضل إلى الأسوأ.
174
174
00:08:11,320 --> 00:08:15,110
لذلك إذا كان بإمكانك استخدام خوارزمية وقت ثابت
175
175
00:08:15,110 --> 00:08:19,190
هذه طريقة أفضل من خوارزمية الوقت التربيعية.
176
176
00:08:19,190 --> 00:08:24,190
الآن كما قلت ، سمعتني أقول: O of one and O of N،
177
177
00:08:24,230 --> 00:08:25,620
هكذا تقولها.
178
178
00:08:25,620 --> 00:08:28,570
O ثم القيمة الموجودة بين قوسين.
179
179
00:08:28,570 --> 00:08:31,700
الآن عندما تعلمت عن تدوينات O الكبيرة ،
180
180
00:08:31,700 --> 00:08:36,170
لسبب ما الشخص الذي يقوم بتدريس المعلومات
181
181
00:08:36,170 --> 00:08:40,770
بدلاً من ذلك قال O للواحد ، O لـ N.
182
182
00:08:40,770 --> 00:08:42,880
وهكذا تم حفر ذلك في رأسي
183
183
00:08:42,880 --> 00:08:44,430
وهي عادة يصعب التخلص منها.
184
184
00:08:44,430 --> 00:08:46,550
تدوين O الكبير ، إنه نوع من الأشياء
185
185
00:08:46,550 --> 00:08:48,800
ليس عليك قولها معظم الوقت
186
186
00:08:48,800 --> 00:08:50,870
أنت تقرأه أو تكتبه.
187
187
00:08:50,870 --> 00:08:54,770
لذا فإن الطريقة الصحيحة لقولها هي O of one، O of N،
188
188
00:08:54,770 --> 00:08:56,570
O من السجل N ، وما إلى ذلك.
189
189
00:08:56,570 --> 00:08:59,040
لكنني سأخطئ في بعض الأحيان
190
190
00:08:59,040 --> 00:09:01,790
ونقول يا لأن هذا ما كان
191
191
00:09:01,790 --> 00:09:04,370
حفرت في رأسي عندما تعلمت هذه المادة.
192
192
00:09:04,370 --> 00:09:05,900
ولذا إذا سمعتني أقول ذلك ،
193
193
00:09:05,900 --> 00:09:07,730
إذا سمعتني أقول O للواحد ،
194
194
00:09:07,730 --> 00:09:09,490
O إلى مربع N ، وما إلى ذلك ،
195
195
00:09:09,490 --> 00:09:13,140
فقط قم بتحويل ذلك إلى O في عقلك.
196
196
00:09:13,140 --> 00:09:15,090
هناك احتمالات أنك لن تحصل عليه أبدًا في الواقع
197
197
00:09:15,090 --> 00:09:16,700
لقول هذا من أي وقت مضى.
198
198
00:09:16,700 --> 00:09:21,700
طوال مسيرتي المهنية بالكامل لم أضطر أبدًا إلى قول "O" من أي شيء.
199
199
00:09:21,860 --> 00:09:25,220
في الواقع ، لم نناقش مرة واحدة في حياتي المهنية بأكملها
200
200
00:09:25,220 --> 00:09:26,800
تدوين كبير يا.
201
201
00:09:26,800 --> 00:09:28,800
أنا متأكد من أن اعتمادًا على نوع ملفات
202
202
00:09:28,800 --> 00:09:30,360
التطبيق الذي تعمل عليه ،
203
203
00:09:30,360 --> 00:09:31,690
قد يكون ذلك مختلفًا بالنسبة لك.
204
204
00:09:31,690 --> 00:09:35,450
لكن في مسيرتي المهنية ، كانت تدوينات O الكبيرة نوعًا ما ليست مشكلة.
205
205
00:09:35,450 --> 00:09:38,860
لم يكن أبدًا شيئًا نحتاج إلى القلق بشأنه.
206
206
00:09:38,860 --> 00:09:41,500
ولذا إذا كنت تتحدث إلى شخص ما
207
207
00:09:41,500 --> 00:09:43,690
ويسألونك عن تدوين O الكبير
208
208
00:09:43,690 --> 00:09:46,420
أو قيم O الكبيرة تقول O من.
209
209
00:09:46,420 --> 00:09:49,670
وإذا سمعتني أقول "أوه" في هذه الدورة ،
210
210
00:09:49,670 --> 00:09:51,790
فقط قم بتحويل ذلك إلى O لـ.
211
211
00:09:51,790 --> 00:09:54,100
فلننتقل الآن إلى ويكيبيديا
212
212
00:09:54,100 --> 00:09:57,500
حتى نتمكن بالفعل من رؤية قيم O الكبيرة
213
213
00:09:57,500 --> 00:10:00,810
على رسم بياني حتى نتمكن من الحصول على فكرة بصرية
214
214
00:10:00,810 --> 00:10:04,713
الاختلافات بين قيم O الكبيرة المختلفة.
215
215
00:10:08,500 --> 00:10:12,820
أنا هنا في ويكيبيديا وستجد هذه الصورة
216
216
00:10:12,820 --> 00:10:15,560
في مقالة ويكيبيديا حول تدوين O الكبير
217
217
00:10:15,560 --> 00:10:19,380
وقمت أيضًا بتضمين رابط مباشر لهذه الصورة
218
218
00:10:19,380 --> 00:10:20,850
في قسم الموارد.
219
219
00:10:20,850 --> 00:10:25,180
تم إنشاء هذه الصورة بواسطة المستخدم Cmglee.
220
220
00:10:25,180 --> 00:10:30,180
وهذا رسم بياني لبعض قيم O الكبيرة ،
221
221
00:10:30,680 --> 00:10:34,230
وهذا يمثل كيفية تدهور الخوارزمية.
222
222
00:10:34,230 --> 00:10:38,470
على طول المحور X لدينا حجم الإدخال ،
223
223
00:10:38,470 --> 00:10:39,990
وبالتالي فإن عدد العناصر ؛
224
224
00:10:39,990 --> 00:10:43,950
وعلى طول المحور ص لدينا عدد الخطوات.
225
225
00:10:43,950 --> 00:10:46,770
لذلك يمكنك أن ترى خوارزمية ثابتة ،
226
226
00:10:46,770 --> 00:10:51,050
يا من واحد في هذا اللون البنفسجي ،
227
227
00:10:51,050 --> 00:10:53,550
مع زيادة عدد العناصر
228
228
00:10:53,550 --> 00:10:55,770
عدد الخطوات يبقى كما هو.
229
229
00:10:55,770 --> 00:10:58,220
هذا مجرد خط أفقي مستقيم.
230
230
00:10:58,220 --> 00:10:59,800
إذن هذا هو عدد الخطوات.
231
231
00:10:59,800 --> 00:11:02,000
وهذا الخط لا يتسلق على الإطلاق
232
232
00:11:02,000 --> 00:11:04,210
مع زيادة عدد العناصر.
233
233
00:11:04,210 --> 00:11:05,590
هذا هو أفضل حال.
234
234
00:11:05,590 --> 00:11:08,150
إذا كان بإمكانك الحصول على خوارزمية ثابتة ،
235
235
00:11:08,150 --> 00:11:10,320
هذا إلى حد كبير أفضل ما يمكنك القيام به.
236
236
00:11:10,320 --> 00:11:12,800
ثاني أفضل شيء هو اللوغاريتمي.
237
237
00:11:12,800 --> 00:11:15,800
ولاحظ أنه لوغاريتم للأساس اثنين.
238
238
00:11:15,800 --> 00:11:18,370
وسنرى بعض الخوارزميات
239
239
00:11:18,370 --> 00:11:20,530
التي لديها تعقيد هذا الوقت.
240
240
00:11:20,530 --> 00:11:22,840
هذا باللون الأزرق الغامق.
241
241
00:11:22,840 --> 00:11:26,220
وكما نرى ، يبدأ نوع من التسلق.
242
242
00:11:26,220 --> 00:11:28,250
لذلك كلما زاد عدد العناصر ،
243
243
00:11:28,250 --> 00:11:29,490
عدد الخطوات يرتفع.
244
244
00:11:29,490 --> 00:11:32,440
ولكن بعد ذلك يتم إيقافه وهو إلى حد كبير
245
245
00:11:32,440 --> 00:11:34,160
تقريبا وقت ثابت.
246
246
00:11:34,160 --> 00:11:36,070
إذا كنت تستطيع تحقيق السجل
247
247
00:11:36,070 --> 00:11:39,410
إلى التعقيد الزمني الأساسي اثنين N ، هذا رائع.
248
248
00:11:39,410 --> 00:11:41,800
لن نرى أي شيء مع
249
249
00:11:41,800 --> 00:11:43,850
أعتقد أن هذا هو الجذر التربيعي ، الجذر التربيعي لـ N
250
250
00:11:43,850 --> 00:11:46,340
لكننا سنرى بعض الخوارزميات الخطية.
251
251
00:11:46,340 --> 00:11:49,280
لقد ناقشنا بالفعل الوقت الخطي.
252
252
00:11:49,280 --> 00:11:51,860
وهذا هو الرسم البياني باللون الأخضر.
253
253
00:11:51,860 --> 00:11:55,210
لذلك إذا كان لديك 10 عناصر ، فستتخذ 10 خطوات ،
254
254
00:11:55,210 --> 00:11:57,120
20 عنصرًا ، 20 خطوة.
255
255
00:11:57,120 --> 00:11:59,690
لا يجب أن تكون مطابقة تامة كهذه.
256
256
00:11:59,690 --> 00:12:01,630
إنه نمط أكثر للنمو.
257
257
00:12:01,630 --> 00:12:04,430
لذلك إذا كان نمط النمو خطيًا ،
258
258
00:12:04,430 --> 00:12:06,500
إنه تسلسل خطي ، ثم الرسم البياني
259
259
00:12:06,500 --> 00:12:07,470
سيبدو هكذا.
260
260
00:12:07,470 --> 00:12:09,320
وهذا ما بدا عليه بالنسبة لنا
261
261
00:12:09,320 --> 00:12:11,330
إضافة السكر إلى خوارزمية الشاي.
262
262
00:12:11,330 --> 00:12:13,440
لم نبدأ من الصفر.
263
263
00:12:13,440 --> 00:12:16,680
إذا كنت لا تريد السكريات ، فمن الواضح أنه لا توجد خطوات ،
264
264
00:12:16,680 --> 00:12:19,420
لكن خوارزميتنا هي إضافة السكر إلى الشاي الخاص بك ،
265
265
00:12:19,420 --> 00:12:22,380
بحيث يفترض أنه سيكون هناك سكر مضاف.
266
266
00:12:22,380 --> 00:12:26,340
وبالتالي ، فإن الحد الأدنى لعدد الخطوات لسكر واحد هو أربعة.
267
267
00:12:26,340 --> 00:12:27,900
لذلك سنبدأ في الواقع من أربعة
268
268
00:12:27,900 --> 00:12:30,640
ولكن بعد ذلك نذهب ستة ، ثمانية ، 10 ، وما إلى ذلك.
269
269
00:12:30,640 --> 00:12:32,490
ولذا فهو تقدم خطي.
270
270
00:12:32,490 --> 00:12:36,550
هذا الخط البرتقالي الآن هو N log للأساس اثنين N.
271
271
00:12:36,550 --> 00:12:40,190
إذن نضرب هنا اللوغاريتمات في القاعدة اثنين N
272
272
00:12:40,190 --> 00:12:41,890
بعدد العناصر.
273
273
00:12:41,890 --> 00:12:43,360
وسنرى بعض الخوارزميات
274
274
00:12:43,360 --> 00:12:45,070
التي لديها تعقيد هذا الوقت.
275
275
00:12:45,070 --> 00:12:49,140
هذا أسوأ من الخطي لأنه كما ترون
276
276
00:12:49,140 --> 00:12:52,610
عدد الخطوات المطلوبة يرتفع بشكل أكثر حدة.
277
277
00:12:52,610 --> 00:12:55,870
ومن ثم بالطبع أسوأ من ذلك هو التربيعي
278
278
00:12:55,870 --> 00:12:58,330
وسنبدأ في البحث عن خوارزميات الفرز
279
279
00:12:58,330 --> 00:13:02,710
التي تحتوي في الواقع على تعقيد زمني للوقت التربيعي.
280
280
00:13:02,710 --> 00:13:04,690
وهذا تسلق أكثر حدة.
281
281
00:13:04,690 --> 00:13:06,820
هذا هو الخط الأحمر المتقطع.
282
282
00:13:06,820 --> 00:13:10,640
وبالتالي ، إذا كان لديك 10 عناصر ، فسيستغرق الأمر 100 خطوة
283
283
00:13:10,640 --> 00:13:12,530
لأن هذا سيكون 10 تربيع.
284
284
00:13:12,530 --> 00:13:15,020
وبالتالي ، إذا كانت لديك خوارزمية تربيعية ،
285
285
00:13:15,020 --> 00:13:16,360
هذا يتحلل بسرعة.
286
286
00:13:16,360 --> 00:13:19,100
1000 عنصر هو بالفعل مليون خطوة.
287
287
00:13:19,100 --> 00:13:21,910
لذا ضع هذا الرسم البياني في الاعتبار عندما ننظر
288
288
00:13:21,910 --> 00:13:23,150
في الخوارزميات المختلفة.
289
289
00:13:23,150 --> 00:13:26,040
الأفضل المطلق هو الوقت الثابت.
290
290
00:13:26,040 --> 00:13:28,780
إذا لم تتمكن من الحصول على ذلك ، فأنت تريد وقتًا لوغاريتميًا ،
291
291
00:13:28,780 --> 00:13:30,480
سجل إلى الأساس الثاني N.
292
292
00:13:30,480 --> 00:13:32,670
لا يزال الوقت الخطي جيدًا
293
293
00:13:32,670 --> 00:13:37,250
بمجرد أن تبدأ في الصعود إلى N log N و N تربيع.
294
294
00:13:37,250 --> 00:13:39,490
يمكنك أن ترى أن عدد الخطوات المطلوبة
295
295
00:13:39,490 --> 00:13:43,233
يرتفع بشكل حاد مع زيادة عدد العناصر.
296
296
00:13:46,490 --> 00:13:49,010
في الختام ، هذا ما يجب أن تتذكره حقًا ،
297
297
00:13:49,010 --> 00:13:51,580
تعطينا علامة O الكبيرة طريقة للمقارنة
298
298
00:13:51,580 --> 00:13:54,140
التعقيد الزمني للخوارزميات المختلفة
299
299
00:13:54,140 --> 00:13:57,940
بطريقة موضوعية ، بطريقة مستقلة عن الأجهزة.
300
300
00:13:57,940 --> 00:14:00,848
حسنًا ، هذا كل شيء الآن بالنسبة لتدوين O الكبير.
301
301
00:14:00,848 --> 00:14:05,060
سنعيد النظر في هذا أثناء مرورنا بالدورة.
302
302
00:14:05,060 --> 00:14:06,710
لذلك سأراك في الفيديو التالي.
32820
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.