در این مطلب، ویدئو ساختار داده ها و الگوریتم ها در پایتون | ساختارهای داده در پایتون | ادورکا | Python Rewind- 1 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:33:54
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:07,440 –> 00:00:09,280
پس صبح بخیر عصر
2
00:00:09,280 –> 00:00:11,519
بخیر و عصر بخیر بچه ها بر اساس
3
00:00:11,519 –> 00:00:13,599
مناطق زمانی که همه شما از آن می آیید،
4
00:00:13,599 –> 00:00:15,599
پس بچه ها قبل از شروع جلسه،
5
00:00:15,599 –> 00:00:17,440
می توانید لطفاً
6
00:00:17,440 –> 00:00:19,359
اگر همه می توانید صفحه نمایش من را ببینید
7
00:00:19,359 –> 00:00:21,119
و صدای من را بشنوید، لطفاً یک تأیید سریع به من بدهید.
8
00:00:21,119 –> 00:00:23,279
9
00:00:26,240 –> 00:00:27,840
بسیار عالی ممنون از
10
00:00:27,840 –> 00:00:30,480
تأیید همه شما، بنابراین نام من
11
00:00:30,480 –> 00:00:31,519
neeraj kedia است
12
00:00:31,519 –> 00:00:33,120
و من بیش از 13 سال است که در صنعت شهر کار می کنم،
13
00:00:33,120 –> 00:00:36,399
14
00:00:36,399 –> 00:00:38,399
بنابراین دستور جلسه امروز اول
15
00:00:38,399 –> 00:00:40,079
از همه ما در مورد
16
00:00:40,079 –> 00:00:43,040
ساختارهای داده در پایتون بحث خواهیم کرد. و دوباره
17
00:00:43,040 –> 00:00:44,640
در ساختار داده این است که چگونه می توانیم
18
00:00:44,640 –> 00:00:45,840
با
19
00:00:45,840 –> 00:00:48,239
ساختارهای داده داخلی کار کنیم و چگونه می توانیم با
20
00:00:48,239 –> 00:00:50,320
ساختارهای داده تعریف شده توسط کاربر کار کنیم
21
00:00:50,320 –> 00:00:52,239
و سپس در مورد
22
00:00:52,239 –> 00:00:53,920
الگوریتم های پایتون بحث خواهیم
23
00:00:53,920 –> 00:00:56,800
کرد که چگونه الگوریتم هایی دقیقاً
24
00:00:56,800 –> 00:00:58,960
عناصر یک الگوریتم خوب هستند.
25
00:00:58,960 –> 00:01:02,399
الگوریتم الگوریتمهای پیمایش درخت را طبقهبندی میکند
26
00:01:02,399 –> 00:01:05,040
، مرتبسازی همه الگوریتمها
27
00:01:05,040 –> 00:01:07,119
و الگوریتمهای جستجو را طبقهبندی میکند و سپس میخواهیم
28
00:01:07,119 –> 00:01:10,240
آنالیز الگوریتم را به درستی انجام دهیم
29
00:01:10,240 –> 00:01:13,200
تا دانش ساختار دادهها
30
00:01:13,200 –> 00:01:14,720
الگوریتمهای nd
31
00:01:14,720 –> 00:01:18,799
پایهای را برای شناسایی برنامهنویسان تشکیل میدهند
32
00:01:18,799 –> 00:01:21,200
که دلیل دیگری برای
33
00:01:21,200 –> 00:01:21,840
دانستن
34
00:01:21,840 –> 00:01:24,400
پایتون بهعنوان یک زبان ارائه میدهند و در حالی که
35
00:01:24,400 –> 00:01:26,799
ساختارهای داده به شرکتها کمک
36
00:01:26,799 –> 00:01:29,119
میکنند تا مطمئن شوند که میتوانند الگوریتمهای
37
00:01:29,119 –> 00:01:30,720
داده را بهتر سازماندهی کنند،
38
00:01:30,720 –> 00:01:32,880
به یافتن راهحل برای
39
00:01:32,880 –> 00:01:33,759
40
00:01:33,759 –> 00:01:36,720
مشکلات تجزیه و تحلیل دادهها کمک میکند. ما در
41
00:01:36,720 –> 00:01:38,880
مورد ساختارهای داده در پایتون صحبت می کنیم، سپس
42
00:01:38,880 –> 00:01:40,159
اول از همه آنها
43
00:01:40,159 –> 00:01:42,079
چندین نوع داده هستند، ما انواع داده های داخلی را داریم
44
00:01:42,079 –> 00:01:43,600
45
00:01:43,600 –> 00:01:45,680
و سپس انواع داده های تعریف شده توسط کاربر را داریم،
46
00:01:45,680 –> 00:01:48,000
اکنون از نظر انواع داده های داخلی
47
00:01:48,000 –> 00:01:50,000
،
48
00:01:50,000 –> 00:01:53,439
دیکشنری های تاپل لیست داریم. و مجموعهها
49
00:01:53,439 –> 00:01:56,560
بنابراین لیست برای ذخیره عناصر فهرستی استفاده میشود
50
00:01:56,560 –> 00:01:57,200
51
00:01:57,200 –> 00:01:59,280
که قابل تغییر هستند و میتوانند شامل
52
00:01:59,280 –> 00:02:00,479
عبارتهای تکراری باشند،
53
00:02:00,479 –> 00:02:02,399
بنابراین در یک لیست دادهشده میتوانیم چندین
54
00:02:02,399 –> 00:02:04,240
مورد تکراری داشته باشیم و به علاوه
55
00:02:04,240 –> 00:02:07,040
میتوانیم موارد فهرست را
56
00:02:07,040 –> 00:02:08,878
هر زمان که بخواهیم بهروزرسانی کنیم،
57
00:02:08,878 –> 00:02:10,318
سپس فرهنگهای لغتنامههایی داریم، بنابراین
58
00:02:10,318 –> 00:02:12,239
لغت نامهها هستند. مانند
59
00:02:12,239 –> 00:02:14,319
جفتهای ارزش کلیدی که قابل تغییر هستند،
60
00:02:14,319 –> 00:02:16,080
یعنی میتوانیم آنها را در هر نقطه از
61
00:02:16,080 –> 00:02:16,879
زمان تغییر
62
00:02:16,879 –> 00:02:19,920
دهیم، سپس تاپلهایی داریم، بنابراین تاپلها
63
00:02:19,920 –> 00:02:21,360
غیرقابل تغییر هستند، یعنی ما هستیم
64
00:02:21,360 –> 00:02:23,920
به عنوان غیر قابل تغییر در نظر گرفته می شوند، آنها نمی
65
00:02:23,920 –> 00:02:26,239
توانند پس از اعلام آن
66
00:02:26,239 –> 00:02:28,160
تغییر کنند و حتی نمی توانند
67
00:02:28,160 –> 00:02:29,920
کپی های تکراری داشته باشند و
68
00:02:29,920 –> 00:02:32,239
سپس مجموعه هایی داریم، بنابراین مجموعه ها مانند
69
00:02:32,239 –> 00:02:33,360
70
00:02:33,360 –> 00:02:35,680
عناصر پیوسته هستند، مانند عناصر منحصر به فرد نامرتب که
71
00:02:35,680 –> 00:02:37,680
تغییر ناپذیر هستند، به این معنی که
72
00:02:37,680 –> 00:02:39,519
در اینجا باید تمام عناصر مورد
73
00:02:39,519 –> 00:02:41,040
نیاز باشد. برای منحصربهفرد بودن، نمیتوان آنها را
74
00:02:41,040 –> 00:02:42,000
تکرار کرد
75
00:02:42,000 –> 00:02:43,840
و میتوان آنها را در یک زمان بعد تغییر
76
00:02:43,840 –> 00:02:45,280
77
00:02:45,280 –> 00:02:47,680
داد و سپس اگر در مورد
78
00:02:47,680 –> 00:02:49,840
ساختار دادههای تعریفشده توسط کاربر صحبت کنیم،
79
00:02:49,840 –> 00:02:50,560
80
00:02:50,560 –> 00:02:53,760
نمودار فهرست پیوندی درخت صف پشته
81
00:02:53,760 –> 00:02:57,360
و نقشه هش داریم، بنابراین برای شروع
82
00:02:57,360 –> 00:03:00,800
باید پشته پس پشته ها مانند
83
00:03:00,800 –> 00:03:04,239
ساختار داده خطی آخرین در اولین خروجی هستند
84
00:03:04,239 –> 00:03:06,400
بنابراین اساساً اگر عناصری که
85
00:03:06,400 –> 00:03:08,400
به آخرین به روز رسانی شده اند به
86
00:03:08,400 –> 00:03:09,840
87
00:03:09,840 –> 00:03:12,000
عنوان معماری لایفو به سمت اول به عنوان آخرین در اولین بیرون فشار داده شوند،
88
00:03:12,000 –> 00:03:13,120
89
00:03:13,120 –> 00:03:15,840
آنگاه صف هایی خواهیم داشت، پس خواهیم داشت. صفها
90
00:03:15,840 –> 00:03:17,200
در اینجا، بنابراین صفها
91
00:03:17,200 –> 00:03:19,920
مانند اول خطی در خانه اول هستند با
92
00:03:19,920 –> 00:03:21,519
عنصر داده که ابتدا
93
00:03:21,519 –> 00:03:22,400
معرفی
94
00:03:22,400 –> 00:03:24,560
شد و وقتی اکسل اتفاق میافتد دوباره برای اولین بار از آن خارج میشود
95
00:03:24,560 –> 00:03:26,720
و به
96
00:03:26,720 –> 00:03:28,159
این ترتیب کار میکند. ks در قسمت fifa
97
00:03:28,159 –> 00:03:31,280
ابتدا در ابتدا به بیرون می رویم سپس درختان را داریم، بنابراین
98
00:03:31,280 –> 00:03:32,560
درختان مانند
99
00:03:32,560 –> 00:03:35,120
ساختار داده غیرخطی هستند که یک ریشه
100
00:03:35,120 –> 00:03:36,640
و یک تعریف نشده دارند،
101
00:03:36,640 –> 00:03:39,040
سپس ما لیست پیوندی داریم، بنابراین
102
00:03:39,040 –> 00:03:39,680
لیست های پیشرو به عبارت
103
00:03:39,680 –> 00:03:41,760
ساده عناصر هستند،
104
00:03:41,760 –> 00:03:42,720
105
00:03:42,720 –> 00:03:44,720
آنها اساساً همینطور هستند.
106
00:03:44,720 –> 00:03:46,799
اگر سناریوی پایتون را درست در نظر بگیریم مانند دیکشنری ها هستند،
107
00:03:46,799 –> 00:03:50,239
بنابراین
108
00:03:50,239 –> 00:03:53,360
اکنون باید در مورد مفهوم
109
00:03:53,360 –> 00:03:56,000
ساختارهای داده داخلی بحث می کردیم که چگونه آنها
110
00:03:56,000 –> 00:03:57,519
پیکربندی می شوند،
111
00:03:57,519 –> 00:03:59,760
بنابراین در اینجا ما دیکشنری داریم، مجموعه
112
00:03:59,760 –> 00:04:02,000
هایی داریم که تاپل ها داریم و سپس لیست
113
00:04:02,000 –> 00:04:04,560
داریم، بنابراین بحث کردیم. این لیست دوباره
114
00:04:04,560 –> 00:04:06,560
می توانند حاوی داده های ناهمگن باشند و
115
00:04:06,560 –> 00:04:08,159
قابل تغییر هستند، به این معنی
116
00:04:08,159 –> 00:04:10,480
که می توان آنها را تغییر داد، فرهنگ لغت ها
117
00:04:10,480 –> 00:04:12,319
به عنوان یک جفت مقادیر کلیدی ذخیره
118
00:04:12,319 –> 00:04:14,799
می شوند و همچنین قابل تغییر هستند، به این معنی
119
00:04:14,799 –> 00:04:16,720
که می توانیم آنها را تغییر دهیم و به روز کنیم
120
00:04:16,720 –> 00:04:18,959
تاپل ها مشابه این هستند، اما دوباره آنها
121
00:04:18,959 –> 00:04:20,880
هستند. غیر قابل تغییر است، یعنی ما نمی توانیم
122
00:04:20,880 –> 00:04:22,000
آن را تغییر دهیم
123
00:04:22,000 –> 00:04:24,720
و سپس مجموعه هایی داریم و آنها
124
00:04:24,720 –> 00:04:26,160
مجموعه ای نامرتب از
125
00:04:26,160 –> 00:04:28,880
عناصر منحصر به فرد هستند و قابل تغییر هستند،
126
00:04:28,880 –> 00:04:29,759
یعنی می توانیم
127
00:04:29,759 –> 00:04:34,320
آنها را تغییر دهیم و سپس داده های تعریف شده توسط کاربر داریم
128
00:04:34,320 –> 00:04:36,240
. ساختارهای دادهای تعریفشده توسط کاربر
129
00:04:36,240 –> 00:04:38,320
داریم، مانند
130
00:04:38,320 –> 00:04:41,040
نمودارهای لیست پیوندی، نقشههای هش درختان
131
00:04:41,040 –> 00:04:42,800
صفها و پشتهای
132
00:04:42,800 –> 00:04:44,720
که در مورد این مؤلفهها به طور مفصل بحث میکنیم،
133
00:04:44,720 –> 00:04:46,560
134
00:04:46,560 –> 00:04:49,680
بنابراین اکنون اجازه دهید در مورد الگوریتمها در پایتون بحث کنیم،
135
00:04:49,680 –> 00:04:52,800
بنابراین الگوریتمها چیست، بنابراین
136
00:04:52,800 –> 00:04:55,360
الگوریتمها اساساً یک قانون یا
137
00:04:55,360 –> 00:04:57,440
مجموعهای از آنها هستند. دستورالعمل هایی که
138
00:04:57,440 –> 00:05:00,000
برای تکمیل یک کار داده شده باید دنبال شوند، به
139
00:05:00,000 –> 00:05:01,600
عنوان مثال اگر راه های متعددی برای تکمیل یک کار وجود دارد،
140
00:05:01,600 –> 00:05:03,039
141
00:05:03,039 –> 00:05:05,280
بهینه ترین مسیر چه مسیری باید باشد، در
142
00:05:05,280 –> 00:05:08,000
مقابل اگر شرط هستند،
143
00:05:08,000 –> 00:05:10,720
آن شرط چگونه باید باشد، باید
144
00:05:10,720 –> 00:05:11,120
145
00:05:11,120 –> 00:05:13,280
دوباره اعمال شود. به خوبی
146
00:05:13,280 –> 00:05:14,960
به عنوان بخشی از الگوریتم تعریف شده اند،
147
00:05:14,960 –> 00:05:18,240
بنابراین برای یافتن
148
00:05:18,240 –> 00:05:20,320
کد شبه برای هر مسئله ای استفاده می شوند،
149
00:05:20,320 –> 00:05:22,320
به عنوان مثال اگر در حال نوشتن یک مسئله هستیم،
150
00:05:22,320 –> 00:05:23,919
برای مثال همان مفهومی که ممکن است
151
00:05:23,919 –> 00:05:24,880
152
00:05:24,880 –> 00:05:26,639
در دوران مدرسه یاد گرفته باشید، زمانی که
153
00:05:26,639 –> 00:05:28,479
در مورد فلوچارت یاد می گرفتیم.
154
00:05:28,479 –> 00:05:29,280
155
00:05:29,280 –> 00:05:31,360
همچنین اگر در مورد ایجاد
156
00:05:31,360 –> 00:05:33,039
نمودار جریان برای مثال تهیه چای صحبت کنیم
157
00:05:33,039 –> 00:05:34,400
، باید آب
158
00:05:34,400 –> 00:05:36,639
را بجوشانیم اگر آب شروع به آب می کند.
159
00:05:36,639 –> 00:05:38,080
با جوشاندن، باید برگ های چای را اضافه کنیم
160
00:05:38,080 –> 00:05:39,600
، اگر اینطور نیست،
161
00:05:39,600 –> 00:05:41,199
باید برای چند ثانیه به جوشیدن ادامه دهیم،
162
00:05:41,199 –> 00:05:43,680
163
00:05:43,680 –> 00:05:46,960
بنابراین منطقی که
164
00:05:46,960 –> 00:05:47,759
165
00:05:47,759 –> 00:05:50,400
بر اساس انتخاب های داده شده در چه زمانی باید اعمال شود، پس این همان
166
00:05:50,400 –> 00:05:52,000
چیزی است که ما
167
00:05:52,000 –> 00:05:54,000
در اینجا به عنوان الگوریتم یاد می کنیم. چیزی است که از آن به
168
00:05:54,000 –> 00:05:56,479
عنوان الگوریتم یاد می شود
169
00:05:56,479 –> 00:05:59,680
و به کدام قسمت اشاره می کنیم و
170
00:05:59,680 –> 00:06:02,720
اگر در مورد ساختار الگوریتم صحبت
171
00:06:02,720 –> 00:06:05,759
می کنیم باید کارآمدترین منطق باشد
172
00:06:05,759 –> 00:06:07,600
و اساساً کد شبه
173
00:06:07,600 –> 00:06:10,160
مشکلات را می دهند و سپس می توانند
174
00:06:10,160 –> 00:06:13,120
در چندین زبان پیاده سازی
175
00:06:13,120 –> 00:06:13,600
شوند زیرا اینطور نیست.
176
00:06:13,600 –> 00:06:16,560
زبان خاص، بنابراین در اینجا ما باید
177
00:06:16,560 –> 00:06:17,280
178
00:06:17,280 –> 00:06:20,160
ابتدا مشکل را بفهمیم که دقیقاً
179
00:06:20,160 –> 00:06:20,880
مشکل ما چیست،
180
00:06:20,880 –> 00:06:23,520
بنابراین الگوریتمها معمولاً به صورت
181
00:06:23,520 –> 00:06:25,120
ترکیبی از
182
00:06:25,120 –> 00:06:28,479
زبان قابل فهم توسط کاربر و برخی از
183
00:06:28,479 –> 00:06:29,919
زبانهای برنامهنویسی
184
00:06:29,919 –> 00:06:31,840
رایج نوشته میشوند که اکنون معمولاً به صورت مرحلهای نوشته میشوند،
185
00:06:31,840 –> 00:06:33,360
186
00:06:33,360 –> 00:06:36,319
اما همیشه انجام این کار ضروری نیست. بنابراین
187
00:06:36,319 –> 00:06:38,560
هیچ قانون مجزایی برای فرموله کردن
188
00:06:38,560 –> 00:06:40,639
الگوریتم ها وجود ندارد، اما باید
189
00:06:40,639 –> 00:06:41,440
نکات زیر را
190
00:06:41,440 –> 00:06:43,120
در ذهن داشته باشیم، همانطور که می توانیم روی
191
00:06:43,120 –> 00:06:45,280
صفحه نمایش ببینیم. اول از همه
192
00:06:45,280 –> 00:06:45,680
باید
193
00:06:45,680 –> 00:06:48,560
بفهمیم که دقیقاً مشکل چیست، سپس
194
00:06:48,560 –> 00:06:50,560
باید مشخص میکردیم که آیا
195
00:06:50,560 –> 00:06:53,360
دقیقاً باید از کجا شروع
196
00:06:53,360 –> 00:06:56,800
کنیم یا نه و سپس باید به این فکر کنیم که کجا
197
00:06:56,800 –> 00:06:58,400
باید متوقف شویم، زیرا
198
00:06:58,400 –> 00:07:00,800
شروع و توقف هر دو لازم است
199
00:07:00,800 –> 00:07:02,800
و سپس باید
200
00:07:02,800 –> 00:07:04,639
مراحلی را که قرار
201
00:07:04,639 –> 00:07:07,360
است در آینده نزدیک انجام شود به عنوان بخشی
202
00:07:07,360 –> 00:07:09,599
از پاسخ فرمول بندی می کردیم و سپس باید
203
00:07:09,599 –> 00:07:11,919
مراحل خود را نیز مرور کنیم،
204
00:07:11,919 –> 00:07:13,919
مثلاً فرض کنید یک الگوریتم پاپ فرمول و
205
00:07:13,919 –> 00:07:15,199
ساده
206
00:07:15,199 –> 00:07:18,080
برای بررسی داشتیم. اگر دانش آموزی
207
00:07:18,080 –> 00:07:18,960
امتحان را قبول کرده باشد یا به درستی انجام نشده است،
208
00:07:18,960 –> 00:07:21,280
بنابراین در اینجا می توانیم
209
00:07:21,280 –> 00:07:23,120
الگوریتم چند مرحله ای ایجاد کنیم، بنابراین در اینجا می توانیم شروع کنیم،
210
00:07:23,120 –> 00:07:24,720
می توانیم دو متغیر را اعلام کنیم
211
00:07:24,720 –> 00:07:26,319
و سپس می توانیم نمرات را ذخیره کنیم و
212
00:07:26,319 –> 00:07:28,080
با x به دست آوریم
213
00:07:28,080 –> 00:07:29,520
و سپس می توانیم حداقل
214
00:07:29,520 –> 00:07:31,199
نمره قبولی را در آن ذخیره کنیم. y
215
00:07:31,199 –> 00:07:33,759
و سپس میتوانیم بررسی کنیم که آیا x بزرگتر از y است یا خیر،
216
00:07:33,759 –> 00:07:34,720
217
00:07:34,720 –> 00:07:37,759
دانشآموز قبول کرده است، در غیر این صورت
218
00:07:37,759 –> 00:07:38,240
به سادگی
219
00:07:38,240 –> 00:07:40,960
ناموفق است و اکنون باید
220
00:07:40,960 –> 00:07:42,639
اجرا را نیز متوقف کنیم،
221
00:07:42,639 –> 00:07:44,720
بنابراین اگر میخواهید میتوانیم این مثال را نیز دستکاری کنیم،
222
00:07:44,720 –> 00:07:45,919
223
00:07:45,919 –> 00:07:47,440
مثلاً فرض کنید ما wa nt برای
224
00:07:47,440 –> 00:07:49,199
تخصیص مقادیر به متغیرها
225
00:07:49,199 –> 00:07:51,120
در مرحله دو، به عنوان مثال، فرض کنید
226
00:07:51,120 –> 00:07:53,280
در اینجا باید چندین متغیر
227
00:07:53,280 –> 00:07:55,360
برای عبور و عدم موفقیت پیدا میکردیم، بنابراین شما میتوانید
228
00:07:55,360 –> 00:07:57,199
چندین متغیر را تعریف کنید
229
00:07:57,199 –> 00:07:59,360
و سپس میتوانیم منطق خودمان را اعمال کنیم،
230
00:07:59,360 –> 00:08:02,479
میتوانیم درصد را پیدا کنیم
231
00:08:02,479 –> 00:08:05,759
و غیره بسته به موارد دیگر. بنا به نیاز،
232
00:08:05,759 –> 00:08:08,479
بنابراین اگر ما در مورد الگوریتم های خوب صحبت می کنیم،
233
00:08:08,479 –> 00:08:10,080
بنابراین اگر شما همه عناصر یک
234
00:08:10,080 –> 00:08:11,280
الگوریتم خوب را دارید،
235
00:08:11,280 –> 00:08:14,319
پس چندین مرحله وجود دارد، اول از همه
236
00:08:14,319 –> 00:08:17,199
مراحل باید متناهی باشد، واضح و
237
00:08:17,199 –> 00:08:18,000
قابل درک باشد، به
238
00:08:18,000 –> 00:08:19,680
این معنی که هیچ
239
00:08:19,680 –> 00:08:21,440
نوع تناقضی به علاوه وجود ندارد. نباید
240
00:08:21,440 –> 00:08:23,199
هیچ نوع سردرگمی وجود داشته باشد،
241
00:08:23,199 –> 00:08:25,520
بلکه آنچه باید انجام شود و همچنین
242
00:08:25,520 –> 00:08:26,879
به چه روشی،
243
00:08:26,879 –> 00:08:28,720
بنابراین کل ساختار الگوریتم
244
00:08:28,720 –> 00:08:31,039
باید روشن
245
00:08:31,039 –> 00:08:32,159
باشد، نباید هیچ گونه
246
00:08:32,159 –> 00:08:34,799
سردرگمی در مورد آنچه باید انجام شود و
247
00:08:34,799 –> 00:08:36,240
آنچه باید از آن اجتناب شود وجود داشته باشد.
248
00:08:36,240 –> 00:08:38,559
برای همه کاملاً واضح است،
249
00:08:38,559 –> 00:08:40,320
سپس باید یک توصیف واضح و
250
00:08:40,320 –> 00:08:41,919
دقیق از
251
00:08:41,919 –> 00:08:44,640
ورودی و خروجی وجود داشته باشد، بنابراین
252
00:08:44,640 –> 00:08:47,120
ورودیهای کاربران نهایی و ما
253
00:08:47,120 –> 00:08:49,680
چه چیزی خروجی است. ما انتظار داریم و
254
00:08:49,680 –> 00:08:51,680
هر مرحله باید خروجی تعریف شده ای داشته باشد
255
00:08:51,680 –> 00:08:54,080
که فقط به ورودی و
256
00:08:54,080 –> 00:08:58,399
در آن مرحله یا مراحل قبل بستگی دارد
257
00:08:58,399 –> 00:09:00,000
و سپس الگوریتم باید به
258
00:09:00,000 –> 00:09:02,160
اندازه کافی منعطف باشد
259
00:09:02,160 –> 00:09:04,000
تا بتوان آن را قالب بندی کرد تا تعدادی راه حل اجازه دهد
260
00:09:04,000 –> 00:09:05,920
و
261
00:09:05,920 –> 00:09:07,360
این مراحل باید از اصول کلی برنامه نویسی ساخته شده است
262
00:09:07,360 –> 00:09:09,680
و نباید
263
00:09:09,680 –> 00:09:11,200
به هیچ نوع زبان
264
00:09:11,200 –> 00:09:14,160
خاصی اختصاص داشته باشد، بنابراین اگر در مورد
265
00:09:14,160 –> 00:09:15,600
کلاس های الگوریتم صحبت
266
00:09:15,600 –> 00:09:18,080
کنیم، اول از همه تقسیم کنید و
267
00:09:18,080 –> 00:09:18,880
پیروز شوید،
268
00:09:18,880 –> 00:09:22,080
سپس برنامه نویسی پویا و سپس
269
00:09:22,080 –> 00:09:24,560
الگوریتم های حریصانه داریم، بنابراین همه اینها
270
00:09:24,560 –> 00:09:26,000
انواع مختلفی از
271
00:09:26,000 –> 00:09:28,560
کلاس های الگوریتم هستند. بنابراین اول از همه تقسیم کن
272
00:09:28,560 –> 00:09:30,399
و پیروز کن پس تقسیم کن
273
00:09:30,399 –> 00:09:32,480
و غلبه کن، ما به سادگی
274
00:09:32,480 –> 00:09:33,680
مسئله را به عبارات فرعی تقسیم می کنیم، به
275
00:09:33,680 –> 00:09:35,440
عنوان مثال، یک
276
00:09:35,440 –> 00:09:38,160
مشکل بزرگ داریم، بنابراین می توانیم آن را به
277
00:09:38,160 –> 00:09:40,080
جزء کوچکتر فرض کنیم و سپس
278
00:09:40,080 –> 00:09:41,440
می توانیم
279
00:09:41,440 –> 00:09:43,040
اجزای کوچکتر را یکی یکی حل کنیم
280
00:09:43,040 –> 00:09:44,480
و اگر قرار باشد همه اجزای
281
00:09:44,480 –> 00:09:46,720
کوچکتر حل شوند، کل
282
00:09:46,720 –> 00:09:49,519
مشکل نیز درست حل میشود،
283
00:09:49,519 –> 00:09:52,160
بنابراین در اینجا میتوانیم کل آن را ارائه کنیم.
284
00:09:52,160 –> 00:09:53,040
مشکل بزرگ به
285
00:09:53,040 –> 00:09:54,720
عبارات کوچکتر و سپس می توانیم شروع به کار
286
00:09:54,720 –> 00:09:56,080
روی آن کنیم
287
00:09:56,080 –> 00:09:58,240
و سپس برنامه نویسی پویا را داریم،
288
00:09:58,240 –> 00:10:00,080
بنابراین در اینجا می توانیم مسئله را به
289
00:10:00,080 –> 00:10:01,279
زیربخش ها تقسیم کنیم، نتیجه زیربخش ها را
290
00:10:01,279 –> 00:10:04,320
به خاطر بسپاریم و
291
00:10:04,320 –> 00:10:06,480
می خواهیم آن را به موارد مشابه اعمال کنیم،
292
00:10:06,480 –> 00:10:08,160
بنابراین در اینجا می توانیم سعی کنید یک
293
00:10:08,160 –> 00:10:09,519
الگو را نیز پیدا کنید
294
00:10:09,519 –> 00:10:12,240
و سپس ما الگوریتم حریص داریم، بنابراین
295
00:10:12,240 –> 00:10:12,959
شامل
296
00:10:12,959 –> 00:10:15,839
برداشتن تمام گامهای سادهتر در حین
297
00:10:15,839 –> 00:10:17,120
حل یک مسئله
298
00:10:17,120 –> 00:10:19,279
بدون نگرانی در مورد پیچیدگی
299
00:10:19,279 –> 00:10:20,560
مراحل بعدی است،
300
00:10:20,560 –> 00:10:23,839
بنابراین در اینجا هدف ما این است که کل
301
00:10:23,839 –> 00:10:26,399
عبارت را بهروز کنیم و سپس ما میتوانیم
302
00:10:26,399 –> 00:10:29,040
بیشتر روی اصلاح مسائل یا
303
00:10:29,040 –> 00:10:30,320
کار بیشتر روی
304
00:10:30,320 –> 00:10:31,920
هدایت دادههای فعلی که
305
00:10:31,920 –> 00:10:35,120
قبلاً به آنها دسترسی داریم
306
00:10:35,279 –> 00:10:37,839
کار کنیم تا با این ساختار داده
307
00:10:37,839 –> 00:10:39,920
و الگوریتمهای موجود در پایتون
308
00:10:39,920 –> 00:10:42,800
که اکنون در مورد پیمایش رایگان
309
00:10:42,800 –> 00:10:43,600
310
00:10:43,600 –> 00:10:46,399
در الگوریتمهای جستجو و همچنین در
311
00:10:46,399 –> 00:10:47,920
الگوریتمهای مرتبسازی در حال
312
00:10:47,920 –> 00:10:52,640
استفاده هستند، بنابراین اکنون میخواهیم در
313
00:10:52,640 –> 00:10:54,959
مورد الگوریتم پیمایش درخت بحث کنیم،
314
00:10:54,959 –> 00:10:57,680
بنابراین اساساً درختها در پایتون
315
00:10:57,680 –> 00:11:00,079
ساختارهای دادهای غیر خطی هستند
316
00:11:00,079 –> 00:11:03,920
که ریشه دارند. و گره ها همانطور
317
00:11:03,920 –> 00:11:06,800
که در اینجا دیدیم ما در
318
00:11:06,800 –> 00:11:07,440
این
319
00:11:07,440 –> 00:11:11,440
نمودار فعلی به آنها نگاه می کنیم بنابراین اساساً بر
320
00:11:11,440 –> 00:11:12,640
اساس ترتیب
321
00:11:12,640 –> 00:11:15,279
بازدید از گره ها می توانند سه نوع
322
00:11:15,279 –> 00:11:15,680
323
00:11:15,680 –> 00:11:18,880
پیمایش درخت باشند بنابراین اساساً ما در
324
00:11:18,880 –> 00:11:20,320
اینجا سه نوع داریم همانطور که می بینید ما سه
325
00:11:20,320 –> 00:11:22,079
وع داریم. پیشسفارش را به ترتیب
326
00:11:22,079 –> 00:11:23,600
و سفارش پست داشته باشید، پس اول از همه بیایید یک کار را انجام
327
00:11:23,600 –> 00:11:25,680
دهیم، بیایید با پیمایش ترتیب شروع کنیم،
328
00:11:25,680 –> 00:11:27,920
بنابراین پیمایش ترتیب به پیمایش درخت اشاره دارد
329
00:11:27,920 –> 00:11:28,800
330
00:11:28,800 –> 00:11:31,279
به گونهای که
331
00:11:31,279 –> 00:11:32,079
332
00:11:32,079 –> 00:11:34,320
ابتدا گرههای سمت چپ
333
00:11:34,320 –> 00:11:36,800
و سپس ریشه و سپس گره های سمت راست،
334
00:11:36,800 –> 00:11:38,959
بنابراین ما پیمایش خود را به شکل
335
00:11:38,959 –> 00:11:40,480
از تمام گره های ساختار لب
336
00:11:40,480 –> 00:11:41,440
337
00:11:41,440 –> 00:11:44,079
شروع می کنیم و سپس به سمت ریشه و
338
00:11:44,079 –> 00:11:46,640
سپس در نهایت به سمت درخت حرکت می کنیم، به
339
00:11:46,640 –> 00:11:48,399
این ترتیب از نظر
340
00:11:48,399 –> 00:11:50,880
پیمایش به ترتیب کار می کند، ابتدا در اینجا با یکی از آنها
341
00:11:50,880 –> 00:11:51,839
شروع می کنیم.
342
00:11:51,839 –> 00:11:55,200
دوباره گره های سمت چپ و
343
00:11:55,200 –> 00:11:56,880
سپس ریشه روی گره های سمت راست
344
00:11:56,880 –> 00:11:58,480
و سپس دو
345
00:11:58,480 –> 00:12:00,240
راه اندازی خود را از گره های
346
00:12:00,240 –> 00:12:02,000
زیردرخت سمت چپ برمی داریم و سپس به سمت
347
00:12:02,000 –> 00:12:02,560
348
00:12:02,560 –> 00:12:04,800
جاده و در نهایت ری حرکت می کنیم. زیردرخت ght
349
00:12:04,800 –> 00:12:05,600
کلاً
350
00:12:05,600 –> 00:12:08,880
به همین شکل کار میکند و
351
00:12:08,880 –> 00:12:11,360
اکنون اینجا میتوانیم اکنون در این اکنون ببینیم
352
00:12:11,360 –> 00:12:13,120
تا آن را به عنوان بخشی از مرجع داشته باشیم،
353
00:12:13,120 –> 00:12:15,120
میتوانیم از این نمودار مشاهده کنیم
354
00:12:15,120 –> 00:12:18,079
که چهار بیشترین سمت چپ را دارند، همانطور که
355
00:12:18,079 –> 00:12:19,360
میبینید در
356
00:12:19,360 –> 00:12:21,200
اینجا چهار وجود ندارد.
357
00:12:21,200 –> 00:12:23,120
حالت سمت چپ بیشتر گره را ترک می کند
358
00:12:23,120 –> 00:12:25,440
و از این رو که این
359
00:12:25,440 –> 00:12:27,760
اولین گره ای است که در مرحله بعدی بازدید می شود،
360
00:12:27,760 –> 00:12:29,440
ما به سمت ریشه ها حرکت می کنیم، به این
361
00:12:29,440 –> 00:12:31,279
362
00:12:31,279 –> 00:12:32,720
معنی که اکنون زمانی که به سمت ریشه در اینجا حرکت می کنیم، داریم،
363
00:12:32,720 –> 00:12:35,040
بنابراین ریشه برای نه
364
00:12:35,040 –> 00:12:36,720
برای
365
00:12:36,720 –> 00:12:39,200
چهار ریشه گره چهار چیست در اینجا بچه ها
366
00:12:39,200 –> 00:12:40,880
اجازه دهید فقط این را برجسته کنم
367
00:12:40,880 –> 00:12:43,360
که سمت چپ ترین گره در حال حاضر دو چهار
368
00:12:43,360 –> 00:12:45,680
سمت راست است، بنابراین ریشه
369
00:12:45,680 –> 00:12:48,959
گره چهار چیست، آن دو سمت راست است، بنابراین ابتدا
370
00:12:48,959 –> 00:12:50,240
به سمت
371
00:12:50,240 –> 00:12:52,160
گره ریشه حرکت می کند. درست است، بنابراین به
372
00:12:52,160 –> 00:12:53,519
سمت دو حرکت می کند
373
00:12:53,519 –> 00:12:55,600
و پس از آن باید بررسی
374
00:12:55,600 –> 00:12:57,760
کنیم که آیا گرهی به سمت راست داریم
375
00:12:57,760 –> 00:12:59,360
و درخت نشان می دهد که ما یک
376
00:12:59,360 –> 00:13:01,519
گره به عنوان ریشه پنج داریم،
377
00:13:01,519 –> 00:13:03,760
بنابراین برای
378
00:13:03,760 –> 00:13:05,279
بازدید مجدد از گره پنجم جدید ارائه می شود
379
00:13:05,279 –> 00:13:07,519
و زمانی که این کار انجام شد، زیر را رها کنید
380
00:13:07,519 –> 00:13:08,480
ree کامل است
381
00:13:08,480 –> 00:13:10,399
و سپس ما دوباره همان
382
00:13:10,399 –> 00:13:11,519
قانون را
383
00:13:11,519 –> 00:13:14,560
از ریشه چپ به سمت راست دنبال می کنیم به این
384
00:13:14,560 –> 00:13:16,399
ترتیب که کل
385
00:13:16,399 –> 00:13:18,959
پیمایش را به
386
00:13:18,959 –> 00:13:20,880
درستی کامل می کنیم، بنابراین دوباره این
387
00:13:20,880 –> 00:13:23,040
به سمت چپ برمی گردد که چهارمین است
388
00:13:23,040 –> 00:13:25,120
و سپس می رود. برای پیمایش به
389
00:13:25,120 –> 00:13:27,760
سمت راست موجود
390
00:13:27,760 –> 00:13:29,519
برای تغذیه آن با ترتیب، بنابراین اکنون در اینجا
391
00:13:29,519 –> 00:13:31,519
میتوانیم با پیمایش پیشسفارش
392
00:13:31,519 –> 00:13:33,440
نیز کار کنیم، بنابراین از نظر پیشسفارش
393
00:13:33,440 –> 00:13:35,680
ابتدا گره ریشه بازدید میشود و
394
00:13:35,680 –> 00:13:37,600
سپس زیر درخت سمت چپ و
395
00:13:37,600 –> 00:13:39,279
سپس زیردرخت سمت راست،
396
00:13:39,279 –> 00:13:41,440
بنابراین در این مثال میتوانیم ببینیم که اولین
397
00:13:41,440 –> 00:13:42,800
گره بازدید شده
398
00:13:42,800 –> 00:13:45,440
یک است، بنابراین در اینجا میتوانیم ببینیم اولین
399
00:13:45,440 –> 00:13:48,079
گرهای که میخواهیم از آن بازدید کنیم یک است و
400
00:13:48,079 –> 00:13:48,560
401
00:13:48,560 –> 00:13:51,440
سپس گره دو که در
402
00:13:51,440 –> 00:13:53,680
سمت چپ گره یک است، بنابراین
403
00:13:53,680 –> 00:13:56,160
سمت چپ سمت گره دو است
404
00:13:56,160 –> 00:13:57,440
و به قسمت دوم می رود
405
00:13:57,440 –> 00:13:59,519
و
406
00:13:59,519 –> 00:14:01,360
دوباره به سمت چپ حرکت می کند
407
00:14:01,360 –> 00:14:04,320
چهارم می شود و اکنون چپی وجود ندارد بنابراین
408
00:14:04,320 –> 00:14:05,760
اکنون به
409
00:14:05,760 –> 00:14:07,839
سمت راست و دوباره از راست تراورس می کنیم.
410
00:14:07,839 –> 00:14:09,920
دوباره به سمت بالا می رویم s و
411
00:14:09,920 –> 00:14:11,120
سه فرض کنید
412
00:14:11,120 –> 00:14:13,519
عنصر دیگری در دسترس باشد،
413
00:14:13,519 –> 00:14:15,120
سپس به آن
414
00:14:15,120 –> 00:14:16,720
عنصر خاص و
415
00:14:16,720 –> 00:14:20,079
همچنین بخشی از پیمایش پیشسفارش میرفت
416
00:14:20,079 –> 00:14:22,079
و سپس اگر در مورد سفارش پس از سفارش صحبت میکنیم،
417
00:14:22,079 –> 00:14:24,240
فرض کنید پیمایش سفارش
418
00:14:24,240 –> 00:14:24,880
از سمت چپ
419
00:14:24,880 –> 00:14:27,440
شروع میشود. به سمت راست و سپس در نهایت
420
00:14:27,440 –> 00:14:28,320
به ریشه
421
00:14:28,320 –> 00:14:30,720
بنابراین در اینجا از سمت چپ شروع می شود و سپس
422
00:14:30,720 –> 00:14:32,480
423
00:14:32,480 –> 00:14:35,440
دوباره به سمت راست می رود به سمت چپ دوباره به سمت راست
424
00:14:35,440 –> 00:14:36,320
دوباره به
425
00:14:36,320 –> 00:14:38,720
سمت چپ و به همین ترتیب مانند یک
426
00:14:38,720 –> 00:14:39,440
427
00:14:39,440 –> 00:14:41,920
مسیر زیگزاگی کامل است که با استفاده از پیمایش سفارش پس از آن دنبال می شود.
428
00:14:41,920 –> 00:14:43,040
429
00:14:43,040 –> 00:14:44,720
که از چپ به راست از چپ
430
00:14:44,720 –> 00:14:47,120
به راست و غیره میرفت،
431
00:14:47,120 –> 00:14:50,320
بنابراین مرتبسازی دادهها در زمان واقعی
432
00:14:50,320 –> 00:14:51,839
میتوانیم مرتبسازی کنیم، میتوانیم بگوییم زمانی
433
00:14:51,839 –> 00:14:53,760
که روی هر داده کار میکنیم و مرتبسازی میکنیم، پس
434
00:14:53,760 –> 00:14:56,000
این کار باید در زمان واقعی انجام شود
435
00:14:56,000 –> 00:14:59,120
و به یک عدد نیاز دارد. در مورد
436
00:14:59,120 –> 00:15:00,480
الگوریتمهای مرتبسازی
437
00:15:00,480 –> 00:15:03,920
که باید حل شوند، بنابراین
438
00:15:03,920 –> 00:15:06,079
با مفاهیم ساختار داده و
439
00:15:06,079 –> 00:15:07,279
الگوریتمها
440
00:15:07,279 –> 00:15:09,120
در پایتون به عنوان بخشی از بحثمان پیش برویم،
441
00:15:09,120 –> 00:15:10,959
اجازه دهید بحث خود را در مورد
442
00:15:10,959 –> 00:15:12,560
الگوریتمهای مرتبسازی ابتدا
443
00:15:12,560 –> 00:15:16,720
در پایتون شروع کنیم. از نظر الگوریتمهای مرتبسازی ابتدا با آن شروع کنید،
444
00:15:16,720 –> 00:15:19,680
بنابراین
445
00:15:19,680 –> 00:15:22,480
الگوریتمهای مرتبسازی برای مرتبسازی دادهها
446
00:15:22,480 –> 00:15:25,600
به ترتیب معین استفاده میشوند و الگوریتمهای مرتبسازی
447
00:15:25,600 –> 00:15:27,279
448
00:15:27,279 –> 00:15:30,160
را میتوان به پنج نوع سرویس طبقهبندی کرد.
449
00:15:30,160 –> 00:15:31,839
450
00:15:31,839 –> 00:15:34,639
451
00:15:34,639 –> 00:15:36,560
مرتب سازی و سپس
452
00:15:36,560 –> 00:15:38,160
مرتب سازی پوسته داریم،
453
00:15:38,160 –> 00:15:41,279
بنابراین همه الگوریتم ها دوباره اینجا
454
00:15:41,279 –> 00:15:41,839
هستند، همه
455
00:15:41,839 —