در این مطلب، ویدئو برنامه نویسی پویا و ساختارهای داده داخلی پایتون | جلسه زنده | دوره کاربردی هوش مصنوعی با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 2:07:52
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,230 –> 00:00:04,019
سلام دوستان من حدس می زنم که ما زندگی هستیم اجازه دهید فقط بررسی کنم که
2
00:00:04,019 –> 00:00:06,390
آیا همه چیز همانطور که
3
00:00:06,390 –> 00:00:09,690
انتظار می رود کار می کند یا نه فقط یک دقیقه به من فرصت دهید تا
4
00:00:09,690 –> 00:00:12,679
ببینم همه چیز
5
00:00:12,679 –> 00:00:16,440
خوب است، پس خوب
6
00:00:16,440 –> 00:00:18,690
دوباره لطفاً در پنجره چت تأیید کنید
7
00:00:18,690 –> 00:00:22,010
اگر همه قادر به شنیدن واضح من هستند
8
00:00:22,010 –> 00:00:26,310
بله من میتوانم صدای خودم را در حال پخش بشنوم، بنابراین
9
00:00:26,310 –> 00:00:28,019
لطفاً تأیید کنید که آیا همه میتوانند
10
00:00:28,019 –> 00:00:30,720
آنچه من هستم را بشنوند و همه میتوانند
11
00:00:30,720 –> 00:00:32,910
صفحه نمایش من را به اشتراک بگذارند، اگر
12
00:00:32,910 –> 00:00:38,160
اینطور است، فکر میکنم ما خوب هستیم، بنابراین
13
00:00:38,160 –> 00:00:40,110
سلام دوستان از شما متشکرم برای
14
00:00:40,110 –> 00:00:42,750
پیوستن از آنجایی که ما چند
15
00:00:42,750 –> 00:00:44,550
دقیقه زودتر هستیم، بیایید منتظر بمانیم تا همه به آن
16
00:00:44,550 –> 00:00:48,030
ملحق شوند و بله از شما برای
17
00:00:48,030 –> 00:00:48,660
تأیید
18
00:00:48,660 –> 00:00:50,480
متشکرم. ممنون که همه می توانند صدای من را بشنوند و ببینند و
19
00:00:50,480 –> 00:00:54,390
صدای من را ببینند و صفحه من را ببینند،
20
00:00:54,390 –> 00:00:55,920
بنابراین من می توانم
21
00:00:55,920 –> 00:00:57,570
قبل از پخش زنده چند سؤال را مطرح کنم. خود جلسه
22
00:00:57,570 –> 00:01:01,770
شروع می شود من سعی می کنم تمام تلاشم را انجام دهم بسیار خوب متشکرم از
23
00:01:01,770 –> 00:01:02,940
شما متشکرم برای تأیید
24
00:01:02,940 –> 00:01:07,229
اینکه هم صفحه نمایش من قابل مشاهده است و هم
25
00:01:07,229 –> 00:01:11,970
صدای من قابل شنیدن است.
26
00:01:11,970 –> 00:01:13,560
27
00:01:13,560 –> 00:01:14,310
28
00:01:14,310 –> 00:01:16,530
بنابراین هر سوالی دوستان به من اطلاع دهند که سعی
29
00:01:16,530 –> 00:01:18,810
می کنم قبل از ورود به جلسه زنده به چند مورد از آنها پاسخ دهم،
30
00:01:18,810 –> 00:01:21,960
بنابراین یکی از
31
00:01:21,960 –> 00:01:24,180
کارهایی که انجام دادم
32
00:01:24,180 –> 00:01:25,860
مشکل برنامه نویسی پویا است که دیروز در حال حل آن بودیم،
33
00:01:25,860 –> 00:01:28,259
کد را دوباره نوشتم فقط برای
34
00:01:28,259 –> 00:01:31,380
اینکه خیلی بیشتر شود. درک راحتتر به
35
00:01:31,380 –> 00:01:33,990
جای استفاده از یک
36
00:01:33,990 –> 00:01:35,520
منبع کد خارجی توضیح میدهم. فکر
37
00:01:35,520 –> 00:01:37,320
میکنم اگر خودم کد را
38
00:01:37,320 –> 00:01:39,780
در قالبی بسیار سادهتر بنویسم
39
00:01:39,780 –> 00:01:41,549
بهتر است البته کمتر بهینه است، اما
40
00:01:41,549 –> 00:01:45,450
درک اینکه چند وقت یکبار دادهها را در قالب SQL دریافت میکنیم آسانتر است.
41
00:01:45,450 –> 00:01:48,960
در دنیای واقعی دوباره
42
00:01:48,960 –> 00:01:51,030
چند بار در یادگیری ماشینی آن را دریافت
43
00:01:51,030 –> 00:01:53,280
44
00:01:53,280 –> 00:01:54,750
میکنید، اگر در یک شرکت بزرگ کار میکنید، بیشتر شرکتها درست
45
00:01:54,750 –> 00:01:57,149
میگویند.
46
00:01:57,149 –> 00:01:59,700
47
00:01:59,700 –> 00:02:02,070
48
00:02:02,070 –> 00:02:05,009
مقدار داده درست است، بنابراین این داده ها
49
00:02:05,009 –> 00:02:07,020
بسته به ذخیره داده ای دریافت
50
00:02:07,020 –> 00:02:09,598
می کنم، این داده ها می توانند در یک
51
00:02:09,598 –> 00:02:11,790
پایگاه داده استاندارد رابطه ای مانند Oracle DB یا
52
00:02:11,790 –> 00:02:13,980
DB دنباله من یا می توانند
53
00:02:13,980 –> 00:02:17,250
خوشه Hadoop ذخیره یا یک خوشه جرقه r ذخیره شوند.
54
00:02:17,250 –> 00:02:21,150
بنابراین یک خوشه جرقه، پس اگر
55
00:02:21,150 –> 00:02:23,099
به عنوان DB رابطهای سنتی بارگیری شود یا
56
00:02:23,099 –> 00:02:26,640
حتی برخی از DBهای غیر رابطهای غیر
57
00:02:26,640 –> 00:02:28,739
مبتنی بر SQL، اغلب آنها دارای
58
00:02:28,739 –> 00:02:32,220
رابط SQL هستند، حتی اگر در یک
59
00:02:32,220 –> 00:02:34,860
انبار داده درست ذخیره شده باشد، بنابراین یا یک
60
00:02:34,860 –> 00:02:36,599
پایگاه داده رابطهای سنتی است. یا یک
61
00:02:36,599 –> 00:02:38,670
انبار داده اکثر پایگاههای داده و
62
00:02:38,670 –> 00:02:40,760
انبارها دارای یک رابط SQL هستند
63
00:02:40,760 –> 00:02:43,290
به طور مشابه اگر از Hadoop یا
64
00:02:43,290 –> 00:02:45,540
spark right استفاده میکنید Hadoop چیزی به
65
00:02:45,540 –> 00:02:48,120
نام hive دارد که بسیار نزدیک به
66
00:02:48,120 –> 00:02:50,190
67
00:02:50,190 –> 00:02:52,290
68
00:02:52,290 –> 00:02:55,319
SQL است. مهم است
69
00:02:55,319 –> 00:02:57,120
زیرا بسیاری از زبان های پرس و جو
70
00:02:57,120 –> 00:02:59,430
که حتی بر روی پلتفرم های داده های بزرگ استفاده می شوند،
71
00:02:59,430 –> 00:03:01,109
حتی زمانی که مجموعه داده های مقیاس ترابایت دارید
72
00:03:01,109 –> 00:03:04,470
، یک تغییر کوچک در SQL است، بنابراین
73
00:03:04,470 –> 00:03:06,720
باز هم بسته به برنامه،
74
00:03:06,720 –> 00:03:10,049
بسیار رایج است که با رابط های مبتنی بر SQL
75
00:03:10,049 –> 00:03:12,660
برای داده ها یا
76
00:03:12,660 –> 00:03:15,030
داده های پایگاه داده های سنتی مواجه شوید. انبارها یا ذخیرههای کلان داده
77
00:03:15,030 –> 00:03:20,940
درست به نظر میرسد، بنابراین بله،
78
00:03:20,940 –> 00:03:22,440
کسی میگوید ریک این سؤال خوبی است
79
00:03:22,440 –> 00:03:24,060
که تا به امروز پرسیدهاید.
80
00:03:24,060 –> 00:03:25,620
خیلی از کسانی که دوره را در
81
00:03:25,620 –> 00:03:27,389
دوره کاربردی گذرانده اند حداقل
82
00:03:27,389 –> 00:03:30,209
یک شغل پیدا کرده اند بسیاری از آنها چندین
83
00:03:30,209 –> 00:03:33,389
شغل پیدا کرده اند و برخی از آنها
84
00:03:33,389 –> 00:03:35,760
بلافاصله بعد از دوره به شغلی پیوسته اند و سپس
85
00:03:35,760 –> 00:03:39,000
شش ماه بعد شغل خود را تغییر داده اند، بنابراین منظورم
86
00:03:39,000 –> 00:03:41,340
این است که این مهمانی خوبی است. دوست دارم خوب دوست داشته باشم
87
00:03:41,340 –> 00:03:43,859
تا زمانی که هرکسی که تمام
88
00:03:43,859 –> 00:03:45,750
تکالیف را به موقع برای یک دوره بازیکن انجام داد،
89
00:03:45,750 –> 00:03:47,669
ما با موفقیت
90
00:03:47,669 –> 00:03:49,260
توانستیم آنها را حداقل در یک شغل در بسیاری از
91
00:03:49,260 –> 00:03:52,919
موارد بیش از یک کار قرار دهیم، بنابراین کسی
92
00:03:52,919 –> 00:03:55,230
می گوید کدام یک برای یادگیری SQL بهتر است. یا
93
00:03:55,230 –> 00:03:56,819
MongoDB من فکر می کنم ابتدا باید
94
00:03:56,819 –> 00:03:59,669
SQL را یاد بگیرید سپس باید به SQL های دیگر فکر کنید
95
00:03:59,669 –> 00:04:01,919
یک چیز بسیار ساده است و SQL یک
96
00:04:01,919 –> 00:04:04,829
سیستم قدرتمند بسیار عمومی است
97
00:04:04,829 –> 00:04:06,359
که با آن می توانید از بسیاری از فروشگاه های داده پرس و جو
98
00:04:06,359 –> 00:04:09,060
کنید و دوباره سراغ این چیزهای فانتزی نروید
99
00:04:09,060 –> 00:04:10,739
. گرایش در میان
100
00:04:10,739 –> 00:04:12,449
جوانان حتی افراد باتجربه
101
00:04:12,449 –> 00:04:15,329
گاهی اوقات به پشت سر گذاشتن چیزهای فانتزی اگر
102
00:04:15,329 –> 00:04:17,039
اصول شما قوی نیست
103
00:04:17,039 –> 00:04:19,529
104
00:04:19,529 –> 00:04:21,539
105
00:04:21,539 –> 00:04:23,880
هیچ پایگاه داده دنبالهای وجود ندارد،
106
00:04:23,880 –> 00:04:25,860
اینها ذخیرهسازی دادههای خارقالعادهای
107
00:04:25,860 –> 00:04:27,630
هستند، آنها جایگاه خاص خود را
108
00:04:27,630 –> 00:04:29,940
در آنجا دارند،
109
00:04:29,940 –> 00:04:31,830
در برخی موارد بسیار مفید هستند، اما اگر
110
00:04:31,830 –> 00:04:34,860
SQL را نمیدانید، فکر میکنم
111
00:04:34,860 –> 00:04:36,570
قبل از رفتن باید ابتدا SQL را یاد بگیرید و سایر
112
00:04:36,570 –> 00:04:41,750
فناوریهای پیچیده را یاد بگیرید.
113
00:04:41,750 –> 00:04:45,060
کسی می پرسد که چگونه می توان نمره خارج از
114
00:04:45,060 –> 00:04:46,830
کیف را در جنگل های تصادفی دقیق محاسبه کرد و
115
00:04:46,830 –> 00:04:48,750
باز هم این کار حداقل نیم
116
00:04:48,750 –> 00:04:51,720
ساعت طول می کشد تا در این زمینه توضیح دهم احتمالاً
117
00:04:51,720 –> 00:04:53,460
باید این کار را انجام دهیم زمانی که بحث تصادفی را
118
00:04:53,460 –> 00:04:56,070
دنبال می کنیم بنابراین هر کتاب خوبی برای
119
00:04:56,070 –> 00:04:58,140
احتمال و آمار احتمال
120
00:04:58,140 –> 00:04:59,730
و آمار به عنوان یک موضوع این
121
00:04:59,730 –> 00:05:02,130
مشکل اساسی را دارد که یا وجود دارد
122
00:05:02,130 –> 00:05:04,230
بنابراین برای احتمال و آمار
123
00:05:04,230 –> 00:05:06,390
با دو نوع کتاب مواجه
124
00:05:06,390 –> 00:05:07,980
خواهید شد که با یک مجموعه کتاب روبرو خواهید شد که
125
00:05:07,980 –> 00:05:10,380
از نظر تئوری بسیار قوی هستند و مجموعه دیگری از
126
00:05:10,380 –> 00:05:12,090
کتاب هایی که بسیار قوی هستند. و
127
00:05:12,090 –> 00:05:14,640
عملی بسیار سخت است که چیزی را پیدا کنید که
128
00:05:14,640 –> 00:05:16,800
به خوبی به کتابهای درسی استاندارد شما
129
00:05:16,800 –> 00:05:18,390
در سطح کارشناسی
130
00:05:18,390 –> 00:05:20,490
تئوری را پوشش می دهد، اما همه چیز خوب است.
131
00:05:20,490 –> 00:05:22,530
درست است شما نمی دانید چگونه آن را
132
00:05:22,530 –> 00:05:24,870
به برنامه های کاربردی وصل کنید، کتابی
133
00:05:24,870 –> 00:05:26,400
که من از جنبه عملی آن
134
00:05:26,400 –> 00:05:28,080
را خیلی دوست دارم، زیرا تئوری زیادی را در کالج یاد گرفتم،
135
00:05:28,080 –> 00:05:30,330
اما کتابی که واقعاً به من کمک کرد
136
00:05:30,330 –> 00:05:32,310
تئوری را به چیزهای عملی متصل
137
00:05:32,310 –> 00:05:34,680
کنم این کتاب است به نام فکر آمار کتاب بسیار
138
00:05:34,680 –> 00:05:36,780
خوبی است من واقعاً آن کتاب را
139
00:05:36,780 –> 00:05:40,890
دوست دارم ترجیح میدهم من فکر میکنم آمار اوه بله، بنابراین
140
00:05:40,890 –> 00:05:43,170
فکر کنید که آمار یک
141
00:05:43,170 –> 00:05:44,730
کتاب ساده است یا به صورت PDF در دسترس است که به
142
00:05:44,730 –> 00:05:46,740
صورت رایگان در دسترس است.
143
00:05:46,740 –> 00:05:49,260
این کتاب
144
00:05:49,260 –> 00:05:51,810
مفاهیم اولیه
145
00:05:51,810 –> 00:05:54,330
احتمال و آمار را با استفاده از چند
146
00:05:54,330 –> 00:05:56,880
مثال واقعی به شما می آموزد، خوب است که آیا
147
00:05:56,880 –> 00:05:59,220
چگالی توزیع همه
148
00:05:59,220 –> 00:06:01,950
مفاهیم است، در واقع کتاب بسیار خوبی است، بنابراین اگر
149
00:06:01,950 –> 00:06:03,330
می خواهید از دیدگاه عملی یاد بگیرید،
150
00:06:03,330 –> 00:06:05,400
فکر کنید آمار یکی از
151
00:06:05,400 –> 00:06:08,160
موارد مورد علاقه من است. کتابها اما تئوری در آن
152
00:06:08,160 –> 00:06:09,720
کمی در سمت ضعیفتر است، اما
153
00:06:09,720 –> 00:06:13,320
برای موارد کاربردی مشکلی ندارد،
154
00:06:13,320 –> 00:06:15,300
باید دوباره یاد بگیرید. من
155
00:06:15,300 –> 00:06:17,040
افراد زیادی را دیدهام که میتوانند چیزهایی را استخراج کنند، اما
156
00:06:17,040 –> 00:06:18,990
شما نمیتوانید آن را به آن وصل کنید. دنیای واقعی، پس
157
00:06:18,990 –> 00:06:20,520
این یکی از
158
00:06:20,520 –> 00:06:22,080
کتابهای مورد علاقه من بوده است، کتاب کمی قدیمی
159
00:06:22,080 –> 00:06:23,850
است، اما دوباره احتمالش هر از چند گاهی
160
00:06:23,850 –> 00:06:25,740
تغییر نمیکند، درست
161
00:06:25,740 –> 00:06:27,270
است که به اندازه کافی برای چند دهه یکسان بوده است
162
00:06:27,270 –> 00:06:28,920
، البته پیشرفتهایی وجود دارد
163
00:06:28,920 –> 00:06:30,690
اما پایهها این
164
00:06:30,690 –> 00:06:33,810
یکی از کتابهای مورد علاقه من است، خوب به نظر میرسد،
165
00:06:33,810 –> 00:06:36,690
فکر میکنم ببینیم خوب است،
166
00:06:36,690 –> 00:06:40,770
فکر میکنم فقط دو دقیقه از ساعت 6:00 گذشته است
167
00:06:40,770 –> 00:06:42,599
، اگر به مفهومی گیر کردید، چه کاری باید انجام دهیم،
168
00:06:42,599 –> 00:06:45,539
کسی میگوید من
169
00:06:45,539 –> 00:06:46,889
کتابی برای ساختارهای داده پیشنهاد میکنم. الگوریتمها
170
00:06:46,889 –> 00:06:49,949
فکر میکنم مهم است، بنابراین
171
00:06:49,949 –> 00:06:53,099
CLRS بهترین کتابی است که من برای
172
00:06:53,099 –> 00:06:55,530
الگوریتمهای ساختار داده به طور کلی
173
00:06:55,530 –> 00:06:58,860
میشناسم، فقط CLRS را در گوگل جستجو کنید، منظورم این
174
00:06:58,860 –> 00:07:01,530
است که اشکالی ندارد، مسیر کد CLRS را تایپ نکنید و
175
00:07:01,530 –> 00:07:03,690
فقط CLRS را تایپ کنید، این کتاب را دریافت خواهید کرد. یا
176
00:07:03,690 –> 00:07:06,389
مقدمهای بر الگوریتمها این
177
00:07:06,389 –> 00:07:09,330
کتاب استاندارد در اکثر
178
00:07:09,330 –> 00:07:12,210
دانشگاههای جهان است و این کتاب ممکن است
179
00:07:12,210 –> 00:07:14,280
کمی نظری به نظر برسد، اما روشی که آنها
180
00:07:14,280 –> 00:07:16,110
مفهومی را که در جلسه زنده امروز به شما گفتم، پوشش میدهند.
181
00:07:16,110 –> 00:07:17,789
182
00:07:17,789 –> 00:07:20,039
کتابی که از
183
00:07:20,039 –> 00:07:21,509
سال دوم ترم اول در مقطع کارشناسی استفاده
184
00:07:21,509 –> 00:07:23,639
کرده ام، همان نسخه ای را دارم که نوشته
185
00:07:23,639 –> 00:07:25,949
ام بازنویسی کرده ام، یعنی این
186
00:07:25,949 –> 00:07:28,440
دوباره زمانی بود که
187
00:07:28,440 –> 00:07:30,509
درس نیروی الگوریتم ساختارهای داده را برای
188
00:07:30,509 –> 00:07:32,280
دانشجویان علوم کامپیوتر گیت تدریس کردم و همچنین
189
00:07:32,280 –> 00:07:34,800
برای دوره آمادگی مصاحبه ما
190
00:07:34,800 –> 00:07:36,389
همه چیز را از این کتاب پوشش دادم زیرا
191
00:07:36,389 –> 00:07:38,940
فکر می کنم این کتاب یکی از کتاب های کوچک است،
192
00:07:38,940 –> 00:07:40,590
حداقل به این دلیل که از آن یاد گرفتم،
193
00:07:40,590 –> 00:07:42,180
البته من مغرضانه هستم، در طول زمان کتاب های دیگری را نیز خوانده ام،
194
00:07:42,180 –> 00:07:44,520
195
00:07:44,520 –> 00:07:46,080
اما همیشه بهترین کتابی
196
00:07:46,080 –> 00:07:48,210
بوده که برای افرادی که
197
00:07:48,210 –> 00:07:50,219
سطح مبتدی هستند، اگر شما یک
198
00:07:50,219 –> 00:07:51,750
پسر سطح پیشرفته هستید، کتاب های دیگری وجود دارد که
199
00:07:51,750 –> 00:07:53,639
خوب هستند، اما برای سطح مبتدی
200
00:07:53,639 –> 00:07:55,919
فکر می کنم مقدمه ای بر الگوریتم های CLRS به
201
00:07:55,919 –> 00:07:57,330
آن CLR می گویند، زیرا کارمن
202
00:07:57,330 –> 00:07:59,729
لیزرسون rivest and stein برای
203
00:07:59,729 –> 00:08:01,949
دانشمندان کامپیوتر درست است منظورم این است که این
204
00:08:01,949 –> 00:08:04,860
کتاب فوقالعادهای است من نمیتوانم منظورم این است که اگر مجبور باشم
205
00:08:04,860 –> 00:08:06,840
یک کتاب از کل ساختارهای داده الگوریتمها را انتخاب کنم، به
206
00:08:06,840 –> 00:08:09,539
نظر
207
00:08:09,539 –> 00:08:12,750
خوب میآید، پس بیایید بیایید وارد شویم به
208
00:08:12,750 –> 00:08:13,050
آن
209
00:08:13,050 –> 00:08:15,360
اجازه دهید وارد کل جلسه
210
00:08:15,360 –> 00:08:16,740
زندگی شویم که دیروز متوقف شدیم
211
00:08:16,740 –> 00:08:19,259
، دوباره از آنجا ادامه می دهم.
212
00:08:19,259 –> 00:08:21,840
مشکل برنامه نویسی پویا کد را تغییر
213
00:08:21,840 –> 00:08:24,569
می دهم که وقتی در
214
00:08:24,569 –> 00:08:27,539
مورد آن دوباره فکر می کردم، احساس کردم کدی
215
00:08:27,539 –> 00:08:30,389
که دیروز پیشنهاد دادم را دیدم
216
00:08:30,389 –> 00:08:32,279
فکر میکنم آن را در اینجا خواهم داشت، بنابراین
217
00:08:32,279 –> 00:08:33,919
اجازه دهید یک ثانیه آن را باز کنم که برای
218
00:08:33,919 –> 00:08:38,940
شما رمزگشاییها خوب است، بنابراین دیروز ما
219
00:08:38,940 –> 00:08:40,500
دقیقاً به کد دیگری نگاه
220
00:08:40,500 –> 00:08:43,289
میکردیم، پس دیروز داشتم به شما میگفتم، بنابراین
221
00:08:43,289 –> 00:08:45,089
در مورد این مشکل فرعی همپوشانی
222
00:08:45,089 –> 00:08:46,860
همه چیز را به شما گفتم. از آن و من سعی کردم
223
00:08:46,860 –> 00:08:48,810
یک برنامه نویسی پویا را با این نوع
224
00:08:48,810 –> 00:08:50,820
نمودار به شما نشان دهم دوباره این کد را به شما نشان
225
00:08:50,820 –> 00:08:53,010
دادم که آن را از کدهای لو رفته قرض گرفته ام
226
00:08:53,010 –> 00:08:54,400
اما وقتی متوجه شدم این
227
00:08:54,400 –> 00:08:56,280
توضیح کمی پیچیده تر
228
00:08:56,280 –> 00:08:58,510
است زیرا بسیاری از شما ممکن است
229
00:08:58,510 –> 00:09:00,460
با برنامه نویسی پویا خیلی راحت نباشد،
230
00:09:00,460 –> 00:09:04,120
فکر کردم این را با استفاده از
231
00:09:04,120 –> 00:09:06,160
کد قبلی که درست دیدیم بازنویسی کنم، بنابراین
232
00:09:06,160 –> 00:09:08,170
دیروز یک کد بازگشتی ساده
233
00:09:08,170 –> 00:09:08,560
234
00:09:08,560 –> 00:09:10,420
دیدیم، کد بازگشتی را که توضیح دادم دیدیم. من
235
00:09:10,420 –> 00:09:12,780
گام به گام این کد را
236
00:09:12,780 –> 00:09:15,460
با استفاده از برنامه نویسی پویا اصلاح خواهم کرد،
237
00:09:15,460 –> 00:09:16,570
فکر می کنم درک درست آن برای همه آسان تر خواهد بود،
238
00:09:16,570 –> 00:09:19,210
بنابراین بیایید آن را بررسی کنیم،
239
00:09:19,210 –> 00:09:22,180
پس خوب کجاست، بنابراین
240
00:09:22,180 –> 00:09:24,130
امروز دستور کار ساده و
241
00:09:24,130 –> 00:09:27,520
واضح است دوباره متاسفم
242
00:09:27,520 –> 00:09:28,840
243
00:09:28,840 –> 00:09:31,060
من دیروز برنامه نویسی پویا را کمی پیچیده کردم، اکنون آن را ساده می کنم،
244
00:09:31,060 –> 00:09:33,340
بنابراین تمرکز روی مثال برنامه نویسی پویا است
245
00:09:33,340 –> 00:09:35,290
که دیروز در حال حل آن بودیم،
246
00:09:35,290 –> 00:09:38,740
آن را کامل می کنیم که پس از آن یکی از
247
00:09:38,740 –> 00:09:41,590
سؤالات بزرگ در بیشتر برنامه نویسی این است که از کدام
248
00:09:41,590 –> 00:09:44,410
ساختار داده استفاده کنیم وقتی دوباره این کار شد.
249
00:09:44,410 –> 00:09:46,410
یک سوال بسیار مهم، زیرا
250
00:09:46,410 –> 00:09:49,000
شما با بسیاری از موارد روبرو خواهید شد
251
00:09:49,000 –> 00:09:50,500
که اساساً مجموعهای از ساختارهای داده وجود دارد،
252
00:09:50,500 –> 00:09:53,680
درست شما لیستهایی از مجموعه Dyck و
253
00:09:53,680 –> 00:09:55,510
رشتههایی دارید که قبلاً دیدهایم
254
00:09:55,510 –> 00:09:57,820
رشتهها به راحتی قابل درک هستند درست ما
255
00:09:57,820 –> 00:09:59,710
رشتهها و reg X را دیدهایم. تا
256
00:09:59,710 –> 00:10:01,660
دیروز چهار ساختار داده بسیار مهم دیگر وجود دارد
257
00:10:01,660 –> 00:10:02,950
که
258
00:10:02,950 –> 00:10:05,110
در پایتون تعبیه شده است و اکنون
259
00:10:05,110 –> 00:10:07,510
درست می گوییم از کدام ساختار داده استفاده کنیم، بنابراین این یک سوال
260
00:10:07,510 –> 00:10:09,250
بسیار مهم است. بنابراین کاری که
261
00:10:09,250 –> 00:10:11,620
امروز انجام خواهم داد این است که مثال برنامه نویسی پویا را تکمیل می کنم
262
00:10:11,620 –> 00:10:13,390
و خواهیم دید که از کدام
263
00:10:13,390 –> 00:10:15,790
ساختار داده استفاده کنیم، جایی که فرض می
264
00:10:15,790 –> 00:10:17,200
کنم شما
265
00:10:17,200 –> 00:10:19,390
هنوز جلسه کد قبلی را گذرانده اید و دانش اولیه در
266
00:10:19,390 –> 00:10:21,010
مورد داده های داخلی دارید. ساختارها
267
00:10:21,010 –> 00:10:23,230
فرض میکنم درست است اگر آن را
268
00:10:23,230 –> 00:10:24,820
ندارید، دوباره
269
00:10:24,820 –> 00:10:27,940
مستندات را از پایتون به شما میدهم،
270
00:10:27,940 –> 00:10:30,130
این مستندات نسخه 3 پایتون است،
271
00:10:30,130 –> 00:10:32,140
اگر این را نمیدانید یک آموزش بسیار خوب در مورد تمام
272
00:10:32,140 –> 00:10:33,670
این ساختارهای داده وجود دارد.
273
00:10:33,670 –> 00:10:36,430
آموزش بسیار خوب است، جزئیات زیادی را توضیح می دهد
274
00:10:36,430 –> 00:10:38,230
البته
275
00:10:38,230 –> 00:10:40,890
آموزش های خوبی نیز در مورد گیک ها برای گیک ها وجود دارد،
276
00:10:40,890 –> 00:10:42,940
خوب به نظر می رسد خوب است، بیایید
277
00:10:42,940 –> 00:10:43,420
278
00:10:43,420 –> 00:10:46,060
شروع کنیم.
279
00:10:46,060 –> 00:10:47,470
280
00:10:47,470 –> 00:10:49,660
علامت
281
00:10:49,660 –> 00:10:51,250
منطبق بر ستاره تک شخصیت مطابق
282
00:10:51,250 –> 00:10:54,550
صفر یا بیشتر کاراکترها ما این را
283
00:10:54,550 –> 00:10:56,230
دیدیم چه کردیم ما یک الگوریتم بازگشتی ساده نوشتیم بسیار
284
00:10:56,230 –> 00:10:58,450
خوب این
285
00:10:58,450 –> 00:11:00,820
الگوریتم کاملاً تمیز است اگر متوجه شدید چند
286
00:11:00,820 –> 00:11:02,590
خط مشترک de it has اجازه دهید چاپ ها را نادیده بگیریم
287
00:11:02,590 –> 00:11:05,110
و اجازه دهید Inc
288
00:11:05,110 –> 00:11:07,690
بیانیه های چاپی را نادیده بگیریم بیایید نظرات را نادیده بگیریم.
289
00:11:07,690 –> 00:11:07,900
290
00:11:07,900 –> 00:11:09,910
291
00:11:09,910 –> 00:11:11,350
292
00:11:11,350 –> 00:11:13,630
293
00:11:13,630 –> 00:11:16,540
294
00:11:16,540 –> 00:11:19,180
من همچنین به شما توضیح دادم که
295
00:11:19,180 –> 00:11:22,150
این کد را دیروز به شما نشان دادم
296
00:11:22,150 –> 00:11:24,610
که این کد دارای پیچیدگی زمانی نمایی
297
00:11:24,610 –> 00:11:27,040
است درست و باز هم بسیار
298
00:11:27,040 –> 00:11:29,170
ساده است زیرا اگر در
299
00:11:29,170 –> 00:11:30,970
بدترین حالت دوباره به آن نگاه کنید زمانی که در حال محاسبه
300
00:11:30,970 –> 00:11:33,670
پیچیدگی زمانی هستید شما باید همیشه
301
00:11:33,670 –> 00:11:36,190
در مورد بدترین حالت فکر کنید در بدترین حالت بنویسید
302
00:11:36,190 –> 00:11:37,570
اگر متوجه این کد کد شدید
303
00:11:37,570 –> 00:11:40,630
در بدترین حالت مشکل
304
00:11:40,630 –> 00:11:43,390
اندازه n
305
00:11:43,390 –> 00:11:46,360
306
00:11:46,360 –> 00:11:50,020
است. با اندازه n منهای 1
307
00:11:50,020 –> 00:11:51,730
خوب است، بنابراین چه اتفاقی می افتد معادله بازگشتی شما به
308
00:11:51,730 –> 00:11:54,580
این شکل به نظر می رسد خوب
309
00:11:54,580 –> 00:11:55,960
معادله بازگشتی شما به نظر می رسد که یک
310
00:11:55,960 –> 00:11:57,790
مسئله زمان صرف شده برای حل یک
311
00:11:57,790 –> 00:12:00,550
مسئله به اندازه n زمان صرف شده برای حل یک
312
00:12:00,550 –> 00:12:03,820
مسئله است. اندازه n منهای 1 به 2 درست است
313
00:12:03,820 –> 00:12:04,980
زیرا باید دو مسئله را
314
00:12:04,980 –> 00:12:07,780
به اضافه مرتبه 1 حل کنید زیرا باید
315
00:12:07,780 –> 00:12:09,760
ترتیب منطقی را درست محاسبه کنید و
316
00:12:09,760 –> 00:12:11,770
با استفاده از رویکرد درخت بازگشتی مجدداً
317
00:12:11,770 –> 00:12:13,630
استراتژی های زیادی برای حل
318
00:12:13,630 –> 00:12:15,910
این معادله بازگشتی وجود دارد درخت
319
00:12:15,910 –> 00:12:17,590
بازگشتی یکی از موارد است. سادهترین باز
320
00:12:17,590 –> 00:12:20,110
هم در فیلمهای دورهمان درباره این موضوع بحث میکنیم، بنابراین با استفاده از
321
00:12:20,110 –> 00:12:22,000
این رویکرد دیدیم که کد سادهای
322
00:12:22,000 –> 00:12:23,860
که نوشتیم پیچیدگی زمانی نمایی دارد
323
00:12:23,860 –> 00:12:26,770
که همیشه بد است، درست
324
00:12:26,770 –> 00:12:28,630
است که اصلاً اجرا میشود،
325
00:12:28,630 –> 00:12:31,990
بنابراین من گفتم خوب چگونه میتوانیم
326
00:12:31,990 –> 00:12:34,300
آن را به درستی بهبود دهید، بنابراین آنچه به شما نشان دادم این است که
327
00:12:34,300 –> 00:12:36,910
تصور کنید اگر من الگو و
328
00:12:36,910 –> 00:12:39,100
رشته خود را داشته باشم الگوی من فرض کنید n
329
00:12:39,100 –> 00:12:41,140
کاراکتر داشته باشد، بیایید بگوییم شما رشته من
330
00:12:41,140 –> 00:12:43,420
نیز n کاراکتر دارد، من درخت بازگشت را
331
00:12:43,420 –> 00:12:46,270
در اینجا رسم کردم و به شما نشان دادم که در
332
00:12:46,270 –> 00:12:48,670
آنجا مشکل فرعی همپوشانی است که
333
00:12:48,670 –> 00:12:50,890
دوباره و مهمتر از همه ما دیدیم
334
00:12:50,890 –> 00:12:52,810
که این مشکل را می توان با استفاده از یک
335
00:12:52,810 –> 00:12:55,540
بازگشت که بسیار مهم است حل کرد و من
336
00:12:55,540 –> 00:12:57,420
با این مثال دیروز
337
00:12:57,420 –> 00:13:01,150
دوباره یک مسئله را به شما نشان دادم که در آن P n n
338
00:13:01,150 –> 00:13:03,700
کاراکتر دارد S n کاراکتر دارد اگر شما
339
00:13:03,700 –> 00:13:05,680
در بدترین حالت بیایید
340
00:13:05,680 –> 00:13:08,650
بدترین حالت را در بدترین حالت بنویسیم
341
00:13:08,650 –> 00:13:10,690
این درخت بازگشتی شماست این مشکل
342
00:13:10,690 –> 00:13:11,950
حل می شود اگر این مشکل را حل کنید
343
00:13:11,950 –> 00:13:14,290
و این مشکل را بنویسید این
344
00:13:14,290 –> 00:13:16,030
مشکل را می توانید حل کنید اگر این
345
00:13:16,030 –> 00:13:18,160
مشکل را در این مشکل حل کنید این مشکل را می
346
00:13:18,160 –> 00:13:19,630
توانید حل کنید اگر این مشکل را حل کنید در
347
00:13:19,630 –> 00:13:20,230
این
348
00:13:20,230 –> 00:13:21,820
اولین چیزی که در اینجا بسیار راحت متوجه خواهید شد
349
00:13:21,820 –> 00:13:24,339
که همان مشکل فرعی در اینجا
350
00:13:24,339 –> 00:13:26,950
دو بار حل می شود زمانی که
351
00:13:26,950 –> 00:13:28,420
شما این مشکل فرعی را حل می کنید. برای
352
00:13:28,420 –> 00:13:30,160
حل دوباره این مسئله
353
00:13:30,160 –> 00:13:33,670
به قسمت های بسیار کوچکتر تقسیم می شود،
354
00:13:33,670 –> 00:13:36,010
بنابراین آنچه که دارد چیزی است که
355
00:13:36,010 –> 00:13:38,079
به عنوان مشکل فرعی همپوشانی نامیده می شود، چرا به
356
00:13:38,079 –> 00:13:39,519
آن مشکل فرعی همپوشانی
357
00:13:39,519 –> 00:13:42,100
می گویند زیرا همان مشکل فرعی را که
358
00:13:42,100 –> 00:13:45,640
بارها و بارها در حال حل آن هستید درست در زمانی که
359
00:13:45,640 –> 00:13:47,980
وقتی
360
00:13:47,980 –> 00:13:49,540
راهحل شما یک راهحل بازگشتی
361
00:13:49,540 –> 00:13:52,300
با مشکل فرعی همپوشانی است، ساختاری شبیه به این میبینید، این باید
362
00:13:52,300 –> 00:13:53,649
به شما بگوید که میتوانید این مشکل را
363
00:13:53,649 –> 00:13:56,320
با استفاده از برنامهنویسی پویا و دوباره dynamic p حل کنید.
364
00:13:56,320 –> 00:13:58,450
روگرامینگ یکی از
365
00:13:58,450 –> 00:14:02,230
ایدههای بسیار محبوب در طراحی الگوریتمی است و
366
00:14:02,230 –> 00:14:04,890
این یکی از محبوبترین
367
00:14:04,890 –> 00:14:07,300
مفاهیمی است که مردم در برنامه
368
00:14:07,300 –> 00:14:10,209
کامل مبتنی بر محصول میپرسند، مصاحبهها درست
369
00:14:10,209 –> 00:14:13,630
در نقشهای توسعه نرمافزار است،
370
00:14:13,630 –> 00:14:16,120
اگر در فیس بوک آمازون با همه
371
00:14:16,120 –> 00:14:18,040
این شرکتهای برتر مبتنی بر محصول مصاحبه کنید. به
372
00:14:18,040 –> 00:14:19,810
احتمال زیاد حداقل با
373
00:14:19,810 –> 00:14:21,579
یک مشکل برنامه نویسی پویا مواجه خواهید شد
374
00:14:21,579 –> 00:14:23,680
و چگونه می توانید تشخیص دهید که این مشکل
375
00:14:23,680 –> 00:14:25,360
برنامه نویسی پویا است، ابتدا باید
376
00:14:25,360 –> 00:14:27,399
تشخیص دهید که بازگشتی است و
377
00:14:27,399 –> 00:14:28,839
فقط با ترسیم این درخت می توانید تشخیص دهید
378
00:14:28,839 –> 00:14:31,120
که در همان لحظه مشکل فرعی همپوشانی دارد.
379
00:14:31,120 –> 00:14:33,610
380
00:14:33,610 –> 00:14:36,190
اگر
381
00:14:36,190 –> 00:14:37,839
شما یک مهندس یادگیری ماشینی یا دانشمند داده یا دانشمند یادگیری ماشینی در شرکت های مبتنی بر محصول هستید، اگر شما یک مهندس یادگیری ماشینی یا
382
00:14:37,839 –> 00:14:40,180
دانشمند داده یا دانشمند یادگیری ماشینی
383
00:14:40,180 –> 00:14:42,310
در شرکت های مبتنی بر محصول
384
00:14:42,310 –> 00:14:44,950
هستید، این مشکل اغلب از شما پرسیده می شود که آیا
385
00:14:44,950 –> 00:14:46,750
تجربه قبلی در زمینه مهندسی نرم افزار
386
00:14:46,750 –> 00:14:48,640
دارید یا اینکه درست از
387
00:14:48,640 –> 00:14:51,310
پس زمینه علوم کامپیوتر آمدهام، بنابراین فکر کردم اگر نه، دوباره
388
00:14:51,310 –> 00:14:52,690
برای علاقه مردم این موضوع را پوشش خواهم داد
389
00:14:52,690 –> 00:14:54,970
اگر یک فرد CS
390
00:14:54,970 –> 00:14:56,380
نیستید، اگر
391
00:14:56,380 –> 00:14:58,899
تجربه قبلی ندارید، حتی اگر
392
00:14:58,899 –> 00:15:01,050
این کد را بنویسید
393
00:15:01,050 –> 00:15:03,310
دوباره خوب هستید، باید هر برنامه نویسی
394
00:15:03,310 –> 00:15:04,779
که برای یادگیری ماشین درخواست
395
00:15:04,779 –> 00:15:06,040
می کند، انتظار این است که
396
00:15:06,040 –> 00:15:08,230
شما می توانید کد بازگشتی بنویسید، اجازه دهید
397
00:15:08,230 –> 00:15:10,329
این نقطه را از دست ندهید که بازگشت به نقطه
398
00:15:10,329 –> 00:15:13,180
399
00:15:13,180 –> 00:15:14,410
400
00:15:14,410 –> 00:15:16,930
401
00:15:16,930 –> 00:15:18,699
402
00:15:18,699 –> 00:15:21,699
403
00:15:21,699 –> 00:15:24,130
اجباری است. چرا
404
00:15:24,130 –> 00:15:25,870
مشکلی را که قبلاً حل کردهام ذخیره نمیکنم،
405
00:15:25,870 –> 00:15:28,360
مثلاً به این نگاه کنید، اجازه دهید
406
00:15:28,360 –> 00:15:30,730
با این مثال درست به شما نشان دهم، بنابراین
407
00:15:30,730 –> 00:15:32,199
فرض کنید من در
408
00:15:32,199 –> 00:15:33,730
حین حل این مشکل
409
00:15:33,730 –> 00:15:35,680
دارم این مشکل را حل میکنم، فرض کنید شما ابتدا این مشکل را زمانی که من حل کردم
410
00:15:35,680 –> 00:15:37,089
این مشکل را حل کرد، فرض کنید شما ابتدا
411
00:15:37,089 –> 00:15:38,139
412
00:15:38,139 –> 00:15:39,940
این مشکل را حل کردم، سپس این مشکل را حل
413
00:15:39,940 –> 00:15:42,880
کردم، بسیار خوب، اگر دوباره نتیجه را ذخیره کنم،
414
00:15:42,880 –> 00:15:45,070
یک مشکل را حل کردم. y
415
00:15:45,070 –> 00:15:46,600
به این معنی است که چگونه می توان
416
00:15:46,600 –> 00:15:49,240
درست یا نادرست بودن آن را تشخیص داد درست در مورد ما هر چه
417
00:15:49,240 –> 00:15:51,310
نتیجه آن باشد اگر آن را در
418
00:15:51,310 –> 00:15:53,380
جایی ذخیره کنم اگر این نتیجه را در جایی ذخیره کنم
419
00:15:53,380 –> 00:15:55,990
دفعه بعد بعد از حل دوباره چه اتفاقی می افتد
420
00:15:55,990 –> 00:15:57,519
به دنباله نگاه کنید
421
00:15:57,519 –> 00:15:59,199
تا این مشکل را حل کنید. اول
422
00:15:59,199 –> 00:16:02,230
این را حل می کنم تا این را حل کنم دوباره این را حل می کنم یک
423
00:16:02,230 –> 00:16:03,790
سری زیرمشکل در اینجا که
424
00:16:03,790 –> 00:16:06,279
باید حل کنم سپس این را حل می کنم سپس می خواهم
425
00:16:06,279 –> 00:16:09,459
این را حل کنم که برای حل این است
426
00:16:09,459 –> 00:16:11,680
دوباره باید این را درست حل کنم و
427
00:16:11,680 –> 00:16:13,389
باید حل این مسئله برای
428
00:16:13,389 –> 00:16:14,860
این پنجمین مشکل فرعی است این ششمین
429
00:16:14,860 –> 00:16:17,440
مشکل فرعی است که به اندازه کافی حل می شود زیرا
430
00:16:17,440 –> 00:16:18,699
من قبلاً همان مشکل را
431
00:16:18,699 –> 00:16:21,880
حل کرده ام و نتیجه را ذخیره کرده ام فقط می توانم
432
00:16:21,880 –> 00:16:24,010
این نتیجه را بدون
433
00:16:24,010 –> 00:16:26,079
فراخوانی مجدد تابع بازگشتی واکشی کنم و بارها
434
00:16:26,079 –> 00:16:28,209
و بارها، بنابراین کل ایده
435
00:16:28,209 –> 00:16:31,240
حفظ کردن، بسیار خوب، کل ایده
436
00:16:31,240 –> 00:16:33,100
حفظ کردن این است که اگر یک مشکل فرعی را حل کرده باشیم،
437
00:16:33,100 –> 00:16:35,800
فقط نتیجه را در
438
00:16:35,800 –> 00:16:37,930
جایی ذخیره کنید تا اگر مجبور شدید
439
00:16:37,930 –> 00:16:40,449
همان مشکل فرعی را دوباره حل کنید به جای
440
00:16:40,449 –> 00:16:42,430
دوباره تماس بگیرید. با استفاده از تابع بازگشتی
441
00:16:42,430 –> 00:16:45,639
فقط کافیست آن را از فروشگاه دریافت
442
00:16:45,639 –> 00:16:47,380
کنید که این یک ایده کاملاً ساده
443
00:16:47,380 –> 00:16:49,269
است که کل ایده
444
00:16:49,269 –> 00:16:51,699
پشت برنامه نویسی پویا است، بنابراین
445
00:16:51,699 –> 00:16:53,860
کل ایده اینجا این است که چرا ما
446
00:16:53,860 –> 00:16:55,569
راه حل هایی را که قبلاً مسائل حل شده را محاسبه
447
00:16:55,569 –> 00:16:58,269
کرده ایم ذخیره نکنیم. بیایید آن را در جایی ذخیره کنیم،
448
00:16:58,269 –> 00:16:58,720
449
00:16:58,720 –> 00:17:00,730
یک راه برای ذخیره دوباره آن،
450
00:17:00,730 –> 00:17:02,440
راه های زیادی برای ذخیره آن وجود دارد، یک روش ذخیره
451
00:17:02,440 –> 00:17:03,990
آن در یک ساختار داده مانند یک فرهنگ لغت
452
00:17:03,990 –> 00:17:06,730
دوباره در فرهنگ
453
00:17:06,730 –> 00:17:08,290
454
00:17:08,290 –> 00:17:11,980
لغت است. جدول هش درست
455
00:17:11,980 –> 00:17:15,010
دارای جفت مقادیر کلیدی است درست دارای جفت ارزش کلیدی
456
00:17:15,010 –> 00:17:17,260
است و اگر دوباره آن را جستجو کنید
457
00:17:17,260 –> 00:17:18,880
یکی از ویژگی های جدول هش چیست
458
00:17:18,880 –> 00:17:21,699
می توانید یک کلید بدهید می توانید مقدار را پیدا کنید
459
00:17:21,699 –> 00:17:23,169
و می توانید آن را خیلی سریع جستجو کنید
460
00:17:23,169 –> 00:17:25,270
یا این یکی از
461
00:17:25,270 –> 00:17:26,290
ویژگیهای اساسی دیکشنریهای درست
462
00:17:26,290 –> 00:17:28,780
دیکشنری است که میتوانید بهترتیب
463
00:17:28,780 –> 00:17:31,090
یکبار
464
00:17:31,090 –> 00:17:33,460
465
00:17:33,460 –> 00:17:34,870
بهطور
466
00:17:34,870 –> 00:17:37,330
بسیار کارآمد جستجو کنید. دنیا
467
00:17:37,330 –> 00:17:39,520
اگر مهندس نرمافزار شوید یا
468
00:17:39,520 –> 00:17:42,250
اگر مهندس نرمافزار هستید،
469
00:17:42,250 –> 00:17:44,049
دوباره جداول را
470
00:17:44,049 –> 00:17:47,230
دیکته
471
00:17:47,230 –> 00:17:48,820
یا
472
00:17:48,820 –> 00:17:51,100
473
00:17:51,100 –> 00:17:52,720
474
00:17:52,720 –> 00:17:55,270
هش میکند. جداول
475
00:17:55,270 –> 00:17:59,440
بیشترین استفاده را در بین تمام
476
00:17:59,440 –> 00:18:02,110
کدهایی دارند که من در زندگی خود در تولید دیده ام.
477
00:18:02,110 –> 00:18:04,780
478
00:18:04,780 –> 00:18:07,660
479
00:18:07,660 –> 00:18:09,730
480
00:18:09,730 –> 00:18:12,730
481
00:18:12,730 –> 00:18:14,680
مجدداً ریاضیات پشت
482
00:18:14,680 –> 00:18:16,930
جداول هش زیبا است، اما بسیار
483
00:18:16,930 –> 00:18:19,180
فراتر از محدوده این بحث است،
484
00:18:19,180 –> 00:18:21,460
بنابراین برنامه نویسی پویا این است که
485
00:18:21,460 –> 00:18:22,660
اساساً اگر مشکل فرعی بازگشتی و
486
00:18:22,660 –> 00:18:23,920
همپوشانی داشته
487
00:18:23,920 –> 00:18:25,720
باشید همین است و دوباره همانطور که دیروز اشاره
488
00:18:25,720 –> 00:18:29,350
کردم ما در دوره آموزشی خود خواهیم داشت.
489
00:18:29,350 –> 00:18:31,240
سوابق کاربردی ما این
490
00:18:31,240 –> 00:18:32,830
مفهوم را زمانی پوشش دادهایم که انتشار برگشتی را یاد میگیریم
491
00:18:32,830 –> 00:18:34,960
و درست برنامهریزی میکنیم، بنابراین دوباره متوجه خواهید شد
492
00:18:34,960 –> 00:18:36,600
که وقتی به back propagation میرویم opagation
493
00:18:36,600 –> 00:18:39,880
بسیار خوب است، بنابراین اکنون دوباره اجازه دهید یک مفهوم دیگر را در اینجا به شما ارائه دهم،
494
00:18:39,880 –> 00:18:41,050
495
00:18:41,050 –> 00:18:42,970
پس برنامه نویسی پویا را می توان
496
00:18:42,970 –> 00:18:45,220
به طور کلی با دو روش حل کرد، با توجه به هر
497
00:18:45,220 –> 00:18:47,350
برنامه نویسی پویا، ما می توانیم آن را
498
00:18:47,350 –> 00:18:48,790
با استفاده از چیزی به نام
499
00:18:48,790 –> 00:18:52,180
برنامه نویسی پویا از بالا به پایین یا برنامه نویسی پویا از پایین به بالا حل کنیم.
500
00:18:52,180 –> 00:18:54,520
دو راه
501
00:18:54,520 –> 00:18:56,890
درست وجود دارد دو راه هر دو
502
00:18:56,890 –> 00:18:58,480
مزایا و معایب خود را دارند
503
00:18:58,480 –> 00:19:01,210
دیروز کدی که من نوشتم یا
504
00:19:01,210 –> 00:19:03,220
اینکه من که از کد لید به شما نشان دادم
505
00:19:03,220 –> 00:19:07,330
در واقع یک DP از پایین به بالا است دوباره یک DP از
506
00:19:07,330 –> 00:19:10,240
بالا به پایین اساساً به این معنی است که من
507
00:19:10,240 –> 00:19:12,820
هنوز هم از بازگشت استفاده می کنم من
508
00:19:12,820 –> 00:19:14,920
از یک بازگشت استفاده می کنم به علاوه از
509
00:19:14,920 –> 00:19:17,740
مقداری فضای ذخیره سازی برای ذخیره
510
00:19:17,740 –> 00:19:20,560
راه حل های زیرمسئله خود از پایین به بالا استفاده می کنم DP می گوید به جای
511
00:19:20,560 –> 00:19:21,970
استفاده از یک بازگشت، زیرا بازگشت
512
00:19:21,970 –> 00:19:24,550
دارای معایبی است که من از آن استفاده خواهم کرد.
513
00:19:24,550 –> 00:19:27,460
من مدت زمان درستی دارم و می خواهم از
514
00:19:27,460 –> 00:19:29,350
جدول استفاده کنم و خوب هستم، بنابراین به این روش
515
00:19:29,350 –> 00:19:31,720
به عنوان روش های جدول بندی
516
00:19:31,720 –> 00:19:33,730
نیز می گویند، بنابراین در برخی کتاب های درسی، DP از پایین به بالا در برخی کتاب های درسی
517
00:19:33,730 –> 00:19:35,470
به عنوان برنامه نویسی پویا توسط
518
00:19:35,470 –> 00:19:38,260
جدول بندی از بالا به پایین DP نیز نامیده می شود.
519
00:19:38,260 –> 00:19:40,240
ks به عنوان برنامه نویسی پویا
520
00:19:40,240 –> 00:19:43,300
با استفاده از به خاطر سپردن درست یا به آن
521
00:19:43,300 –> 00:19:45,570
522
00:19:45,570 –> 00:19:47,830
برنامه نویسی پویا مبتنی بر حفظ مبتنی بر حافظه نیز گفته می شود،
523
00:19:47,830 –> 00:19:49,690
بنابراین دیروز کدی که به شما نشان دادم
524
00:19:49,690 –> 00:19:51,190
و سعی کردم با آن
525
00:19:51,190 –> 00:19:53,830
نوار با جدول توضیح دهم، باز هم از پایین به
526
00:19:53,830 –> 00:19:55,330
بالا بزرگترین عیب با پایین است.
527
00:19:55,330 –> 00:19:59,260
– بالا به بالا ظاهر می شود از پایین به بالا DP است که درک آن سخت تر است،
528
00:19:59,260 –> 00:20:00,600
درک
529
00:20:00,600 –> 00:20:03,420
آن کمی سخت تر است، اما
530
00:20:03,420 –> 00:20:05,100
از نظر محاسباتی کمی
531
00:20:05,100 –> 00:20:07,860
کارآمدتر است BP از بالا به پایین آسان تر است از
532
00:20:07,860 –> 00:20:10,230
نظر محاسباتی
533
00:20:10,230 –> 00:20:12,990
کارآمدتر است، بنابراین به جای استفاده از پایین به بالا،
534
00:20:12,990 –> 00:20:15,090
زیرا برخی از مبتدیان شما در این زمینه
535
00:20:15,090 –> 00:20:17,820
فکر کردم چرا ما فقط از DP از بالا به پایین استفاده
536
00:20:17,820 –> 00:20:20,520
نکنیم زیرا درک آن آسان تر است، بنابراین
537
00:20:20,520 –> 00:20:22,650
من کد را با استفاده از DP از بالا به پایین
538
00:20:22,650 –> 00:20:24,990
نوشتم، بنابراین اگر این کد را به خاطر می آورید که چه کاری
539
00:20:24,990 –> 00:20:26,910
انجام داده ام در واقع خوب است. برو به گزینه اجازه دهید
540
00:20:26,910 –> 00:20:29,280
به این ok بروم، بنابراین کاری که من انجام دادم این
541
00:20:29,280 –> 00:20:30,780
است که این کدی است که دیروز دیدیم،
542
00:20:30,780 –> 00:20:33,960
بنابراین من فقط این کد را کمی تغییر دادم خوب
543
00:20:33,960 –> 00:20:35,490
دوباره این یک بازگشتی است ما این
544
00:20:35,490 –> 00:20:37,560
بازگشت را درست دیدیم. امروز کمی آن را انجام
545
00:20:37,560 –> 00:20:39,510
دادم حالا اجازه دهید توضیح دهم که
546
00:20:39,510 –> 00:20:40,830
چگونه کار می کند خوب
547
00:20:40,830 –> 00:20:43,590
اجازه دهید من قدم به قدم بروم خوب من
548
00:20:43,590 –> 00:20:45,690
این تابع را مطابقت E’s DP
549
00:20:45,690 –> 00:20:47,970
می نامم بسیار خوب من با استفاده از برنامه نویسی پویا مطابقت دارم YZ
550
00:20:47,970 –> 00:20:50,640
ایده این است بنابراین هر زمان
551
00:20:50,640 –> 00:20:53,250
که یک مشکل فرعی را حل کردم به آن نگاه کنید. این
552
00:20:53,250 –> 00:20:54,930
نمودار در اینجا به این نمودار نگاه کنید
553
00:20:54,930 –> 00:20:57,770
هر زمان که من حل می کنم ایده کلیدی این است که
554
00:20:57,770 –> 00:21:00,450
هر زمان که یک مشکل فرعی را حل می کنم تصور کنید اگر
555
00:21:00,450 –> 00:21:02,940
یک مشکل فرعی را حل کنم تصور کنید
556
00:21:02,940 –> 00:21:05,040
اگر حل کنم مشکلی مانند این است چگونه
557
00:21:05,040 –> 00:21:08,010
این داده ها را ذخیره کنم اگر متوجه
558
00:21:08,010 –> 00:21:10,320
شروع شدید خود ایندکس شروع در
559
00:21:10,320 –> 00:21:12,390
حال تغییر است شاخص پایانی int ثابت می
560
00:21:12,390 –> 00:21:14,790
ماند شاخص پایانی همیشه
561
00:21:14,790 –> 00:21:16,350
در هر یک از مسائل فرعی ثابت می ماند می توانید مشکلات فرعی را
562
00:21:16,350 –> 00:21:18,450
ترسیم کنید ایندکس پایانی
563
00:21:18,450 –> 00:21:20,040
تغییر نمی کند فقط شاخص شروع است
564
00:21:20,040 –> 00:21:22,140
که تغییر می کند، بنابراین من چه کار خواهم کرد حالا
565
00:21:22,140 –> 00:21:25,590
بیایید این را به عنوان شروع P یا شروع الگو
566
00:21:25,590 –> 00:21:27,540
بنامیم و اجازه دهید این را به عنوان
567
00:21:27,540 –> 00:21:30,660
شروع رشته بنامیم ok اجازه دهید آنها را به عنوان الگوی شروع صدا بزنم
568
00:21:30,660 –> 00:21:33,180
که اساساً به معنای
569
00:21:33,180 –> 00:21:36,900
شاخص شروع الگو و شاخص شروع رشته است، بنابراین
570
00:21:36,900 –> 00:21:40,740
فهرست شروع رشته درست است، بنابراین دوباره t را دارم
571
00:21:40,740 –> 00:21:41,910
o دوباره باید این
572
00:21:41,910 –> 00:21:43,170
اطلاعات را به درستی ذخیره کنم، باید ذخیره
573
00:21:43,170 –> 00:21:44,400
کنم، مثلاً اگر این مشکل فرعی را حل کردم
574
00:21:44,400 –> 00:21:46,380
و نتیجه این
575
00:21:46,380 –> 00:21:48,180
زیرمشکل است، بیایید بگوییم درست است.
576
00:21:48,180 –> 00:21:49,800
577
00:21:49,800 –> 00:21:51,780
578
00:21:51,780 –> 00:21:53,880
من می خواهم آن را در جایی ذخیره کنم چگونه می توانم
579
00:21:53,880 –> 00:21:55,830
آن را ذخیره کنم یک ساختار داده ای که می توانم
580
00:21:55,830 –> 00:21:58,050
در اینجا از آن استفاده کنم یک فرهنگ لغت است، بنابراین چگونه
581
00:21:58,050 –> 00:21:59,580
دیکشنری خود را طراحی کنم یک دیکشنری دارای
582
00:21:59,580 –> 00:22:01,890
جفت ارزش کلیدی است بنویسم یک فرهنگ لغت به نظر
583
00:22:01,890 –> 00:22:04,650
می رسد درست است یک فرهنگ لغت دارای
584
00:22:04,650 –> 00:22:07,080
مقدار کلیدی کلید ارزش کلیدی است مقدار کلید مقدار و
585
00:22:07,080 –> 00:22:09,660
غیره درست است، بنابراین شما یک کلید دارید و
586
00:22:09,660 –> 00:22:11,730
شما یک مقدار
587
00:22:11,730 –> 00:22:13,980
دارید.
588
00:22:13,980 –> 00:22:14,640
589
00:22:14,640 –> 00:22:17,070
590
00:22:17,070 –> 00:22:20,130
591
00:22:20,130 –> 00:22:23,789
نتیجه خاموش شدن این مشکل فرعی در یک
592
00:22:23,789 –> 00:22:26,370
فرهنگ لغت در یک فرهنگ لغت به من می گویند
593
00:22:26,370 –> 00:22:29,610
من این فرهنگ لغت را به عنوان DP نام می گذارم خوب DP
594
00:22:29,610 –> 00:22:31,230
کوچک DP یعنی نام
595
00:22:31,230 –> 00:22:34,260
فرهنگ لغت در این فرهنگ لغت است که کلید من
596
00:22:34,260 –> 00:22:37,409
اساساً یک تاپلی است و اولین
597
00:22:37,409 –> 00:22:39,149
ورودی چیست در تاپ اولین
598
00:22:39,149 –> 00:22:41,610
ورودی الگوی شروع است، ورودی دوم
599
00:22:41,610 –> 00:22:43,649
شروع رشته است و مقدار
600
00:22:43,649 –> 00:22:45,809
در این فرهنگ لغت چقدر است، مقدار
601
00:22:45,809 –> 00:22:47,750
راه حل درست یا نادرست
602
00:22:47,750 –> 00:22:50,010
درست است، این همان چیزی است که من اکنون در فرهنگ لغت خود ذخیره می کنم
603
00:22:50,010 –> 00:22:52,740
اگر این یک است، ممکن است
604
00:22:52,740 –> 00:22:54,299
این را حل کنید. مشکل چگونه این را در
605
00:22:54,299 –> 00:22:56,250
فرهنگ لغت خود ذخیره کنم، در فرهنگ لغت خود می
606
00:22:56,250 –> 00:22:58,320
گویم که یک ورودی 2 کاما 2 ایجاد می کنم و
607
00:22:58,320 –> 00:23:00,600
می گویم که مقدار آن درست است
608
00:23:00,600 –> 00:23:01,919
و البته ممکن است ورودی های
609
00:23:01,919 –> 00:23:04,769
دیگری نیز وجود داشته باشد.
610
00:23:04,769 –> 00:23:06,809
به این صورت است که من
611
00:23:06,809 –> 00:23:09,029
اکنون در فرهنگ لغت خود ذخیره می کنم، زمانی که این را
612
00:23:09,029 –> 00:23:10,679
در فرهنگ لغت خود ذخیره می کنم، زمانی که باید
613
00:23:10,679 –> 00:23:12,990
614
00:23:12,990 –> 00:23:14,460
دوباره مشکل را حل
615
00:23:14,460 –> 00:23:16,159
کنم. فرهنگ لغت DP
616
00:23:16,159 –> 00:23:19,830
اکنون اگر همان مشکل وجود داشته باشد، متاسفم اگر
617
00:23:19,830 –> 00:23:21,450
همان مشکل باید دوباره حل شود
618
00:23:21,450 –> 00:23:23,610
قبل از اینکه این مشکل را به صورت بازگشتی حل
619
00:23:23,610 –> 00:23:25,950
کنم، ابتدا بررسی خواهم کرد که آیا فرهنگ لغت من
620
00:23:25,950 –> 00:23:28,529
حاوی این مدخل است 2 کاما 2 اگر
621
00:23:28,529 –> 00:23:31,320
حاوی این مدخل 2 کاما 2 باشد.
622
00:23:31,320 –> 00:23:33,059
در حال حاضر نتیجه برای آن من مجبور نیستم دوباره
623
00:23:33,059 –> 00:23:34,620
n به صورت بازگشتی این
624
00:23:34,620 –> 00:23:37,889
مشکل را خیلی ساده حل کنید و دوباره چرا
625
00:23:37,889 –> 00:23:39,389
من از یک فرهنگ لغت در اینجا استفاده می کنم و
626
00:23:39,389 –> 00:23:41,340
از ساختار داده استفاده نمی کنم زیرا در یک
627
00:23:41,340 –> 00:23:43,260
فرهنگ لغت اگر من فقط اگر
628
00:23:43,260 –> 00:23:45,330
الگوی شروع و الگوی به من داده شود، بنابراین یک الگوی
629
00:23:45,330 –> 00:23:48,240
شروع و شاخص های شروع قدرت من
630
00:23:48,240 –> 00:23:50,070
فقط این دو شاخص را داده ام که می توانم
631
00:23:50,070 –> 00:23:52,830
به سرعت در فرهنگ لغت خود جستجو کنم، می
632
00:23:52,830 –> 00:23:55,080
توانم در فرهنگ لغت به یاد بیاورم اگر کلیدی را
633
00:23:55,080 –> 00:23:59,279
بدهید می توانید به ترتیب یک بار جستجو کنید
634
00:23:59,279 –> 00:24:00,990
این یکی از مهمترین ویژگی
635
00:24:00,990 –> 00:24:03,090
های پیش بینی Airy یا دوباره جدول هش است
636
00:24:03,090 –> 00:24:04,380
که چیزی که قرار است به اندازه کافی
637
00:24:04,380 –> 00:24:05,909
درست استفاده کنیم، اجازه دهید وارد کد بشوم و
638
00:24:05,909 –> 00:24:08,760
کد شما را خط به خط توضیح دهم، بنابراین
639
00:24:08,760 –> 00:24:10,440
عملکرد بازگشتی من کمی آن را تغییر
640
00:24:10,440 –> 00:24:14,070
میدهم ورودی من رشته الگو است،
641
00:24:14,070 –> 00:24:16,440
الگوی شروع مسیر، شروع رشته
642
00:24:16,440 –> 00:24:19,230
و ساختار داده DP دوباره در
643
00:24:19,230 –> 00:24:23,010
اینجا DP چیست BP یک الگوی فرهنگ لغت است شروع
644
00:24:23,010 –> 00:24:24,210
اساساً به این معنی است که اگر من یک مشکل
645
00:24:24,210 –> 00:24:27,120
فرعی را با الگوی خود حل می کنم با توجه به اینکه
646
00:24:27,120 –> 00:24:27,929
من یک الگو هستم بیایید
647
00:24:27,929 –> 00:24:31,230
از ساعت 2:00 تا پایان اگر می خواهم مطابقت داشته باشم اگر می
648
00:24:31,230 –> 00:24:33,149
خواهم مطابقت داشته باشم به پایان و اجازه دهید بگو
649
00:24:33,149 –> 00:24:35,820
اگر رشته ای بخواهم اگر بخواهم
650
00:24:35,820 –> 00:24:38,460
با 3 مطابقت کنم تا به پایان برسد، این الگوی است که
651
00:24:38,460 –> 00:24:40,110
می خواهم با این رشته مطابقت دهم،
652
00:24:40,110 –> 00:24:42,570
سپس الگوی شروع به
653
00:24:42,570 –> 00:24:46,019
شروع رشته خواهد بود 3 درست است، بنابراین اساساً این
654
00:24:46,019 –> 00:24:48,720
دو به من می گویند از کدام شاخص در
655
00:24:48,720 –> 00:24:51,629
الگو تا انتها باید
656
00:24:51,629 –> 00:24:54,269
با شاخصی که در رشته به
657
00:24:54,269 –> 00:24:57,019
پایان می رسد مطابقت دهم باید دوباره آن را با راست تطبیق دهم
658
00:24:57,019 –> 00:24:59,549
، چند دقیقه طول می کشد تا
659
00:24:59,549 –> 00:25:01,529
به آن عادت کنیم، اما بقیه کد بسیار
660
00:25:01,529 –> 00:25:02,759
ساده است نگاه کنید به چه چیزی من اینجا این کار را انجام
661
00:25:02,759 –> 00:25:06,779
میدهم، میگویم اگر الگوی شروع شود،
662
00:25:06,779 –> 00:25:08,879
رشته کاما شروع شود، اگر قبلاً وجود دارد
663
00:25:08,879 –> 00:25:10,289
، به این نگاه کنید که من ابتدا چه کار میکنم، این
664
00:25:10,289 –> 00:25:11,490
خیلی مهم است اجازه دهید از رنگ دیگری استفاده
665
00:25:11,490 –> 00:25:14,159
کنم، اجازه دهید ابتدا از رنگ قرمز استفاده کنم با
666
00:25:14,159 –> 00:25:15,899
توجه به شاخص شروع الگو و
667
00:25:15,899 –> 00:25:18,240
فهرست شروع رشته من در
668
00:25:18,240 –> 00:25:21,509
اینجا یک زوج ایجاد می کنم زیرا با استفاده از این تاپل یک زوج ایجاد می
669
00:25:21,509 –> 00:25:23,129
کنم، می گویم این
670
00:25:23,129 –> 00:25:26,070
تاپل در DP من وجود دارد.
671
00:25:26,070 –> 00:25:28,710
672
00:25:28,710 –> 00:25:30,480
673
00:25:30,480 –> 00:25:32,820
من الگوی خود را دریافت کردم، تمام
674
00:25:32,820 –> 00:25:35,100
رشته ام را دریافت کردم دوتا گرفتم – فرض کنیم
675
00:25:35,100 –> 00:25:37,289
ممکنه بری بمیری، فرض کنیم ممکنه یه
676
00:25:37,289 –> 00:25:40,200
دیکشنری داشته باشی حالا چی میگه
677
00:25:40,200 –> 00:25:41,700
چی میگه اولین چیزی که من
678
00:25:41,700 –> 00:25:44,610
اینجا چک میکنم اینه که آیا قبلا
679
00:25:44,610 –> 00:25:47,639
مشکلی رو حل کردم که
680
00:25:47,639 –> 00:25:50,039
الگو رو انتخاب کردم از نمایه دوم رشته
681
00:25:50,039 –> 00:25:51,419
از نمایه دوم قبلاً
682
00:25:51,419 –> 00:25:53,519
آن را حل کرده ام اگر آن را حل کرده باشم
683
00:25:53,519 –> 00:25:55,950
نتیجه را دوباره در فرهنگ لغت خود ذخیره می کردم
684
00:25:55,950 –> 00:25:58,409
به یاد داشته باشید که DP یک فرهنگ لغت است من
685
00:25:58,409 –> 00:26:00,210
آن را در فرهنگ لغت خود ذخیره می کردم.
686
00:26:00,210 –> 00:26:01,769
من حتی قبل از
687
00:26:01,769 –> 00:26:03,749
رفتن به بازگشت بررسی میکنم که آیا
688
00:26:03,749 –> 00:26:06,509
قبلاً این مشکل را حل کردهام، بنابراین
689
00:26:06,509 –> 00:26:08,009
این نحو آن است درست
690
00:26:08,009 –> 00:26:09,749
چگونه کلیدی را بررسی میکنید چگونه
691
00:26:09,749 –> 00:26:11,909
وجود آن را در یک فرهنگ لغت بررسی میکنید
692
00:26:11,909 –> 00:26:14,340
این کار را چگونه انجام میدهید اگر قبلاً وجود داشته باشد. ارائه فقط برای
693
00:26:14,340 –> 00:26:17,639
بازگشت که دوباره این نحو
694
00:26:17,639 –> 00:26:19,350
به شما چه می گوید این نحو دوباره به شما خواهد گفت به
695
00:26:19,350 –> 00:26:21,629
یاد داشته باشید که من در حال
696
00:26:21,629 –> 00:26:23,460
ساختن یک تاپل با استفاده از شروع الگو
697
00:26:23,460 –> 00:26:25,889
و شروع رشته هستم زیرا کلید من به خاطر داشته باشید
698
00:26:25,889 –> 00:26:28,409
در فرهنگ لغت من کلید من شروع الگوی من است
699
00:26:28,409 –> 00:26:31,649
و s tring start متأسفم الگوی من
700
00:26:31,649 –> 00:26:35,070
شروع و رشته شروع مقدار من
701
00:26:35,070 –> 00:26:36,960
راه حل آن زیرمشکل است یا درست
702
00:26:36,960 –> 00:26:37,499
یا غلط
703
00:26:37,499 –> 00:26:40,109
704
00:26:40,109 –> 00:26:40,659
705
00:26:40,659 –> 00:26:43,419
706
00:26:43,419 –> 00:26:44,859
707
00:26:44,859 –> 00:26:46,509
اگر نمیدانید اصول اولیه
708
00:26:46,509 –> 00:26:48,970
لیستها و غیره را بدانید،
709
00:26:48,970 –> 00:26:50,889
لطفاً بروید و از منبعی
710
00:26:50,889 –> 00:26:52,210
که در
711
00:26:52,210 –> 00:26:54,399
ابتدای بحث به آن اشاره کردم بخوانید، خیلی خوب است اگر این کار
712
00:26:54,399 –> 00:26:56,200
وجود دارد، من تمام شدهام، حتی یک
713
00:26:56,200 –> 00:26:58,629
بازگشت را به اندازه کافی درست نمیخوانم.
714
00:26:58,629 –> 00:27:00,340
اگر من قبلاً این سؤال را حل کرده باشم اگر قبلاً
715
00:27:00,340 –> 00:27:02,559
همین مشکل را قبلاً در
716
00:27:02,559 –> 00:27:04,419
زیرمشکلات همپوشانی خود حل کرده
717
00:27:04,419 –> 00:27:06,460
باشم به این نگاه کنید اگر قبلاً این مشکل را حل کرده ام و اگر
718
00:27:06,460 –> 00:27:08,049
این راه حل را در یک
719
00:27:08,049 –> 00:27:08,529
فرهنگ لغت ذخیره کرده
720
00:27:08,529 –> 00:27:11,440
ام دیگر مجبور نیستم آن را حل کنید و
721
00:27:11,440 –> 00:27:13,210
این زیبایی DP است درست است
722
00:27:13,210 –> 00:27:15,940
که این یک ایده کامل از DP است وگرنه اگر
723
00:27:15,940 –> 00:27:18,879
اینطور نیست من چه کار می کنم من
724
00:27:18,879 –> 00:27:21,729
فقط می گویم الگو و رشته ام که اکنون
725
00:27:21,729 –> 00:27:24,580
می خواهم مطابقت داشته باشد الگوی من از
726
00:27:24,580 –> 00:27:27,039
ابتدا الگو است. فهرست من string sta rt
727
00:27:27,039 –> 00:27:29,679
دوباره کل این کد را ایندکس کنید اگر
728
00:27:29,679 –> 00:27:31,929
متوجه شدید این کل کد بسیار شبیه است
729
00:27:31,929 –> 00:27:33,249
همه این مواردی که اینجا نوشته ایم به
730
00:27:33,249 –> 00:27:35,259
این نگاه کنید همه این مواردی که
731
00:27:35,259 –> 00:27:37,299
اینجا نوشته ایم دقیقاً
732
00:27:37,299 –> 00:27:39,909
مشابه این قطعه کد هستند در واقع من
733
00:27:39,909 –> 00:27:42,489
فقط این کد را تغییر داده ام به این نگاه کنید
734
00:27:42,489 –> 00:27:44,080
همه این موارد را نقل قول کنید که
735
00:27:44,080 –> 00:27:46,450
دیروز مورد بحث قرار گرفت، موارد مشابهی را در
736
00:27:46,450 –> 00:27:49,539
اینجا داریم اگر P برابر با s باشد اگر P برابر است برای
737
00:27:49,539 –> 00:27:51,700
شروع اگر P برابر با خالی یا s برابر است
738
00:27:51,700 –> 00:27:54,879
با خالی اگر p 0 برابر با s 0 یا p 0
739
00:27:54,879 –> 00:27:57,669
برابر با ستاره اگر p 0 گیر کرده باشد اگر p
740
00:27:57,669 –> 00:28:00,340
0 برابر با s 0 نباشد، همه
741
00:28:00,340 –> 00:28:02,679
این موارد دیروز بحث کردیم، بنابراین
742
00:28:02,679 –> 00:28:04,389
قسمت بازگشتی کم و بیش ثابت می
743
00:28:04,389 –> 00:28:06,190
ماند این موارد مرزی هستند
744
00:28:06,190 –> 00:28:08,080
این 3 به علاوه این چهار
745
00:28:08,080 –> 00:28:10,269
مورد مرزی و دو مورد بازگشتی هستند. مواردی
746
00:28:10,269 –> 00:28:12,700
که دیروز شاهد آن بودیم در اینجا
747
00:28:12,700 –> 00:28:14,320
نیز تنها تفاوت بین
748
00:28:14,320 –> 00:28:16,210
راه حل دیروز و راه
749
00:28:16,210 –> 00:28:18,489
حل برنامه نویسی پویا این است که هر زمان
750
00:28:18,489 –> 00:28:20,649
نتیجه ای را محاسبه می کنیم باید آن را در
751
00:28:20,649 –> 00:28:23,289
فرهنگ لغت خود ذخیره کنیم و قبل از فراخوانی
752
00:28:23,289 –> 00:28:25,749
Recursion ابتدا می خواهم i را بررسی کنم. در
753
00:28:25,749 –> 00:28:27,849
فرهنگ لغت من اگر قبلاً مشکل را حل کرده باشم
754
00:28:27,849 –> 00:28:29,950
یا نه در غیر این صورت همه
755
00:28:29,950 –> 00:28:32,139
چیز یکسان است و به یاد داشته باشید بر خلاف
756
00:28:32,139 –> 00:28:33,759
دیروز به این کد نگاه کنید به این
757
00:28:33,759 –> 00:28:35,169
قطعه کد نگاه کنید تنها تفاوت اکنون
758
00:28:35,169 –> 00:28:37,749
این است که به این قطعه کد نگاه کنید و این
759
00:28:37,749 –> 00:28:39,820
قطعه کد باید
760
00:28:39,820 –> 00:28:41,409
اگر P برابر با 2 به تازگی درست برگردانده شده است، چه کار کردیم،
761
00:28:41,409 –> 00:28:42,999
ما آن را در هیچ کجای
762
00:28:42,999 –> 00:28:44,950
راه حل دیروز در یک
763
00:28:44,950 –> 00:28:47,109
راه حل مبتنی بر بازگشت ساده در راه حل مبتنی بر DP ذخیره نمی کنیم،
764
00:28:47,109 –> 00:28:48,879
هر زمان که
765
00:28:48,879 –> 00:28:51,279
راه حلی پیدا کردید، باید آن را در فرهنگ لغت خود ذخیره کنید،
766
00:28:51,279 –> 00:28:54,130
بنابراین قبل از بازگشت
767
00:28:54,130 –> 00:28:56,110
فکر کنید قبل از اینکه برگردید این مرحله
768
00:28:56,110 –> 00:28:59,200
اساساً
769
00:28:59,200 –> 00:29:01,770
نتیجه را در فرهنگ لغت ما ذخیره می کند که دقیقاً DP است
770
00:29:01,770 –> 00:29:04,240
به طور مشابه قبل از بازگشت شما
771
00:29:04,240 –> 00:29:05,860
باید آن را به علاوه هر زمان
772
00:29:05,860 –> 00:29:08,110
که راه حلی را محاسبه می کنید باید
773
00:29:08,110 –> 00:29:10,650
دوباره آن را در فرهنگ لغت ذخیره کنید در اینجا نیز که با
774
00:29:10,650 –> 00:29:13,660
شما تماس می گیرید. EES مطابق با DP است، یعنی
775
00:29:13,660 –> 00:29:15,430
شما این مشکل را حل کرده اید که
776
00:29:15,430 –> 00:29:16,660
هر راه حلی که باشد
777
00:29:16,660 –> 00:29:18,460
، ابتدا باید آن را ذخیره کنید، هر راه حلی است
778
00:29:18,460 –> 00:29:21,040
، ابتدا باید آن را ذخیره کنید. Hatver
779
00:29:21,040 –> 00:29:23,020
راه حلی است که ابتدا آن را ذخیره می کنید، بنابراین
780
00:29:23,020 –> 00:29:25,120
تنها تفاوت بین این راه حل
781
00:29:25,120 –> 00:29:27,310
بازگشتی مبتنی بر برنامه نویسی پویا
782
00:29:27,310 –> 00:29:29,830
یا راه حل بازگشتی مبتنی بر حفظ
783
00:29:29,830 –> 00:29:31,900
و راه حل بازگشتی ساده ای
784
00:29:31,900 –> 00:29:34,180
که دیروز دیدیم بسیار
785
00:29:34,180 –> 00:29:36,520
ساده است، تنها تفاوت در اینجا این است که
786
00:29:36,520 –> 00:29:38,500
ما از یک D استفاده می کنیم. یک دیکشنری
787
00:29:38,500 –> 00:29:41,500
برای ذخیره تمام مشکلات فرعی که
788
00:29:41,500 –> 00:29:43,870
به درستی حل کرده ایم و قبل از اینکه به حالت
789
00:29:43,870 –> 00:29:46,090
بازگشتی برویم ابتدا بررسی می کنیم که آیا
790
00:29:46,090 –> 00:29:48,070
مشکل فرعی حل شده است اگر حل شده
791
00:29:48,070 –> 00:29:50,770
باشد فقط آن را برمی گردانیم و قبل از اینکه
792
00:29:50,770 –> 00:29:53,170
چیزی را برگردانیم نتایج را در فرهنگ لغت خود ذخیره می کنیم
793
00:29:53,170 –> 00:29:56,140
و ما یک فرهنگ لغت را نیز
794
00:29:56,140 –> 00:29:59,380
بسیار ساده بگذرانید،
795
00:29:59,380 –> 00:30:01,330
اگر به این کد نگاه کنید، در واقع
796
00:30:01,330 –> 00:30:04,840
پنج دقیقه طول کشید تا این کد را به
797
00:30:04,840 –> 00:30:07,270
این کد تغییر دهم، اگر مراقب باشید، می توانید این کار
798
00:30:07,270 –> 00:30:09,010
را در کمتر از پنج
799
00:30:09,010 –> 00:30:10,630
دقیقه انجام دهید.
800
00:30:10,630 –> 00:30:12,820
امروزه در مصاحبهها شرکت میکنم، بنابراین من خیلی
801
00:30:12,820 –> 00:30:15,010
راحت نمیتوانم این کد را بنویسم، اما
802
00:30:15,010 –> 00:30:16,450
اگر
803
00:30:16,450 –> 00:30:18,340
مفهوم DP را میدانید، اگر متوجه شده باشید، نباید آن را دوست داشته باشید.
804
00:30:18,340 –> 00:30:20,470
مشکل فرعی همپوشانی این
805
00:30:20,470 –> 00:30:22,450
نباید بیش از ده دقیقه طول بکشد،
806
00:30:22,450 –> 00:30:24,490
حتی اگر مبتدی هستید،
807
00:30:24,490 –> 00:30:26,050
نباید بیش از ده دقیقه طول بکشد،
808
00:30:26,050 –> 00:30:27,510
زیرا منطق ساده است، درست است،
809
00:30:27,510 –> 00:30:30,430
ابتدا باید همیشه بررسی کنید که آیا
810
00:30:30,430 –> 00:30:32,590
قبلا آن را حل کرده اید یا خیر و سپس هر زمان که
811
00:30:32,590 –> 00:30:34,540
مشکلی را حل کردید فقط آن را در یک
812
00:30:34,540 –> 00:30:37,540
فرهنگ لغت ذخیره کنید که همینطور است، بسیار ساده است،
813
00:30:37,540 –> 00:30:39,850
بنابراین شما را مانند جنگ اول می برد،
814
00:30:39,850 –> 00:30:42,160
می توانید راه حل بازگشتی را بنویسید.
815
00:30:42,160 –> 00:30:45,030
816
00:30:45,030 –> 00:30:47,950
817
00:30:47,950 –> 00:30:50,350
n
818
00:30:50,350 –> 00:30:53,860
پیچیدگی زمانی نشان می دهد که دارای یک
819
00:30:53,860 –> 00:30:56,110
زیرمسئله همپوشانی است زیرا مشکلات فرعی همپوشانی دارد
820
00:30:56,110 –> 00:30:57,580
که می گویید من از
821
00:30:57,580 –> 00:30:59,740
برنامه نویسی پویا استفاده می کنم و از
822
00:30:59,740 –> 00:31:01,330
برنامه نویسی پویا مبتنی بر بازگشت استفاده می کنم
823
00:31:01,330 –> 00:31:02,770
و بیایید آن را آزمایش کنیم
824
00:31:02,770 –> 00:31:04,840
اگر تست کردید دوباره با DP مطابقت دارد.
825
00:31:04,840 –> 00:31:06,910
به یاد داشته باشید که باید یک دیکشنری را پاس کنم
826
00:31:06,910 –> 00:31:07,510
827
00:31:07,510 –> 00:31:09,250
درست به این نگاه کنید که همه
828
00:31:09,250 –> 00:31:11,890
پارامترها چیست؟
829
00:31:11,890 –> 00:31:14,170
830
00:31:14,170 –> 00:31:17,290
831
00:31:17,290 –> 00:31:19,750
درست است من می خواهم کل این الگو
832
00:31:19,750 –> 00:31:21,850
با کل این رشته مطابقت داشته باشد به
833
00:31:21,850 –> 00:31:24,550
همین دلیل است که شاخص شروع الگوی من 0
834
00:31:24,550 –> 00:31:26,650
است شاخص شروع رشته من نیز 0 است و
835
00:31:26,650 –> 00:31:29,730
در ابتدا فرهنگ لغت من خالی است
836
00:31:29,730 –> 00:31:32,350
در ابتدا فرهنگ لغت من خالی است به
837
00:31:32,350 –> 00:31:34,240
این ترتیب این تابع را صدا می زنید که بسیار
838
00:31:34,240 –> 00:31:35,920
مهم است. درست است دوباره در
839
00:31:35,920 –> 00:31:39,070
همه موارد کار می کند خوب دوباره همان موارد را چاپ می کنم
840
00:31:39,070 –> 00:31:41,410
درست مانند موارد دیروز همه
841
00:31:41,410 –> 00:31:42,940
موارد مهم اینجاست که باید
842
00:31:42,940 –> 00:31:45,700
این را پاس کنید زیرا آنچه اینجا اتفاق می افتد
843
00:31:45,700 –> 00:31:47,890
تمام این رشته من می خواهم آن را
844
00:31:47,890 –> 00:31:50,290
از شاخص 0 این مطابقت دهم اوه این الگوی کامل
845
00:31:50,290 –> 00:31:52,840
میخواهم از نمایه 0 این
846
00:31:52,840 –> 00:31:54,790
رشته کامل را مطابقت دهم، میخواهم از شاخص 0 مطابقت
847
00:31:54,790 –> 00:31:56,740
دهم و دارم از فرهنگ لغت رد میکنم که
848
00:31:56,740 –> 00:31:58,690
در ابتدا
849
00:31:58,690 –> 00:32:00,970
خالی است، دوست باید خالی باشد، بدیهی است که دوباره
850
00:32:00,970 –> 00:32:03,100
چند مورد دارم. برای آزمایش اینکه آیا
851
00:32:03,100 –> 00:32:04,420
همه چیز کار می کند، به خوبی کار
852
00:32:04,420 –> 00:32:08,860
می کند، اکنون جالب
853
00:32:08,860 –> 00:32:10,360
است که مشکل برنامه نویسی پویا که ما
854
00:32:10,360 –> 00:32:11,560
حل کردیم اغلب به عنوان یک
855
00:32:11,560 –> 00:32:13,330
856
00:32:13,330 –> 00:32:14,830
مسئله برنامه نویسی پویا دو بعدی نامیده می شود، چرا به آن tw می گویند.
857
00:32:14,830 –> 00:32:18,370
برنامه نویسی پویا o بعدی چون ما نگاهی
858
00:32:18,370 –> 00:32:20,260
به این نگاه انداخته ایم که
859
00:32:20,260 –> 00:32:22,930
چگونه مشکل ما چگونه
860
00:32:22,930 –> 00:32:25,720
کار می کند مشکل ما چگونه درست کار می کند الگو و
861
00:32:25,720 –> 00:32:28,000
رشته شما در اینجا ثابت شده است دو
862
00:32:28,000 –> 00:32:29,710
متغیر وجود دارد که به عنوان بخشی از
863
00:32:29,710 –> 00:32:31,660
بازگشت شما در حال تغییر هستند. شروع الگو
864
00:32:31,660 –> 00:32:33,670
که در حال تغییر است، شروع رشته
865
00:32:33,670 –> 00:32:36,130
ای است که در بازگشت شما تغییر می
866
00:32:36,130 –> 00:32:37,930
کند، دو متغیر وجود دارد، اگر
867
00:32:37,930 –> 00:32:39,640
حتی اگر شما به یاد بیاورید، حتی اگر فقط
868
00:32:39,640 –> 00:32:42,610
این را ببینید، حتی اگر این را ببینید،
869
00:32:42,610 –> 00:32:45,280
دو متغیر در نگاه تماس بازگشتی وجود دارد.
870
00:32:45,280 –> 00:32:47,590
در این در فراخوانی بازگشتی این دو
871
00:32:47,590 –> 00:32:50,410
مقدار این مقدار 1 افزایش یافت این
872
00:32:50,410 –> 00:32:52,840
مقدار ثابت ماند در این مورد این
873
00:32:52,840 –> 00:32:54,400
مقدار ثابت ماند این مقدار
874
00:32:54,400 –> 00:32:56,320
افزایش یافت مقادیر پایانی مهم نیست
875
00:32:56,320 –> 00:32:58,630
در واقع مقادیر پایانی در واقع
876
00:32:58,630 –> 00:33:00,370
مهم نیستند من فقط این را ترسیم کردم نمودار با
877
00:33:00,370 –> 00:33:02,260
مقادیر پایانی به طوری که درک آن برای شما آسان تر خواهد بود
878
00:33:02,260 –> 00:33:04,450
که مقادیر پایانی همیشه
879
00:33:04,450 –> 00:33:08,080
n درست هستند، اما اگر متوجه شدید دو
880
00:33:08,080 –> 00:33:10,090
متغیر در اینجا وجود دارد، دو متغیر وجود دارد
881
00:33:10,090 –> 00:33:12,300
که در تکرار شما در حال تغییر هستند.
882
00:33:12,300 –> 00:33:14,530
اگر به
883
00:33:14,530 –> 00:33:17,410
فیبوناچی استاندارد خود نگاه کنید یا به فاکتوریل نگاه کنید،
884
00:33:17,410 –> 00:33:19,150
بیایید بگوییم ساده تر
885
00:33:19,150 –> 00:33:21,270
چگونه تابع فاکتوریل شما درست کار می کند
886
00:33:21,270 –> 00:33:24,120
n فاکتوریل شما درست است، من در
887
00:33:24,120 –> 00:33:28,670
اینجا شبه کد را می نویسم اگر n برابر با 1 باشد.
888
00:33:28,670 –> 00:33:30,410
1
889
00:33:30,410 –> 00:33:37,280
بنویسید بازگشت 1 در غیر این صورت، n را به
890
00:33:37,280 –> 00:33:40,470
فاکتوریل n منهای 1 برگردانید،
891
00:33:40,470 –> 00:33:42,090
این همان کد شبه است که در سمت راست است، دوباره
892
00:33:42,090 –> 00:33:44,430
به یاد داشته باشید که در این قطعه کد شما
893
00:33:44,430 –> 00:33:47,160
فقط 1 دارید، فقط یک مقدار دارید که در
894
00:33:47,160 –> 00:33:49,470
حال تغییر است، این مقدار از n
895
00:33:49,470 –> 00:33:52,620
به n منهای 1 تغییر می کند، بنابراین اغلب به آن می گویند. به عنوان
896
00:33:52,620 –> 00:33:55,200
یک DP یک بعدی زیرا
897
00:33:55,200 –> 00:33:56,940
تنها یک متغیر وجود دارد که با
898
00:33:56,940 –> 00:33:58,860
رفتن از یک مسئله بزرگتر به یک
899
00:33:58,860 –> 00:34:01,140
مسئله کوچکتر تغییر می کند،
900
00:34:01,140 –> 00:34:03,420
برنامه نویسی پویا دو بعدی اساساً در
901
00:34:03,420 –> 00:34:06,180
مورد ما طول الگوی نوشتن
902
00:34:06,180 –> 00:34:09,900
الگوی شروع الگوی شروع و
903
00:34:09,900 –> 00:34:13,440
شروع رشته و شروع رشته هر
904
00:34:13,440 –> 00:34:15,120
دو دو متغیر وجود دارد و همانطور که من به
905
00:34:15,120 –> 00:34:17,550
حل مسائل فرعی ادامه
906
00:34:17,550 –> 00:34:19,760
می دهم هر دو تغییر می کنند هر دو به درستی تغییر می کنند
907
00:34:19,760 –> 00:34:22,320
زیرا دو متغیر
908
00:34:22,320 –> 00:34:24,659
وجود دارد که تغییر به عنوان بخشی از بازگشت شما،
909
00:34:24,659 –> 00:34:26,580
این چیزی است که به عنوان یک DP دو بعدی نامیده می شود،
910
00:34:26,580 –> 00:34:28,620
این همان
911
00:34:28,620 –> 00:34:31,320
چیزی است که به عنوان یک DP یک بعدی نامیده می شود.
912
00:34:31,320 –> 00:34:33,510
913
00:34:33,510 –> 00:34:35,010
914
00:34:35,010 –> 00:34:37,320
915
00:34:37,320 –> 00:34:40,409
مشکل مربوط به reg X دوباره
916
00:34:40,409 –> 00:34:42,270
به یاد داشته باشید که مانند محور یک
917
00:34:42,270 –> 00:34:44,610
ابزار بسیار مهم برای
918
00:34:44,610 –> 00:34:47,580
یادگیری ماشین است یا برای علائم داده یا حتی
919
00:34:47,580 –> 00:34:50,130
برای هر پردازش متنی برای هر
920
00:34:50,130 –> 00:34:52,580
پردازش متنی reg X مهم است و
921
00:34:52,580 –> 00:34:56,219
در داخل reg XS reg X به
922
00:34:56,219 –> 00:34:59,400
طور گسترده از برنامه نویسی پویا استفاده می کند. درست است، من
923
00:34:59,400 –> 00:35:01,290
میخواهم این مفهوم را از
924
00:35:01,290 –> 00:35:03,120
منظر دنیای واقعیتری معرفی کنم، بهجای اینکه
925
00:35:03,120 –> 00:35:06,390
فقط به شما یک نوع مشکل بدهم
926
00:35:06,390 –> 00:35:08,190
که با واقعیت همخوانی ندارد،
927
00:35:08,190 –> 00:35:11,910
اگر برنامهنویسی پویا
928
00:35:11,910 –> 00:35:13,620
باشد، اگر برای
929
00:35:13,620 –> 00:35:15,690
نقشهای مهندس توسعه نرمافزار در
930
00:35:15,690 –> 00:35:18,180
محصول مصاحبه میکنید. اگر برای نقشهای یادگیری ماشین مصاحبه میکنید، DPS یا
931
00:35:18,180 –> 00:35:20,760
برنامهنویسی پویا بسیار مهم است.
932
00:35:20,760 –> 00:35:21,990
933
00:35:21,990 –> 00:35:24,600
934
00:35:24,600 –> 00:35:26,010
اما اگر تجربه قبلی
935
00:35:26,010 –> 00:35:27,540
مهندسی نرمافزار داشته باشید یا از شرکتهای مبتنی بر
936
00:35:27,540 –> 00:35:30,120
محصولات برتر در زمینه علوم کامپیوتر آمدهاید، از
937
00:35:30,120 –> 00:35:31,650
شما انتظار دارند که
938
00:35:31,650 –> 00:35:34,140
دوباره برنامهنویسی پویا بنویسید، فقط
939
00:35:34,140 –> 00:35:34,860
بر اساس محصول برتر
940
00:35:34,860 –> 00:35:37,080
خوب است، حتی برخی شرکتها
941
00:35:37,080 –> 00:35:39,210
هستند که استارتآپهای بسیار خوبی دارند.
942
00:35:39,210 –> 00:35:40,530
گفتن باشه اجازه دهید برنامه نویسی پویا را هر بار انجام ندهیم،
943
00:35:40,530 –> 00:35:42,870
خوب به نظر می رسد،
944
00:35:42,870 –> 00:35:45,450
اما اگر می خواهید دوباره یاد بگیرید، اینجا یک
945
00:35:45,450 –> 00:35:47,460
وبلاگ بسیار زیبا از گیک ها وجود دارد، ما در
946
00:35:47,460 –> 00:35:49,320
مورد نحوه فکر کردن به حل
947
00:35:49,320 –> 00:35:51,930
مسائل برنامه نویسی پویا و 50
948
00:35:51,930 –> 00:35:54,690
مشکل تمرینی وجود دارد. به
949
00:35:54,690 –> 00:35:56,940
اینجا بروید 50 مشکل در این وجود دارد من
950
00:35:56,940 –> 00:36:00,300
واقعاً این لیست را دوست دارم بسیار خوب بنابراین ما همیشه می توانیم
951
00:36:00,300 –> 00:36:02,010
به عقب برگردیم خوب یک لیست وجود دارد و
952
00:36:02,010 –> 00:36:03,990
برای هر یک از آنها راه
953
00:36:03,990 –> 00:36:06,030
حلی در وبلاگ دیگری ارائه شده است با
954
00:36:06,030 –> 00:36:08,220
توضیحات خوب دوباره کد در C ++ وجود دارد.
955
00:36:08,220 –> 00:36:10,590
جاوا اما همیشه میتوانید برای آن در گوگل جستجو
956
00:36:10,590 –> 00:36:11,970
کنید، میتوانید بگویید طولانیترین کد متداول بعدی
957
00:36:11,970 –> 00:36:14,880
پایتون، آن را درست دریافت میکنید، بنابراین
958
00:36:14,880 –> 00:36:16,800
کسانی از شما که میخواهید
959
00:36:16,800 –> 00:36:18,770
برنامهنویسی پویاتری تمرین کنید، این است استراتژی
960
00:36:18,770 –> 00:36:22,440
اما به یاد داشته باشید که برنامه نویسی پویا
961
00:36:22,440 –> 00:36:25,860
همه چیز در مورد بازگشت است، اگر می توانید اگر
962
00:36:25,860 –> 00:36:27,960
می توانید یک مشکل داده شده را به بازگشت تبدیل کنید
963
00:36:27,960 –> 00:36:30,870
و اگر بتوانید مشکلات فرعی همپوشانی را تشخیص دهید
964
00:36:30,870 –> 00:36:34,290
، می توانید
965
00:36:34,290 –> 00:36:36,480
مسائل برنامه نویسی پویا را به راحتی حل
966
00:36:36,480 –> 00:36:39,450
کنید، این همه چیز است که دوباره حتی
967
00:36:39,450 –> 00:36:41,100
در این تشخیص است. همپوشانی مشکلات
968
00:36:41,100 –> 00:36:44,010
فرعی آسان است شکستن مشکل
969
00:36:44,010 –> 00:36:45,750
به بازگشت اغلب بیشترین
970
00:36:45,750 –> 00:36:48,810
زمان را میگیرد، به همین دلیل است که در واقع حتی در
971
00:36:48,810 –> 00:36:51,000
بسیاری از مصاحبهها برای افراد غیر ماشینی برای
972
00:36:51,000 –> 00:36:52,680
افراد غیر CSC نیز مردم
973
00:36:52,680 –> 00:36:54,930
برنامههای بازگشتی را به خصوص در
974
00:36:54,930 –> 00:36:56,130
شرکتهای مبتنی بر محصول ارائه میدهند تا ببینند چگونه
975
00:36:56,130 –> 00:36:58,100
از یک بازگشت فکر میکنند. دیدگاه
976
00:36:58,100 –> 00:37:01,560
بسیار خوب است، پس با این موضوع،
977
00:37:01,560 –> 00:37:04,920
بیایید برویم – بیایید به سراغ ساختارهای داخلی داخلی پایتون برویم،
978
00:37:04,920 –> 00:37:08,070
درست است، من چند
979
00:37:08,070 –> 00:37:09,450
فرضی را مطرح میکنم حالا بیایید آن را
980
00:37:09,450 –> 00:37:15,050
تعاملی درست کنیم، بنابراین هر سؤالی دارید، بنابراین
981
00:37:19,010 –> 00:37:23,000
آیا میتوانیم دوباره با استفاده از DP مشکل فاکتوریل را حل کنیم،
982
00:37:23,000 –> 00:37:25,260
شما فقط میتوانید آن را حل کنید.
983
00:37:25,260 –> 00:37:27,300
اگر آن را با استفاده از تکرار AI درست حل کنید
984
00:37:27,300 –> 00:37:28,800
و آن را از نظر
985
00:37:28,800 –> 00:37:35,070
محاسباتی بسیار کارآمد کنید، از DP درست است خوب به نظر می رسد
986
00:37:35,070 –> 00:37:36,750
کجا می توانم یک نسخه از منابعی را
987
00:37:36,750 –> 00:37:38,760
که در اینجا بحث شده است پیدا کنم، مثل همیشه
988
00:37:38,760 –> 00:37:40,410
آن را در قسمت توضیحات قرار می دهم،
989
00:37:40,410 –> 00:37:42,390
می توانید آن را ببینید، کل این
990
00:37:42,390 –> 00:37:45,000
دفترچه ipython و یک نسخه PDF آن را در
991
00:37:45,000 –> 00:37:46,530
پایان این بحث قرار خواهم داد. پس
992
00:37:46,530 –> 00:37:48,269
طبق معمول نگران نباشید،
993
00:37:48,269 –> 00:37:50,849
خب، بعداً قسمت سرگرمکننده من میآید، بنابراین
994
00:37:50,849 –> 00:37:52,889
پایتونها دوباره ساختارهای داده داخلی را
995
00:37:52,889 –> 00:37:54,359
جدا از این چهار رشته نیز وجود دارد،
996
00:37:54,359 –> 00:37:55,979
اما ما قبلاً در مورد
997
00:37:55,979 –> 00:37:58,499
رشته در جلسات زنده قبلی بحث کردهایم، بنابراین
998
00:37:58,499 –> 00:37:59,909
فرض من در اینجا این است که شما
999
00:37:59,909 –> 00:38:02,099
پایهای دارید. با درک این
1000
00:38:02,099 –> 00:38:04,439
ساختارهای داده، اصول اولیه آنها را تکرار نمیکنم،
1001
00:38:04,439 –> 00:38:06,929
زیرا در پشت همه این
1002
00:38:06,929 –> 00:38:09,149
جلسات زنده، فرض بر این است که شما
1003
00:38:09,149 –> 00:38:12,419
در حال حاضر اصول اولیه را میدانید،
1004
00:38:12,419 –> 00:38:14,309
سؤال عملی بزرگی که اغلب
1005
00:38:14,309 –> 00:38:16,379
در اینجا با آن مواجه میشوید این است که از کدام ساختار داده
1006
00:38:16,379 –> 00:38:18,629
به خوبی استفاده کنید. چند
1007
00:38:18,629 –> 00:38:20,819
سوال جالب می پرسم و دوست دارم
1008
00:38:20,819 –> 00:38:23,789
نظرات شما را بشنوم. خوب دوباره
1009
00:38:23,789 –> 00:38:26,189
خلاصه سریع بیایید فقط یک جمع بندی سریع برای کسانی از
1010
00:38:26,189 –> 00:38:27,749
شما که ممکن است برخی از اصول اولیه را فراموش کرده باشند
1011
00:38:27,749 –> 00:38:31,259
دوباره یک لیست انجام دهیم. به این صورت است که یک لیست یک
1012
00:38:31,259 –> 00:38:34,379
چیز مرتب است این ترتیب مهم است
1013
00:38:34,379 –> 00:38:35,879
این ترتیب همیشه در یک لیست حفظ
1014
00:38:35,879 –> 00:38:36,299
1015
00:38:36,299 –> 00:38:38,699
می شود و قابل نمایه سازی است که به این معنی است که این در
1016
00:38:38,699 –> 00:38:41,819
شاخص 0 است این در شاخص 1 است در
1017
00:38:41,819 –> 00:38:44,279
شاخص 2 است و غیره.
1018
00:38:44,279 –> 00:38:45,869
وحشتناک است ما در جلسات زنده قبلی بحث کرده ایم که
1019
00:38:45,869 –> 00:38:47,879
در جلسات زنده قبلی
1020
00:38:47,879 –> 00:38:50,459
هر چیزی بنویسید و من دوباره وحشتناک است
1021
00:38:50,459 –> 00:38:51,899
که در جلسات زنده قبلی در مورد آن صحبت
1022
00:38:51,899 –> 00:38:54,029
کردم و
1023
00:38:54,029 –> 00:38:55,979
ساختار داده وحشتناک چیزی است که
1024
00:38:55,979 –> 00:38:59,519
می توانم هر بار یک مورد را انتخاب کنم درست
1025
00:38:59,519 –> 00:39:00,989
است اگر می خواهید این کار را
1026
00:39:00,989 –> 00:39:06,719
برای I در لیست 1 انجام دهید بسیار مفید است، بنابراین وقتی
1027
00:39:06,719 –> 00:39:09,689
می خواهید این کار را انجام دهید لیست های شما
1028
00:39:09,689 –> 00:39:11,159
باید ماندگاری بالایی داشته باشند در غیر این صورت کار نمی
1029
00:39:11,159 –> 00:39:14,099
کنند بنابراین لیست ها به طور کلی مفهوم ساده
1030
00:39:14,099 –> 00:39:16,589
در اینجا آنها هستند.
1031
00:39:16,589 –> 00:39:20,209
یک توالی مرتب شده از اشیاء یا
1032
00:39:20,209 –> 00:39:22,949
اعداد یا هر چیز دیگری را به شما ارائه می دهیم که باز هم یک
1033
00:39:22,949 –> 00:39:24,929
نکته ظریف وجود دارد که لیست ها می توانند
1034
00:39:24,929 –> 00:39:27,089
اشیاء را روی انواع داده های مختلف نگه دارند، اما
1035
00:39:27,089 –> 00:39:29,549
اغلب اوقات ما فقط از آن برای نگهداری فقط
1036
00:39:29,549 –> 00:39:33,089
یک نوع داده استفاده می کنیم، اغلب اوقات خوب لیست بعدی
1037
00:39:33,089 –> 00:39:34,949
بسیار مفید است.
1038
00:39:34,949 –> 00:39:37,829
دیکشنری دیکشنری شما باید این را داشته باشید
1039
00:39:37,829 –> 00:39:39,809
این کلید است این ارزش این
1040
00:39:39,809 –> 00:39:41,939
کلید این ارزش است که
1041
00:39:41,939 –> 00:39:44,429
قدرتمندترین چیز در مورد دیکشنری ها است که
1042
00:39:44,429 –> 00:39:47,279
اگر جک بدهید کلید داده می شود اما به عنوان مثال
1043
00:39:47,279 –> 00:39:49,859
تصور کنید این دیکشنری به صورت D باشد پس اگر من
1044
00:39:49,859 –> 00:39:53,909
می گویم B Jack اگر فقط بگویم D Jack این
1045
00:39:53,909 –> 00:39:56,819
4098 را در یک مرتبه برمی گرداند،
1046
00:39:56,819 –> 00:40:01,019
بنابراین با استفاده از مقادیر کلیدی می توانید چنین
1047
00:40:01,019 –> 00:40:01,780
دیکشنری را به
1048
00:40:01,780 –> 00:40:03,310
ترتیب یک بار مصرف کنید، همانطور که به شما گفتم،
1049
00:40:03,310 –> 00:40:06,100
دیکشنری ها پرکاربردترین
1050
00:40:06,100 –> 00:40:10,450
ساختارهای داده در صنعت هستند. وجود
1051
00:40:10,450 –> 00:40:13,030
دارد یعنی فکر می کنم بیش از 90 درصد از
1052
00:40:13,030 –> 00:40:15,090
مواقعی که دیده ام از دیجیتال استفاده می شود،
1053
00:40:15,090 –> 00:40:17,650
خوب این در تجربه حرفه ای خودم
1054
00:40:17,650 –> 00:40:20,050
است، خوب است، بنابراین فرهنگ لغت
1055
00:40:20,050 –> 00:40:22,360
اساساً جفت های ارزش کلیدی است این
1056
00:40:22,360 –> 00:40:23,860
کلید این است که ارزش این کلید
1057
00:40:23,860 –> 00:40:25,360
این است. فرهنگ لغت ارزش چیزی نیست
1058
00:40:25,360 –> 00:40:27,940
جز یک جدول هش دوباره در آنجا به بیل می گویم
1059
00:40:27,940 –> 00:40:31,120
من به شما گفتم چه مشکلی دارم قبلاً
1060
00:40:31,120 –> 00:40:33,790
آنها هرگز دوباره سفارش داده نشدند آنچه که
1061
00:40:33,790 –> 00:40:35,350
مرتب شده است اساساً به معنای ترتیب اساساً
1062
00:40:35,350 –> 00:40:38,080
به معنای ترتیبی است که شما
1063
00:40:38,080 –> 00:40:39,850
همان ترتیب را در فرهنگ لغت وارد می کنید.
1064
00:40:39,850 –> 00:40:43,390
تا نسخه 3.7 حفظ نشد، اما یکی از
1065
00:40:43,390 –> 00:40:47,320
بزرگترین تغییرات در پایتون 3.7 دوباره
1066
00:40:47,320 –> 00:40:50,230
این است
1067
00:40:50,230 –> 00:40:52,780
که اخیراً وقتی از کد استفاده میکردم متوجه شدم
1068
00:40:52,780 –> 00:40:55,000
که چه چیزی در پایتون 3.7 جدید است، یکی از
1069
00:40:55,000 –> 00:40:58,330
مهمترین چیزها این است که
1070
00:40:58,330 –> 00:41:03,730
فرهنگ لغت کجاست. یک فرهنگ لغت خوب است
1071
00:41:03,730 –> 00:41:05,890
به این نگاه کنید حفظ نظم درج به این
1072
00:41:05,890 –> 00:41:08,230
نگاه کنید این
1073
00:41:08,230 –> 00:41:10,030
یکی از مهم ترین تغییرات در
1074
00:41:10,030 –> 00:41:13,270
پایتون 3.7 است.
1075
00:41:13,270 –> 00:41:15,790
1076
00:41:15,790 –> 00:41:18,040
1077
00:41:18,040 –> 00:41:19,420
1078
00:41:19,420 –> 00:41:22,300
اگر از
1079
00:41:22,300 –> 00:41:26,650
نسخهای استفاده میکنید که قدیمیتر از 3.7 است،
1080
00:41:26,650 –> 00:41:29,800
در ترتیب درج درست است، بنابراین
1081
00:41:29,800 –> 00:41:31,480
ترتیبی که عناصر را در
1082
00:41:31,480 –> 00:41:33,490
فرهنگ لغت درج میکنید یکسان نیست که
1083
00:41:33,490 –> 00:41:35,700
بتوانید آن را استخراج کنید که درست تضمین نشده است،
1084
00:41:35,700 –> 00:41:40,030
اما از آنجایی که
1085
00:41:40,030 –> 00:41:42,880
فرهنگ لغت نسخه 3.7 است. همچنین ترتیب درج را
1086
00:41:42,880 –> 00:41:46,570
درست بعد مرتب کردید شما دوباره چند تایی دارید به
1087
00:41:46,570 –> 00:41:49,060
یاد داشته باشید که لیست ها در
1088
00:41:49,060 –> 00:41:52,090
فرهنگ لغت های مهاربند مربعی در مهاربندهای مجعد
1089
00:41:52,090 –> 00:41:54,010
با کلید و مقدار sepa نشان داده شده اند. رتبه بندی شده
1090
00:41:54,010 –> 00:41:58,150
با استفاده از یک ستون، اگر
1091
00:41:58,150 –> 00:41:59,980
می خواهید چیزی را سفارش دهید، اگر می خواهید هر چیزی را سفارش دهید، اگر می خواهید هر چیزی را سفارش دهید،
1092
00:41:59,980 –> 00:42:03,880
1093
00:42:03,880 –> 00:42:05,320
از آن برای استفاده از آن استفاده می کنید.
1094
00:42:05,320 –> 00:42:07,570
1095
00:42:07,570 –> 00:42:09,910
1096
00:42:09,910 –> 00:42:12,580
رشته ها مجدداً رشته
1097
00:42:12,580 –> 00:42:15,920
ها اشیای تغییرناپذیر هستند اگر می
1098
00:42:15,920 –> 00:42:18,290
خواهید گریه کنید از این بسیار عالی است اما
1099
00:42:18,290 –> 00:42:19,970
تغییر ناپذیری دوباره این یک
1100
00:42:19,970 –> 00:42:22,340
ویژگی بسیار مهم است غیرقابل
1101
00:42:22,340 –> 00:42:24,520
1102
00:42:24,520 –> 00:42:30,440
1103
00:42:30,440 –> 00:42:32,780
تغییر است. تن از
1104
00:42:32,780 –> 00:42:34,220
منابع در این زوج دوباره یک
1105
00:42:34,220 –> 00:42:35,870
مثال استاندارد از غیرقابل تغییر است برای
1106
00:42:35,870 –> 00:42:38,470
مثال به این دوتایی نگاه کنید این است
1107
00:42:38,470 –> 00:42:42,320
اگر می خواهید این تاپل را تغییر دهید 0 این
1108
00:42:42,320 –> 00:42:44,360
ورودی را به 4 تغییر نمی دهد به شما اجازه
1109
00:42:44,360 –> 00:42:47,060
نمی دهد این کار را خیلی ساده انجام دهید. تاپل های سمت راست تغییر ناپذیر هستند، به
1110
00:42:47,060 –> 00:42:49,070
این معنی که وقتی
1111
00:42:49,070 –> 00:42:52,250
این تاپل چهار عددی را ایجاد کنید، اگر سعی کنید
1112
00:42:52,250 –> 00:42:54,350
زوج 0 را اختصاص دهید، به این معنی است که
1113
00:42:54,350 –> 00:42:56,150
اگر آن را اختصاص دهید، اگر سعی کنید
1114
00:42:56,150 –> 00:42:58,100
مقدار 4 را به آن اختصاص دهید، یک خطایی ایجاد می کند
1115
00:42:58,100 –> 00:43:00,650
که به این معنی است. ns شما نمی توانید آن را طوری ویرایش کنید که
1116
00:43:00,650 –> 00:43:03,620
تغییر ناپذیر است، بی صدا تغییر ناپذیر به معنای
1117
00:43:03,620 –> 00:43:05,750
چیزی است که به درستی تغییر نمی کند، بنابراین
1118
00:43:05,750 –> 00:43:08,480
این یک چیز مهم است که مجموعه های درست را
1119
00:43:08,480 –> 00:43:11,150
تنظیم می کند، مانند این مجموعه ها درست مانند
1120
00:43:11,150 –> 00:43:13,840
مجموعه های ریاضی ما هستند، آنها نامرتب هستند،
1121
00:43:13,840 –> 00:43:16,460
خوب، من وحشتناک هستم، وجود ندارد
1122
00:43:16,460 –> 00:43:19,550
تکرار می شود، بنابراین اگر
1123
00:43:19,550 –> 00:43:21,950
1 1
1124
00:43:21,950 –> 00:43:23,900
2 3 را دوباره وارد کنید که معادل مجموعه 1 2 3 خواهد بود، مفهومی به نام
1125
00:43:23,900 –> 00:43:26,120
چند مجموعه وجود دارد که در آن چندین تکرار
1126
00:43:26,120 –> 00:43:27,980
از یک عنصر مجاز است، اما در
1127
00:43:27,980 –> 00:43:30,170
مجموعه استاندارد که مجاز نیست، آنها مجاز هستند.
1128
00:43:30,170 –> 00:43:32,390
unordered که به معنی ترتیبی است که
1129
00:43:32,390 –> 00:43:34,070
شما درج می کنید و ترتیبی که
1130
00:43:34,070 –> 00:43:36,170
آنها ترتیب را حفظ نمی کنند.
1131
00:43:36,170 –> 00:43:39,020
من وحشتناک هستم که تکراری وجود
1132
00:43:39,020 –> 00:43:40,250
1133
00:43:40,250 –> 00:43:42,890
1134
00:43:42,890 –> 00:43:44,510
1135
00:43:44,510 –> 00:43:47,660
ندارد. آنچه می گوید فقط یک جمع بندی سریع از
1136
00:43:47,660 –> 00:43:49,490
ویژگی های مهم بسیاری
1137
00:43:49,490 –> 00:43:50,960
از ویژگی های دیگر هستند که مهم هستند، اما
1138
00:43:50,960 –> 00:43:52,430
اینها کلیدی ترین موارد برای بحث ما هستند
1139
00:43:52,430 –> 00:43:56,330
، مهم ترین
1140
00:43:56,330 –> 00:43:58,490
درس در کل شما sing these
1141
00:43:58,490 –> 00:44:01,670
data structures ساختار داده ای است که
1142
00:44:01,670 –> 00:44:04,130
می خواهید از آن استفاده کنید، بر اساس این که چه
1143
00:44:04,130 –> 00:44:07,580
عملیاتی را می خواهید به درستی انجام دهید تصمیم می گیرد که
1144
00:44:07,580 –> 00:44:09,530
بستگی زیادی به عملیاتی که
1145
00:44:09,530 –> 00:44:11,750
می خواهید انجام دهید و اینکه با چه سرعتی می خواهید
1146
00:44:11,750 –> 00:44:13,310
این عملیات را انجام
1147
00:44:13,310 –> 00:44:14,960
دهید به عنوان مثال بیایید این مثال را در نظر بگیریم بستگی دارد. درست است که ما
1148
00:44:14,960 –> 00:44:17,630
فقط یک مثال برنامه نویسی پویا دیدیم درست با
1149
00:44:17,630 –> 00:44:20,510
توجه به یک
1150
00:44:20,510 –> 00:44:22,490
مشکل فرعی که ذخیره
1151
00:44:22,490 –> 00:44:24,440
کرده ام و قبلاً درست حل کرده ام چه کاری می خواهم انجام دهم به ما داده شد که
1152
00:44:24,440 –> 00:44:26,360
مشکلی را که قبلاً با استفاده از شروع الگو و شروع رشته حل کرده ام با استفاده از الگوی شروع حل کرده ام.
1153
00:44:26,360 –> 00:44:28,460
1154
00:44:28,460 –> 00:44:29,250
start
1155
00:44:29,250 –> 00:44:31,770
string star الگوی داده شده start و
1156
00:44:31,770 –> 00:44:34,620
string start اگر من قبلاً این مشکل را حل کرده باشم
1157
00:44:34,620 –> 00:44:36,510
می تواند درست باشد یا
1158
00:44:36,510 –> 00:44:38,910
غلط اگر قبلاً آن را حل کرده باشم
1159
00:44:38,910 –> 00:44:40,800
می خواهم بتوانم این
1160
00:44:40,800 –> 00:44:44,220
اطلاعات را خیلی سریع جستجو کنم که دوباره
1161
00:44:44,220 –> 00:44:45,750
ممکن است بگویید چرا آیا شما
1162
00:44:45,750 –> 00:44:47,700
از فرهنگ لغت در اینجا استفاده کردید چرا از ساختار داده دیگری استفاده نکردید،
1163
00:44:47,700 –> 00:44:49,350
من می توانستم از بسیاری از
1164
00:44:49,350 –> 00:44:51,360
ساختارهای داده دیگر نیز استفاده کنم، اما یک
1165
00:44:51,360 –> 00:44:53,780
فرهنگ لغت دارای این ویژگی خوب است که
1166
00:44:53,780 –> 00:44:58,830
با توجه به این الگوی چندگانه شروع
1167
00:44:58,830 –> 00:45:01,170
و شروع رشته من می
1168
00:45:01,170 –> 00:45:03,210
توانم به ترتیب یک بار پیدا کنم که آیا این مشکل را حل کرده ام یا نه
1169
00:45:03,210 –> 00:45:06,510
زیرا وظیفه من در اینجا
1170
00:45:06,510 –> 00:45:08,340
این است که می خواهم جستجو کنم اگر قبلاً این مشکل را حل کرده ام
1171
00:45:08,340 –> 00:45:10,800
هر زمان که مشکل جستجو
1172
00:45:10,800 –> 00:45:13,470
دارید و می خواهید سریعاً شما را جستجو کنید
1173
00:45:13,470 –> 00:45:17,040
دوباره درست از فرهنگ لغت استفاده کنید
1174
00:45:17,040 –> 00:45:18,480
، ساختار داده باید همیشه
1175
00:45:18,480 –> 00:45:21,090
بر اساس عملیاتی که
1176
00:45:21,090 –> 00:45:23,460
می خواهید انجام دهید و با چه سرعتی
1177
00:45:23,460 –> 00:45:25,440
می خواهید دوباره این عملیات
1178
00:45:25,440 –> 00:45:27,660
1179
00:45:27,660 –> 00:45:28,260
1180
00:45:28,260 –> 00:45:30,000
را انجام دهید، تصمیم گیری شود. چند
1181
00:45:30,000 –> 00:45:33,510
سوال پس بحث
1182
00:45:33,510 –> 00:45:35,070
بقیه بحث این است که
1183
00:45:35,070 –> 00:45:37,620
با توجه به یک موقعیت از کدام ساختار داده استفاده خواهید کرد و چرا من از
1184
00:45:37,620 –> 00:45:39,600
شما می خواهم.
1185
00:45:39,600 –> 00:45:44,880
1186
00:45:44,880 –> 00:45:46,910
1187
00:45:46,910 –> 00:45:51,330
اجازه دهید من به عقب برگردم خوب، بنابراین
1188
00:45:51,330 –> 00:45:53,460
سوال اینجا ساده است شما می
1189
00:45:53,460 –> 00:45:56,850
خواهید یک نقطه 3 بعدی را نشان دهید، می خواهید
1190
00:45:56,850 –> 00:45:59,940
یک نقطه 3 بعدی را نشان دهید از چه ساختار داده ای
1191
00:45:59,940 –> 00:46:03,330
بسیار ساده استفاده می کنید، درست است که می
1192
00:46:03,330 –> 00:46:06,480
خواهید یک نقطه سه بعدی را نشان دهید. درست است دوباره
1193
00:46:06,480 –> 00:46:09,590
در یادگیری ماشینی در جبر خطی
1194
00:46:09,590 –> 00:46:11,670
که n نقطه بعدی را نشان می دهد
1195
00:46:11,670 –> 00:46:14,220
بسیار رایج است که از چه ساختار داده داخلی
1196
00:46:14,220 –> 00:46:16,830
استفاده می کنید البته
1197
00:46:16,830 –> 00:46:18,720
موارد دیگری نیز وجود دارد که می توانید استفاده کنید اما
1198
00:46:18,720 –> 00:46:20,940
در بین این چهار مورد از
1199
00:46:20,940 –> 00:46:23,490
چه چیزی استفاده خواهید کرد ما لیست داریم.
1200
00:46:23,490 –> 00:46:27,090
ما دارای فرهنگ لغت دوگانه هستیم و
1201
00:46:27,090 –> 00:46:30,630
از بین این چهار ساختار داده تعیین کردهایم
1202
00:46:30,630 –> 00:46:32,520
که هسته یک بحث است که از کدام
1203
00:46:32,520 –> 00:46:34,590
ساختار داده برای نشان دادن
1204
00:46:34,590 –> 00:46:38,240
یک نقطه سه
1205
00:46:38,240 –> 00:46:41,370
بعدی استفاده میکنید.
1206
00:46:41,370 –> 00:46:42,840
1207
00:46:42,840 –> 00:46:47,550
اپل چرا
1208
00:46:47,550 –> 00:46:51,960
دوباره 3 تاپل اوکی را انجام داد من
1209
00:46:51,960 –> 00:46:54,030
تازه دارم با چیزهای ساده شروع میکنم خوب
1210
00:46:54,030 –> 00:46:57,210
زوج چون غیرقابل تغییر است، خوب
1211
00:46:57,210 –> 00:47:00,630
یکی میگوید لیست آره چرا
1212
00:47:00,630 –> 00:47:03,270
فهرست نکن چرا آرایه نکنم چرا آنچه را که
1213
00:47:03,270 –> 00:47:06,000
مانع انجام این کار درست میشود فهرست نکنم چرا باید من را انجام دهم
1214
00:47:06,000 –> 00:47:08,070
آن را با یک لیست دوباره ذخیره کنید
1215
00:47:08,070 –> 00:47:10,560
یک چیز که همه ما می دانیم در یک
1216
00:47:10,560 –> 00:47:12,330
نقطه سه بعدی است وقتی می
1217
00:47:12,330 –> 00:47:14,310
خواهم یک نقطه سه بعدی را دوباره
1218
00:47:14,310 –> 00:47:16,860
نشان دهم این یک نماد ریاضی است نه نماد پایتون
1219
00:47:16,860 –> 00:47:19,500
x مختصات مختصات y
1220
00:47:19,500 –> 00:47:21,560
و مختصات Z این ترتیب بسیار مهم است،
1221
00:47:21,560 –> 00:47:24,090
بنابراین من همیشه می توانم آن را در یک
1222
00:47:24,090 –> 00:47:27,030
زوج ذخیره کنم که خوب است که یک گزینه است
1223
00:47:27,030 –> 00:47:29,700
گزینه دیگر لیست دوباره است.
1224
00:47:29,700 –> 00:47:31,290
1225
00:47:31,290 –> 00:47:33,180
1226
00:47:33,180 –> 00:47:34,890
چهار ساختار داده را
1227
00:47:34,890 –> 00:47:37,380
میتوانم بهعنوان یک لیست ذخیره کنم،
1228
00:47:37,380 –> 00:47:40,290
زیرا فهرستی که لیست مرتب شده است نیز
1229
00:47:40,290 –> 00:47:43,530
مرتب شده است.
1230
00:47:43,530 –> 00:47:45,750
1231
00:47:45,750 –> 00:47:48,720
1232
00:47:48,720 –> 00:47:51,870
علاوه بر این،
1233
00:47:51,870 –> 00:47:54,530
هر ایده ای در مورد اینکه چگونه می توانیم از یک فرهنگ لغت استفاده
1234
00:47:54,530 –> 00:47:57,110
کنیم، اجازه دهید به اینجا بروم چرا یک فرهنگ لغت یا
1235
00:47:57,110 –> 00:47:59,820
کسی دوباره نمی گوید دیکشنری، کسی
1236
00:47:59,820 –> 00:48:02,040
می گوید آرایه nd من می دانستم که مردم این را می گویند،
1237
00:48:02,040 –> 00:48:05,670
بنابراین می توانید از یک آرایه ND استفاده کنید، اما
1238
00:48:05,670 –> 00:48:09,150
به یاد داشته باشید که آرایه ND در numpy است،
1239
00:48:09,150 –> 00:48:13,050
در واقع یک کلاس numpy تمام چیزی که می گویم
1240
00:48:13,050 –> 00:48:14,880
بین چهار موردی است که داریم،
1241
00:48:14,880 –> 00:48:18,090
لیستی داریم که دیکشنری داریم که تنظیم
1242
00:48:18,090 –> 00:48:21,750
کرده ایم و از بین این چهار تاپلی داریم که
1243
00:48:21,750 –> 00:48:24,660
می توانم از آنها استفاده کنم و چرا پس بیایید
1244
00:48:24,660 –> 00:48:26,490
آدرس nd را حذف کنیم تا به اندازه کافی درست باشد. در میان
1245
00:48:26,490 –> 00:48:28,710
این چهار نفر، بنابراین برخی از شما گفتهاید فهرست کنید،
1246
00:48:28,710 –> 00:48:31,830
برخی از شما گفتهاید زوج برخی از
1247
00:48:31,830 –> 00:48:34,200
شما حتی دیکشنری را درست گفتهاید، بله،
1248
00:48:34,200 –> 00:48:36,330
برخی از شما گفتهاید فرهنگ لغت
1249
00:48:36,330 –> 00:48:38,220
برخی میگویند زوج غیرقابل تغییر است، بنابراین ما
1250
00:48:38,220 –> 00:48:39,630
باید از آن استفاده کنیم،
1251
00:48:39,630 –> 00:48:41,220
اما او در برنامه
1252
00:48:41,220 –> 00:48:44,280
کاربردی است.
1253
00:48:44,280 –> 00:48:47,520
-خاص شاید میخواهم نقطه سه بعدی خود را تغییر دهم، خوب شاید میخواهم
1254
00:48:47,520 –> 00:48:50,430
نقطه سه بعدی خود را تغییر دهم، اگر آن را به عنوان
1255
00:48:50,430 –> 00:48:52,920
یک زوج نشان دهم، نمیتوانم این نقطه سه بعدی را تغییر
1256
00:48:52,920 –> 00:48:56,010
دهم، اگر میخواهم این را برای ما
1257
00:48:56,010 –> 00:48:56,970
برای یک فرد
1258
00:48:56,970 –> 00:48:58,410
بداخلاق بفرستم. ممکن است یک تابع f داشته باشد
1259
00:48:58,410 –> 00:49:01,380
که میخواهد این نقطه سه بعدی را به عنوان
1260
00:49:01,380 –> 00:49:04,260
ورودی دریافت کند و اگر من
1261
00:49:04,260 –> 00:49:06,240
بخواهم این نقطه سه بعدی را در این
1262
00:49:06,240 –> 00:49:09,030
کد تغییر دهم، آنگاه شما آن را متوقف کنید،
1263
00:49:09,030 –> 00:49:11,340
نرخ قابل تغییر خوشایندی خواهد داشت، بنابراین من نمیتوانم
1264
00:49:11,340 –> 00:49:14,880
نمی توان آن را در اینجا تغییر داد، بنابراین بله،
1265
00:49:14,880 –> 00:49:16,410
یکی می گوید ما می توانیم از فرهنگ لغت مانند
1266
00:49:16,410 –> 00:49:21,300
این محور x محور y و محور z بله استفاده کنیم، بنابراین
1267
00:49:21,300 –> 00:49:23,610
فکر می کنم همه ما در مسیر درستی
1268
00:49:23,610 –> 00:49:25,950
هستیم، می توانیم از هر یک از این سه استفاده کنیم، می توانیم از
1269
00:49:25,950 –> 00:49:31,290
یک زوج استفاده کنیم. از یک dict استفاده کنید ما همچنین می
1270
00:49:31,290 –> 00:49:35,430
توانیم از لیستی استفاده کنیم که نمی توانیم از دارایی استفاده کنیم زیرا
1271
00:49:35,430 –> 00:49:37,590
set نیست سفارش دادم امیدوارم همین الان واضح
1272
00:49:37,590 –> 00:49:40,500
است بیایید دوباره ببینیم هر وقت
1273
00:49:40,500 –> 00:49:42,630
مستندات را خواندید این درس بسیار
1274
00:49:42,630 –> 00:49:45,450
مهمی است که باید یاد بگیرید، خوب فرض کنید
1275
00:49:45,450 –> 00:49:48,150
اگر من یک تابع f می خواهم که یک نقطه سه بعدی را وارد
1276
00:49:48,150 –> 00:49:51,390
می کند، بیایید بفهمیم که چگونه numpy دوباره
1277
00:49:51,390 –> 00:49:53,370
به یاد بیاوریم افرادی که numpy را طراحی می کنند درخشان هستند.
1278
00:49:53,370 –> 00:49:56,940
برنامه نویسان این است
1279
00:49:56,940 –> 00:49:58,470
که درس های بسیار مهمی وجود دارد که ما
1280
00:49:58,470 –> 00:50:00,480
می توانیم از افرادی که
1281
00:50:00,480 –> 00:50:02,880
این کتابخانه های خارق العاده
1282
00:50:02,880 –> 00:50:04,650
را طراحی
1283
00:50:04,650 –> 00:50:07,230
1284
00:50:07,230 –> 00:50:09,000
1285
00:50:09,000 –> 00:50:11,700
کرده اند
1286
00:50:11,700 –> 00:50:14,040
بیاموزیم. مانند این نگاه به numpy در
1287
00:50:14,040 –> 00:50:16,560
numpy کنید اگر به عدد نگاه کنید و
1288
00:50:16,560 –> 00:50:18,990
شکل مستندات اضافه شده شکل درست آنها
1289
00:50:18,990 –> 00:50:21,570
است به شما می گوید که شکل
1290
00:50:21,570 –> 00:50:23,330
آرایه numpy که می خواهید
1291
00:50:23,330 –> 00:50:25,860
درست کنید چگونه است و چگونه شکل می دهیم
1292
00:50:25,860 –> 00:50:27,330
دوباره نشان داده شده است، من فقط از آن کپی کردم
1293
00:50:27,330 –> 00:50:29,460
مستندات چگونه خود را شکل می دهیم.
1294
00:50:29,460 –> 00:50:31,890
1295
00:50:31,890 –> 00:50:35,040
1296
00:50:35,040 –> 00:50:37,320
برخی از
1297
00:50:37,320 –> 00:50:38,700
مهندسان نرمافزار
1298
00:50:38,700 –> 00:50:41,030
در مورد این انتخاب بسیار عمیق فکر میکردند
1299
00:50:41,030 –> 00:50:43,890
که شکل یک زوج است، زیرا و چرا
1300
00:50:43,890 –> 00:50:46,350
دوباره زوج را انتخاب کردند،
1301
00:50:46,350 –> 00:50:47,670
این سؤالات است که
1302
00:50:47,670 –> 00:50:49,020
1303
00:50:49,020 –> 00:50:51,480
هر زمان که کد یا کد منبع باز میبینید در دراز مدت شما را به برنامهنویس بهتری تبدیل میکند.
1304
00:50:51,480 –> 00:50:53,250
نوشته شده توسط دیگران این
1305
00:50:53,250 –> 00:50:54,630
سؤالات را بپرسید که چرا آنها این ساختار داده را
1306
00:50:54,630 –> 00:50:57,600
دوباره در اینجا انتخاب کردند، شما نمی توانید
1307
00:50:57,600 –> 00:51:00,330
این را در کتاب های درسی یاد بگیرید آنچه کتاب های درسی به
1308
00:51:00,330 –> 00:51:03,120
شما می آموزند تئوری درست است که مطمئناً
1309
00:51:03,120 –> 00:51:05,990
مهم است من این واقعیت را انکار نمی کنم اما
1310
00:51:05,990 –> 00:51:08,520
اگر واقعاً می خواهید
1311
00:51:08,520 –> 00:51:10,170
جنبه عملی را یاد بگیرید. به مهندسی نرم افزار
1312
00:51:10,170 –> 00:51:12,510
یا نوشتن کد خوب
1313
00:51:12,510 –> 00:51:14,220
این دوباره این است که من یاد گرفتم که
1314
00:51:14,220 –> 00:51:16,740
با شما صادق باشم اینطوری
1315
00:51:16,740 –> 00:51:19,140
یاد گرفتم که InDesign را مشاهده کردم یا اینطوری
1316
00:51:19,140 –> 00:51:21,840
یاد گرفتم عادات برنامه نویسی خوب را یاد گرفتم،
1317
00:51:21,840 –> 00:51:24,600
اگر به آرایه ناقص فکر می کنید
1318
00:51:24,600 –> 00:51:27,180
شکل درست است. شما به عنوان شکل
1319
00:51:27,180 –> 00:51:31,200
این آرایه numpy می دهید درست هیچ کس
1320
00:51:31,200 –> 00:51:32,910
این را تغییر نمی دهد به یاد داشته باشید وقتی یک آرایه داور ایجاد می کنم
1321
00:51:32,910 –> 00:51:34,920
شکل هرگز متغیر شکل
1322
00:51:34,920 –> 00:51:37,020
هرگز تغییر نخواهد کرد.
1323
00:51:37,020 –> 00:51:39,300
این را در این تابع نازک کنید،
1324
00:51:39,300 –> 00:51:41,550
هرگز تغییر نمی کند، به همین دلیل آنها گفتند بیایید
1325
00:51:41,550 –> 00:51:43,890
از یک زوج استفاده کنیم زیرا نشان دهنده
1326
00:51:43,890 –> 00:51:46,380
تعداد مختصاتی است که ما می خواهیم به این نگاه کنید،
1327
00:51:46,380 –> 00:51:50,700
به وضوح می گوید که چه تعداد می خواهیم در
1328
00:51:50,700 –> 00:51:52,740
بعد اول بعد دوم بعد سوم
1329
00:51:52,740 –> 00:51:56,130
و غیره درست است بنابراین این دوباره
1330
00:51:56,130 –> 00:51:58,830
هر زمان که کد را می خوانید از خود بپرسید که
1331
00:51:58,830 –> 00:52:00,240
چرا آنها از این ساختار داده استفاده
1332
00:52:00,240 –> 00:52:02,130
نکرده اند یا از تغییر ساختار دیگری استفاده نکرده اند اما از شکل استفاده کرده اند
1333
00:52:02,130 –> 00:52:04,440
زیرا شکل در هیچ
1334
00:52:04,440 –> 00:52:07,800
کجای این تابع تغییر نمی کند و
1335
00:52:07,800 –> 00:52:09,930
به مجموعه ای
1336
00:52:09,930 –> 00:52:12,270
مرتب نیاز دارد.
1337
00:52:12,270 –> 00:52:14,400
بنابراین آنچه تغییرناپذیر است و
1338
00:52:14,400 –> 00:52:16,410
ترتیبی که در آن ترتیب تغییر نمی کند،
1339
00:52:16,410 –> 00:52:20,310
چند برابر است، خوب است، بنابراین اکنون یک ثانیه یک
1340
00:52:20,310 –> 00:52:22,400
ثانیه یک تابع در اینجا دارم،
1341
00:52:22,400 –> 00:52:27,420
خوب است، یک تغییر کوچک در اینجا، بسیار خوب، فرض کنید
1342
00:52:27,420 –> 00:52:28,980
اگر من می خواهم یک تابع مانند
1343
00:52:28,980 –> 00:52:30,570
این را بنویسم این من می خواهم یک
1344
00:52:30,570 –> 00:52:32,070
تابع مانند این بنویسم یک تابع
1345
00:52:32,070 –> 00:52:35,460
که یک نقطه 3 بعدی را به عنوان ورودی می گیرد و یک نقطه 3 بعدی را به عنوان
1346
00:52:35,460 –> 00:52:38,010
ورودی در این تابع از می
1347
00:52:38,010 –> 00:52:40,560
خواهد دوباره این نقطه 3 بعدی را تغییر دهم.
1348
00:52:40,560 –> 00:52:43,380
من می توانم دوباره این را صدا بزنم این
1349
00:52:43,380 –> 00:52:45,810
است تعریف تابع خوب است من می توانم
1350
00:52:45,810 –> 00:52:47,970
این تابع را با نقطه سه بعدی به
1351
00:52:47,970 –> 00:52:50,670
سمت راست صدا بزنم و انتظار دارم این نقطه سه بعدی
1352
00:52:50,670 –> 00:52:52,770
تغییر کند.
1353
00:52:52,770 –> 00:52:55,500
1354
00:52:55,500 –> 00:52:57,060
1355
00:52:57,060 –> 00:52:59,280
و من می خواهم این را
1356
00:52:59,280 –> 00:53:01,380
به اضافه یک افزایش دهم می خواهم این را به اضافه یک
1357
00:53:01,380 –> 00:53:03,810
افزایش دهم می خواهم این را به اضافه یک افزایش دهم
1358
00:53:03,810 –> 00:53:05,640
بیایید بگوییم این تابع افزایش
1359
00:53:05,640 –> 00:53:07,470
هر مختصات است که تابعی است
1360
00:53:07,470 –> 00:53:09,359
که تابع این کار را انجام می دهد سپس
1361
00:53:09,359 –> 00:53:12,390
چه اطلاعاتی باید انجام دهم ساختار هر
1362
00:53:12,390 –> 00:53:17,550
پیشنهادی لیست تاپل ها
1363
00:53:17,550 –> 00:53:19,890
چگونه می شود لیست تاپل ها چگونه کار می کند که چگونه
1364
00:53:19,890 –> 00:53:21,870
کار
1365
00:53:21,870 –> 00:53:25,950
1366
00:53:25,950 –> 00:53:30,660
1367
00:53:30,660 –> 00:53:33,510
1368
00:53:33,510 –> 00:53:34,980
می کند. کمی توجیه
1369
00:53:34,980 –> 00:53:37,560
هم لطفاً تا ما سرگرمتر شویم
1370
00:53:37,560 –> 00:53:39,330
بحث بسیار غنیتر میشود،
1371
00:53:39,330 –> 00:53:41,820
میدانم چرا استدلال شما فهرست یا
1372
00:53:41,820 –> 00:53:45,660
فرهنگ لغت است، لطفاً توجیه خود را
1373
00:53:45,660 –> 00:53:48,900
فقط در یک خط
1374
00:53:48,900 –> 00:53:50,820
دلایل اصلی که چرا لیست یا چرا فرهنگ لغت
1375
00:53:50,820 –> 00:53:52,980
ok همه می گویند لیست فرهنگ لغت
1376
00:53:52,980 –> 00:53:56,580
هیچ کس تاپل متشکرم شما آن را دریافت کردید لیست
1377
00:53:56,580 –> 00:53:59,310
یا لیست ها خوب چرا لیست ها چرا من به
1378
00:53:59,310 –> 00:54:04,740
چندین لیست نیاز دارم یک لیست یا فرهنگ لغت همه
1379
00:54:04,740 –> 00:54:07,170
وجود خواهد داشت زوج لیست یا فرهنگ لغت
1380
00:54:07,170 –> 00:54:11,180
خوب هر سه می شود چگونه تاپل
1381
00:54:11,180 –> 00:54:13,650
اوکی زوج یک چیز مشکل ساز است درست است
1382
00:54:13,650 –> 00:54:16,680
دوباره شما می توانید آن را انجام دهید شما می توانید آن را از
1383
00:54:16,680 –> 00:54:18,660
Korda Pension انجام دهید چگونه ما در حال ارسال
1384
00:54:18,660 –> 00:54:20,460
پارامترها به تابع چیزی است که
1385
00:54:20,460 –> 00:54:22,530
شما دوباره برمی گردیم این نیز به
1386
00:54:22,530 –> 00:54:24,450
ساختار خود این تابع بستگی
1387
00:54:24,450 –> 00:54:27,450
دارد. فقط فرض کنید پایتون استاندارد
1388
00:54:27,450 –> 00:54:30,600
هر چیزی را که می گذرانید بنویسد، امیدوارم همه
1389
00:54:30,600 –> 00:54:32,760
شما بدانید که پاس با مرجع و
1390
00:54:32,760 –> 00:54:35,250
مقدار پاس در پایتون چگونه کار می کند، هر چه را
1391
00:54:35,250 –> 00:54:39,210
پاس می دهید
1392
00:54:39,210 –> 00:54:42,480
بنویسید اگر تغییرناپذیر است، دوباره به شما پاس داده می شود.
1393
00:54:42,480 –> 00:54:44,940
1394
00:54:44,940 –> 00:54:47,640
فرض کنید یک تاپل ارسال می کنید، فرض کنید یک زوج ارسال می کنید،
1395
00:54:47,640 –> 00:54:49,070
زوج غیرقابل تغییر است
1396
00:54:49,070 –> 00:54:52,380
، زوج غیرقابل تغییر است، بنابراین
1397
00:54:52,380 –> 00:54:54,270
هر مقداری که در اینجا است، اینجا کپی می شود و
1398
00:54:54,270 –> 00:54:56,580
نمی توانید آن را در داخل تغییر دهید، اما به جای
1399
00:54:56,580 –> 00:54:58,410
cou. اگر فهرست یا فرهنگ لغت را پاس می کنید،
1400
00:54:58,410 –> 00:54:59,120
1401
00:54:59,120 –> 00:55:01,680
به یاد داشته باشید که لیست ها و دیکشنری ها در حالت
1402
00:55:01,680 –> 00:55:03,690
بی صدا هستند به عنوان یک قابل تغییر هستند، یعنی می
1403
00:55:03,690 –> 00:55:05,850
توانید آنها را تغییر دهید تا بتوانید فهرست
1404
00:55:05,850 –> 00:55:07,710
یا فرهنگ لغت را ارسال کنید، این لیست یا فرهنگ لغت را تغییر دهید
1405
00:55:07,710 –> 00:55:09,750
و در تابع فراخوانی
1406
00:55:09,750 –> 00:55:11,150
که تغییرات قابل مشاهده است برگردید.
1407
00:55:11,150 –> 00:55:13,470
درست است، امیدوارم همه شما چیزهای اساسی را
1408
00:55:13,470 –> 00:55:16,260
درست بدانید، بنابراین واضح است که نمی توانید
1409
00:55:16,260 –> 00:55:18,240
دوباره استفاده کنید، فقط سرفه را امتحان کنید،
1410
00:55:18,240 –> 00:55:20,160
نمی توانید، شما نمی توانید، می توانید از فهرستی استفاده کنید
1411
00:55:20,160 –> 00:55:21,870
که مطمئناً می توانید از فرهنگ لغت استفاده کنید زیرا
1412
00:55:21,870 –> 00:55:23,760
قابل تغییر است، می خواهم موضوع را تغییر دهم.
1413
00:55:23,760 –> 00:55:26,040
درست است بنابراین من به ساختارهای قابل تغییر نیاز دارم که
1414
00:55:26,040 –> 00:55:28,530
نمی توانید از مجموعه استفاده کنید زیرا خود نظم تنظیم به
1415
00:55:28,530 –> 00:55:31,740
هم ریخته است شما نمی توانید از یک استفاده کنید نمی
1416
00:55:31,740 –> 00:55:33,830
توانید از یک زوج استفاده کنید زیرا تاپل تغییرناپذیر است
1417
00:55:33,830 –> 00:55:35,789
بنابراین شما با اینها
1418
00:55:35,789 –> 00:55:38,219
می مانید که بسیار ساده است دوباره می توانید از
1419
00:55:38,219 –> 00:55:39,899
حذف نیز استفاده کنید گاهی اوقات یک
1420
00:55:39,899 –> 00:55:45,599
استراتژی خوب خوب است، بنابراین من برخی از آنها را
1421
00:55:45,599 –> 00:55:47,519
با نمونه کوچکی از مثال نوشته ام، به این نگاه کنید،
1422
00:55:47,519 –> 00:55:47,849
1423
00:55:47,849 –> 00:55:51,149
فرض کنید اگر خوب قبول شدم، پس خوشحالم
1424
00:55:51,149 –> 00:55:53,309
که این کد را نوشتم، خوب، من یادم نبود که نوشته باشم
1425
00:55:53,309 –> 00:55:54,719
این کد اما به هر حال
1426
00:55:54,719 –> 00:55:55,049
خوب است
1427
00:55:55,049 –> 00:55:57,389
فرض کنید اگر من یک زن و شوهر درست نگاه کنید به
1428
00:55:57,389 –> 00:56:00,419
این T صفر است یک دو من از این تاپل عبور
1429
00:56:00,419 –> 00:56:03,719
می کنم اینجا می گویم T صفر است T 0 به اضافه 1 T 1 است T
1430
00:56:03,719 –> 00:56:05,869
1 به اضافه 1 T 2 T 2 به اضافه 1 است و به
1431
00:56:05,869 –> 00:56:08,819
راست برگردید به شما یک خطای نوع می دهد
1432
00:56:08,819 –> 00:56:10,829
آیا می گوید ok من فکر نمی کنم بتوانم
1433
00:56:10,829 –> 00:56:14,249
آن را در اینجا بخوانم، اما می توانیم به اینجا برویم بسیار خوب، بنابراین
1434
00:56:14,249 –> 00:56:16,319
چه می گوید که می گوید شی زوج
1435
00:56:16,319 –> 00:56:19,469
از انتساب آیتم پشتیبانی نمی کند، شما
1436
00:56:19,469 –> 00:56:21,689
نمی توانید چیزی را به یک تاپل اختصاص دهید، بنابراین
1437
00:56:21,689 –> 00:56:22,829
این چیست؟ یک
1438
00:56:22,829 –> 00:56:25,199
دستور انتساب درست است من چیزی را
1439
00:56:25,199 –> 00:56:28,439
به مقدار T 0 اختصاص می دهم بنابراین تاپل ها این حق را نمی
1440
00:56:28,439 –> 00:56:30,299
دهند، بنابراین خطا
1441
00:56:30,299 –> 00:56:33,329
بسیار ساده است، بنابراین قطعه کد
1442
00:56:33,329 –> 00:56:34,619
فقط می خواست یک قطعه کد را به شما نشان دهد تا شما
1443
00:56:34,619 –> 00:56:36,269
را متقاعد کند که بله آنها در
1444
00:56:36,269 –> 00:56:40,380
واقع تاپل هستند. دوباره تغییرناپذیر هستند،
1445
00:56:40,380 –> 00:56:41,819
به جای آن، اگر این کار را
1446
00:56:41,819 –> 00:56:44,459
با یک لیست درست انجام دادید، بنابراین در اینجا به این نگاه
1447
00:56:44,459 –> 00:56:47,969
کنید T من یک لیست است درست T من یک لیست است
1448
00:56:47,969 –> 00:56:51,089
من P خود را پاس می کنم بسیار خوب من T خود را
1449
00:56:51,089 –> 00:56:54,179
همین جا پاس می کنم. ‘در حال تغییر T خود
1450
00:56:54,179 –> 00:56:56,189
هستم برمیگردم T برنمیگردم من فقط
1451
00:56:56,189 –> 00:56:58,889
از تابع فراخوانی برمیگردم
1452
00:56:58,889 –> 00:57:01,649
بنابراین این T اکنون اصلاح می شود i f من به اندازه کافی T چاپ می کنم اگر چاپ می کنم
1453
00:57:01,649 –> 00:57:05,159
به این نگاه کنید بنابراین قبل
1454
00:57:05,159 –> 00:57:07,049
از اینکه F T را صدا کنم اول بیایید
1455
00:57:07,049 –> 00:57:07,829
ببینیم بیایید ببینیم ابتدا ببینیم اینجا
1456
00:57:07,829 –> 00:57:11,309
چه کار کرده ام T دارم T 0 1 2 من آن را چاپ کردم خوب است
1457
00:57:11,309 –> 00:57:13,349
بنابراین این عبارت چاپی این را چاپ کرد من
1458
00:57:13,349 –> 00:57:17,519
هم T را چاپ کردم 0 خوب خوب این را فهمیدم سپس
1459
00:57:17,519 –> 00:57:20,209
F T را صدا زدم وقتی با F T تماس میگیرم چه اتفاقی میافتد
1460
00:57:20,209 –> 00:57:23,459
ارجاع به این شی T
1461
00:57:23,459 –> 00:57:26,069
مرجع به اینجا منتقل میشود در
1462
00:57:26,069 –> 00:57:28,109
واقع یک کپی از مرجع هستند دوباره
1463
00:57:28,109 –> 00:57:30,719
پایتون از اصطلاحات کمی گیجکننده استفاده
1464
00:57:30,719 –> 00:57:32,339
میکند، اما منطقی است که اگر به
1465
00:57:32,339 –> 00:57:35,659
آن فکر کنید هر تغییری داشته باشد. من اینجا را انجام می دهم در
1466
00:57:35,659 –> 00:57:38,639
اینجا نیز قابل مشاهده هستند به طور خلاصه این همان
1467
00:57:38,639 –> 00:57:41,339
چیزی است که وجود دارد زیرا P است a یک شیء قابل تغییر
1468
00:57:41,339 –> 00:57:43,769
است درست است، بنابراین می گویم
1469
00:57:43,769 –> 00:57:46,049
اگر T را چاپ کنم، اکنون
1470
00:57:46,049 –> 00:57:48,509
اگر T را چاپ کنم، مقادیر
1471
00:57:48,509 –> 00:57:49,710
از 0 1 2 به 1 رفته است.
1472
00:57:49,710 –> 00:57:52,650
سه درب سمت راست تغییرناپذیر هستند و
1473
00:57:52,650 –> 00:57:54,750
مرتب شده اند، به همین دلیل است که وقتی آن را به یک
1474
00:57:54,750 –> 00:57:56,609
تابع منتقل می کنید، هر تغییری که در اینجا ایجاد می کنید
1475
00:57:56,609 –> 00:57:58,830
از منطقه فراخوانی نیز قابل مشاهده است،
1476
00:57:58,830 –> 00:58:05,310
مثال بسیار ساده اگر
1477
00:58:05,310 –> 00:58:06,869
در مورد
1478
00:58:06,869 –> 00:58:08,940
پارامتر تغییر ناپذیری راحت نیستید، دوباره خوب است. بعد
1479
00:58:08,940 –> 00:58:11,400
از گذشتن یک پست بسیار زیبا
1480
00:58:11,400 –> 00:58:13,740
در ویکی پدیا دیده ام. متاسفم در مورد
1481
00:58:13,740 –> 00:58:15,570
Stack Overflow Stack Overflow تقریباً
1482
00:58:15,570 –> 00:58:18,119
مانند ویکی پدیا است نه اشکالی ندارد بنابراین می
1483
00:58:18,119 –> 00:58:21,119
گوید لیست یک لیست قابل تغییر است قابل تغییر است او
1484
00:58:21,119 –> 00:58:22,589
یک کد می نویسد تا به شما نشان دهد که list
1485
00:58:22,589 –> 00:58:26,369
is mutable رشته سمت راست غیر قابل تغییر است، بنابراین
1486
00:58:26,369 –> 00:58:27,950
شما یک قطعه کوچک از کد را به درستی به شما نشان می
1487
00:58:27,950 –> 00:58:31,260
دهید، بنابراین من این توضیح را دوست دارم، بنابراین
1488
00:58:31,260 –> 00:58:32,640
اگر وقت دارید لطفاً این توضیح را مرور کنید،
1489
00:58:32,640 –> 00:58:34,650
1490
00:58:34,650 –> 00:58:36,210
من دوباره آرگومان ها با انتساب منتقل می شوند.
1491
00:58:36,210 –> 00:58:38,550
1492
00:58:38,550 –> 00:58:40,260
برنامه نویسی C را یاد گرفتیم ابتدا می دانیم پاس با
1493
00:58:40,260 –> 00:58:43,890
مرجع می دانیم پاس با مقدار درست به
1494
00:58:43,890 –> 00:58:46,619
این می گویند پاس با انتساب درست است
1495
00:58:46,619 –> 00:58:49,290
که اصطلاحات کمی گیج کننده است
1496
00:58:49,290 –> 00:58:50,609
اما بسیار شبیه به گذراندن با مرجع
1497
00:58:50,609 –> 00:58:53,070
کسانی است که برنامه نویسی C را درست
1498
00:58:53,070 –> 00:58:55,440
می دانند اگر نمی دانید که اشکالی ندارد. از
1499
00:58:55,440 –> 00:58:56,910
شما گیج شده اید یا آرگومان ها چگونه منتقل می شوند،
1500
00:58:56,910 –> 00:58:58,859
لطفاً این را مرور کنید، این یک پست بسیار زیبا
1501
00:58:58,859 –> 00:59:01,290
در Stack Overflow است، من آن را با همه شما به اشتراک خواهم گذاشت
1502
00:59:01,290 –> 00:59:03,480
کد بسیار ساده بسیار
1503
00:59:03,480 –> 00:59:05,190
آسان برای درک توضیح بسیار زیبا در
1504
00:59:05,190 –> 00:59:08,820
واقع خوب من آن را بستم خوب است پس اجازه
1505
00:59:08,820 –> 00:59:11,310
دهید شروع کنم یک ثانیه به من بدهید
1506
00:59:11,310 –> 00:59:16,260
من متوقف کردم اسلایدها را متوقف کردم بسیار خوب من
1507
00:59:16,260 –> 00:59:18,900
به اشتباه با بستن آن پنجره نمایش اسلاید را متوقف
1508
00:59:18,900 –> 00:59:20,520
کردم خوب اجازه دهید
1509
00:59:20,520 –> 00:59:24,060
دوباره ویژگی های کلیدی را ادامه دهم.
1510
00:59:24,060 –> 00:59:25,410
نمونههایی که
1511
00:59:25,410 –> 00:59:27,270
کمی پیچیدهتر هستند، به آرامی
1512
00:59:27,270 –> 00:59:29,580
1513
00:59:29,580 –> 00:59:31,530
1514
00:59:31,530 –> 00:59:34,080
به سراغ نمونههای پیچیدهتر میرویم و دوباره در طول این مجموعه، نمونههای زیادی را مشاهده خواهیم کرد، خوب این سؤال خوبی است تصور کنید اگر میخواهید
1515
00:59:34,080 –> 00:59:36,510
numpy را از ابتدا طراحی کنید، تصور کنید
1516
00:59:36,510 –> 00:59:39,000
دوباره طراح numpy هستید، من واقعاً
1517
00:59:39,000 –> 00:59:40,530
این نوع از آنها را دوست دارم. اینها سوالات
1518
00:59:40,530 –> 00:59:43,500
مورد علاقه شخصی من هستند، زیرا در نهایت
1519
00:59:43,500 –> 00:59:45,450
همه بزرگ می شوند و به یک
1520
00:59:45,450 –> 00:59:46,650
مهندس نرم افزار خوب
1521
00:59:46,650 –> 00:59:48,810
1522
00:59:48,810 –> 00:59:51,390
1523
00:59:51,390 –> 00:59:53,849
1524
00:59:53,849 –> 00:59:56,760
تبدیل
1525
00:59:56,760 –> 00:59:58,890
می شوند. واضح است که اگر میخواهید
1526
00:59:58,890 –> 01:00:01,050
numpy را از ابتدا طراحی کنید، نمیتوانید از numpy استفاده کنید.
1527
01:00:01,050 –> 01:00:03,310
1528
01:00:03,310 –> 01:00:05,260
1529
01:00:05,260 –> 01:00:07,510
Scratch و شما
1530
01:00:07,510 –> 01:00:08,890
باید از یکی از ساختارهای داده داخلی
1531
01:00:08,890 –> 01:00:12,070
برای آرایه دوم استفاده کنید که از چه
1532
01:00:12,070 –> 01:00:14,830
ساختار داده ای از هر پیشنهادی استفاده می کنید
1533
01:00:14,830 –> 01:00:21,310
و چرا واضح است که چرا موارد دیگری وجود دارد
1534
01:00:21,310 –> 01:00:22,450
بله، کسی در مورد
1535
01:00:22,450 –> 01:00:24,250
محیط چند هسته ای صحبت می کند بله
1536
01:00:24,250 –> 01:00:26,410
دوباره وجود دارد که من حتی نمی روم به
1537
01:00:26,410 –> 01:00:28,240
پیچیده تر مانند پردازش چند رشته ای محاسبات توزیع شده چند رشته ای،
1538
01:00:28,240 –> 01:00:30,610
من
1539
01:00:30,610 –> 01:00:31,300
حتی به آنجا
1540
01:00:31,300 –> 01:00:32,470
نمی روم، بنابراین این یک
1541
01:00:32,470 –> 01:00:34,690
هیولای بزرگ است که احتمالاً
1542
01:00:34,690 –> 01:00:37,000
یکی از کسانی که در این جلسه هستند را انجام خواهد داد،
1543
01:00:37,000 –> 01:00:39,100
همچنین احتمالاً یک جلسه را روی آن انجام خواهم داد.
1544
01:00:39,100 –> 01:00:41,370
برنامهنویسی چند هستهای اما کمی بعد
1545
01:00:41,370 –> 01:00:44,250
برنامهنویسی چند هستهای و/یا
1546
01:00:44,250 –> 01:00:46,590
چند رشتهای بحث خواهیم کرد که بعداً
1547
01:00:46,590 –> 01:00:50,110
خوب است، یکی میگوید فهرست، فهرست، فهرست،
1548
01:00:50,110 –> 01:00:53,110
فهرست، فهرست، فهرست، فهرست، فهرست، فهرست لغتنامه فهرست فهرست،
1549
01:00:53,110 –> 01:00:55,360
به دلیل آرایه کار میکند، بله، میتوانید
1550
01:00:55,360 –> 01:00:57,820
فرهنگ لغت را نیز فهرست کار کنید. لیست خوب
1551
01:00:57,820 –> 01:01:00,100
است خوب است شما از لیست لیست ها استفاده می کنید
1552
01:01:00,100 –> 01:01:02,290
دقیقاً چه لیست های دو بعدی هستند
1553
01:01:02,290 –> 01:01:05,050
خوب همه ما با هم هستیم ببینید اگر می
1554
01:01:05,050 –> 01:01:06,670
خواهید آرایه دوم شما چیست اگر
1555
01:01:06,670 –> 01:01:09,190
در مورد آن فکر می کنید بیایید به 2d 2d فکر کنید و DNA
1556
01:01:09,190 –> 01:01:12,190
دوباره میتوانید هر آرایه بعدی بعدی را
1557
01:01:12,190 –> 01:01:13,990
درست انجام دهید، بنابراین اگر لیستهایی از
1558
01:01:13,990 –> 01:01:16,540
فهرستها درست است، اگر فهرستهایی از فهرستها دارید،
1559
01:01:16,540 –> 01:01:19,150
فهرست فهرستها میتواند بهعنوان یک ماتریس 2 بعدی در نظر گرفته
1560
01:01:19,150 –> 01:01:22,210
شود، بنابراین فهرست فهرستها همان
1561
01:01:22,210 –> 01:01:27,280
چیزی است که میتوانید از آن استفاده کنید. آرایه ساده nah
1562
01:01:27,280 –> 01:01:28,270
nd طراحی کنید
1563
01:01:28,270 –> 01:01:29,770
حالا بیایید به یک سوال کمی جالبتر برویم،
1564
01:01:29,770 –> 01:01:31,150
کسانی از شما که
1565
01:01:31,150 –> 01:01:32,500
مهندس نرمافزار با تجربه هستید باید
1566
01:01:32,500 –> 01:01:33,510
به آن
1567
01:01:33,510 –> 01:01:36,400
نگاهی بیندازید، خیلی خوب است، بنابراین از چه چیزی استفاده میکنید لیست
1568
01:01:36,400 –> 01:01:39,160
لیستها سوال بسیار ساده حالا میآید
1569
01:01:39,160 –> 01:01:41,830
مشکل سرگرم کننده فکر می کنم داده ها در
1570
01:01:41,830 –> 01:01:44,370
واقع به صورت داخلی در numpy RS ذخیره می شوند،
1571
01:01:44,370 –> 01:01:46,750
بسیار خوب، بنابراین در سوال قبلی
1572
01:01:46,750 –> 01:01:48,370
یک تفاوت ظریف درست در
1573
01:01:48,370 –> 01:01:51,340
سوال قبلی وجود دارد، سوال من این بود که اگر می خواهید
1574
01:01:51,340 –> 01:01:53,230
numpy را از ابتدا طراحی کنید، از چه
1575
01:01:53,230 –> 01:01:56,430
ساختار داده ای داخلی استفاده
1576
01:01:56,430 –> 01:02:00,250
می کنید، سوال بعدی این است که چگونه numpy
1577
01:02:00,250 –> 01:02:03,310
در واقع شماره را ذخیره می کند و DRS توسط
1578
01:02:03,310 –> 01:02:04,390
آرایه های اعداد منظورم endianness است
1579
01:02:04,390 –> 01:02:06,700
چگونه فکر می کنید واقعا آنها را ذخیره می کند
1580
01:02:06,700 –> 01:02:09,040
آیا تا به حال مستندات
1581
01:02:09,040 –> 01:02:12,760
numpy right را دیده اید بنابراین دوباره آن را
1582
01:02:12,760 –> 01:02:14,380
به عنوان لیست لیست ذخیره نمی کند اجازه دهید روشن
1583
01:02:14,380 –> 01:02:17,250
کنم که
1584
01:02:17,250 –> 01:02:20,160
اگر
1585
01:02:20,160 –> 01:02:22,320
تازهتر هستید یا اگر جوان هستید، این کار را با استفاده از چیزهای بسیار هوشمندتر انجام میدهد،
1586
01:02:22,320 –> 01:02:24,150
ممکن است این را ندانید، اما
1587
01:02:24,150 –> 01:02:26,790
مهندسان نرمافزار باتجربه باید بررسی کنند
1588
01:02:26,790 –> 01:02:28,380
که به نظر شما دادهها در داخل چگونه هستند.
1589
01:02:28,380 –> 01:02:31,220
ذخیره شده در غیر پاریس
1590
01:02:31,369 –> 01:02:34,250
کلاس ok