در این مطلب، ویدئو بخش ارزیابی | کد لیت 399 | توضیح تئوری + کد پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:15
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,680 –> 00:00:06,560
[موسیقی]
2
00:00:06,560 –> 00:00:08,800
سلام بچه ها به یک ویدیوی دیگر خوش آمدید
3
00:00:08,800 –> 00:00:09,519
و امروز
4
00:00:09,519 –> 00:00:11,120
می خواهیم سوال کد لید را حل کنیم،
5
00:00:11,120 –> 00:00:13,120
تقسیم بندی را به خوبی ارزیابی کنیم،
6
00:00:13,120 –> 00:00:14,480
بنابراین در این
7
00:00:14,480 –> 00:00:16,480
سوال معادلاتی با فرمت
8
00:00:16,480 –> 00:00:19,840
a تقسیم بر b که برابر با k است که a
9
00:00:19,840 –> 00:00:21,840
و b متغیرهایی هستند که به صورت رشته نمایش داده می
10
00:00:21,840 –> 00:00:24,080
شوند و k یک عدد واقعی خواهد بود،
11
00:00:24,080 –> 00:00:24,960
12
00:00:24,960 –> 00:00:27,840
با توجه به برخی پرس و جوها، پاسخ را برمی گرداند و
13
00:00:27,840 –> 00:00:29,519
اگر پاسخ وجود نداشته باشد،
14
00:00:29,519 –> 00:00:30,000
منفی
15
00:00:30,000 –> 00:00:32,640
یک خوب است، بنابراین ورودی همیشه
16
00:00:32,640 –> 00:00:33,680
معتبر است، ممکن است فرض کنید که
17
00:00:33,680 –> 00:00:36,320
ارزیابی کوئری ها منجر به تقسیم نمی شود.
18
00:00:36,320 –> 00:00:37,440
با صفر
19
00:00:37,440 –> 00:00:39,440
و هیچ تناقضی وجود ندارد، بنابراین یک
20
00:00:39,440 –> 00:00:40,640
چیزی که ما می خواهیم در اینجا به آن توجه کنیم
21
00:00:40,640 –> 00:00:41,920
این است که نوعی
22
00:00:41,920 –> 00:00:43,680
رابطه وجود دارد که وجود دارد، به
23
00:00:43,680 –> 00:00:44,320
عنوان مثال
24
00:00:44,320 –> 00:00:46,000
وقتی شما تقسیم بر b را انجام می دهید
25
00:00:46,000 –> 00:00:47,760
، رابطه ای وجود دارد که به ما مقدار
26
00:00:47,760 –> 00:00:48,320
k
27
00:00:48,320 –> 00:00:49,920
و چیز دیگری را می دهد. شما می خواهید توجه داشته باشید این است
28
00:00:49,920 –> 00:00:52,079
که در اینجا یک شرایط سخت وجود دارد
29
00:00:52,079 –> 00:00:53,600
که این واقعیت است
30
00:00:53,600 –> 00:00:55,840
که پرس و جوها منجر به تقسیم
31
00:00:55,840 –> 00:00:56,640
بر صفر
32
00:00:56,640 –> 00:00:58,480
نمی شوند و هیچ تناقضی وجود ندارد،
33
00:00:58,480 –> 00:00:59,920
بنابراین
34
00:00:59,920 –> 00:01:01,760
با استفاده از آن می توانیم به نوعی فرض
35
00:01:01,760 –> 00:01:02,960
کنید که این سوال
36
00:01:02,960 –> 00:01:05,519
یک سوال نموداری خواهد بود، به
37
00:01:05,519 –> 00:01:06,240
عنوان مثال
38
00:01:06,240 –> 00:01:08,159
اجازه دهید به اولین مثال در
39
00:01:08,159 –> 00:01:10,400
اینجا نگاه کنیم، بنابراین من فقط اولین
40
00:01:10,400 –> 00:01:12,159
مثال را در اینجا ترسیم کردم، بنابراین یک کاما b
41
00:01:12,159 –> 00:01:14,720
و b کاما c و این اساسا
42
00:01:14,720 –> 00:01:15,759
به این معنی است که یک
43
00:01:15,759 –> 00:01:19,280
تقسیم می شود توسط b برابر است با 2.0
44
00:01:19,280 –> 00:01:22,400
بنابراین a توسط b برابر است با 2.0 اکنون یک
45
00:01:22,400 –> 00:01:24,240
چیز دیگر که می توانیم از این استنباط کنیم این
46
00:01:24,240 –> 00:01:25,280
واقعیت است که
47
00:01:25,280 –> 00:01:28,000
اگر a توسط b برابر 2.0 باشد می
48
00:01:28,000 –> 00:01:29,600
توانیم متقابل آن را بگیریم
49
00:01:29,600 –> 00:01:32,159
بنابراین تمام متقابل متقابل است.
50
00:01:32,159 –> 00:01:34,000
صورت تبدیل به مخرج
51
00:01:34,000 –> 00:01:35,840
و مخرج تبدیل به صورت می شود
52
00:01:35,840 –> 00:01:39,040
بنابراین a توسط b برابر با 2.0 است و همچنین
53
00:01:39,040 –> 00:01:40,000
یک چیز دیگر داریم که
54
00:01:40,000 –> 00:01:43,920
b در a برابر است با 1 در 2.0
55
00:01:43,920 –> 00:01:46,000
بنابراین هر دوی این شرایط را
56
00:01:46,000 –> 00:01:47,360
داریم که می توانیم به
57
00:01:47,360 –> 00:01:50,560
طور مشابه برای b محاسبه کنیم. با c برابر با 3.0
58
00:01:50,560 –> 00:01:53,119
همچنین می توانیم بگوییم که c در b برابر است
59
00:01:53,119 –> 00:01:54,479
با 1 در 3.
60
00:01:54,479 –> 00:01:56,799
بنابراین ما آن دو شرط را داریم که می توانیم آنها را
61
00:01:56,799 –> 00:01:58,560
نیز محاسبه کنیم،
62
00:01:58,560 –> 00:02:00,159
بنابراین در اینجا می خواهیم یک نمودار سریع رسم
63
00:02:00,159 –> 00:02:02,560
کنیم. یک
64
00:02:02,560 –> 00:02:04,560
گره با مقدار a
65
00:02:04,560 –> 00:02:08,080
خواهیم داشت، سپس b و سپس c داریم، بنابراین اکنون
66
00:02:08,080 –> 00:02:10,399
8 تقسیم بر b مقدار 2 را به ما می دهد
67
00:02:10,399 –> 00:02:12,000
.
68
00:02:12,000 –> 00:02:13,680
اکنون یک چیز دیگر که متوجه شدیم این است که
69
00:02:13,680 –> 00:02:15,680
قبلاً دیدیم a با b
70
00:02:15,680 –> 00:02:17,840
و b با a هر دو مقادیر کاملاً
71
00:02:17,840 –> 00:02:19,520
متفاوتی دارند
72
00:02:19,520 –> 00:02:22,000
و به ما می گوید که این نمودار
73
00:02:22,000 –> 00:02:24,000
جهت دار است بنابراین جهت
74
00:02:24,000 –> 00:02:26,800
آن را انجام می دهد. بنابراین a به b با b به a یکسان نیست،
75
00:02:26,800 –> 00:02:27,040
76
00:02:27,040 –> 00:02:30,400
بنابراین در این مورد a به b بنابراین تقسیم
77
00:02:30,400 –> 00:02:30,959
بر
78
00:02:30,959 –> 00:02:34,480
b برابر با 2 است اما b تقسیم بر
79
00:02:34,480 –> 00:02:38,000
a برابر با 1 بر 2 یا 0.5 خواهد بود
80
00:02:38,000 –> 00:02:40,959
به طور مشابه در اینجا تقسیم b می شود. با c
81
00:02:40,959 –> 00:02:42,160
برابر با 3 است
82
00:02:42,160 –> 00:02:46,319
اما c تقسیم بر b برابر است با 1 بر 3.
83
00:02:46,319 –> 00:02:48,319
بنابراین این نمودار کوچکی است
84
00:02:48,319 –> 00:02:49,519
که ما داریم
85
00:02:49,519 –> 00:02:51,519
اما اکنون سؤال این است که چگونه می
86
00:02:51,519 –> 00:02:53,120
توانیم دقیقاً از آن برای دریافت
87
00:02:53,120 –> 00:02:55,440
پاسخ استفاده کنیم. کاملاً مطمئن هستید که میدانید
88
00:02:55,440 –> 00:02:57,200
چگونه میتوانیم پاسخ تقسیم a
89
00:02:57,200 –> 00:02:57,840
90
00:02:57,840 –> 00:03:00,879
b تقسیم بر b بر c یا c بر b را به درستی
91
00:03:00,879 –> 00:03:01,920
به دست آوریم.
92
00:03:01,920 –> 00:03:03,760
93
00:03:03,760 –> 00:03:05,360
94
00:03:05,360 –> 00:03:08,159
این همان چیزی است که ما
95
00:03:08,159 –> 00:03:09,760
می خواهیم به آن پاسخ دهیم،
96
00:03:09,760 –> 00:03:13,120
بنابراین در حال حاضر مقدار a توسط b
97
00:03:13,120 –> 00:03:15,920
و همچنین مقدار b توسط c
98
00:03:15,920 –> 00:03:17,760
و همچنین مقادیر برای متقابل
99
00:03:17,760 –> 00:03:18,959
100
00:03:18,959 –> 00:03:21,120
هر یک از اینها و مقداری که ما به دنبال آن هستیم
101
00:03:21,120 –> 00:03:22,239
اکنون
102
00:03:22,239 –> 00:03:25,120
a در c است اگر این دو
103
00:03:25,120 –> 00:03:26,799
مقدار a را در b
104
00:03:26,799 –> 00:03:29,760
ضرب در b در z ضرب کنید، b و b
105
00:03:29,760 –> 00:03:30,879
لغو می شوند
106
00:03:30,879 –> 00:03:34,000
و این معادل چیزی نیست جز a در c.
107
00:03:34,000 –> 00:03:35,760
و این دقیقاً همان کاری است که میخواهیم
108
00:03:35,760 –> 00:03:37,200
انجام دهیم، میخواهیم
109
00:03:37,200 –> 00:03:41,120
از a به c برسیم، بنابراین برای انجام این کار ابتدا
110
00:03:41,120 –> 00:03:42,319
از a به b میرویم
111
00:03:42,319 –> 00:03:44,239
و مقدار آن در اینجا 2 است. بنابراین
112
00:03:44,239 –> 00:03:45,599
ما میخواهیم آن را در اینجا دریافت کنیم.
113
00:03:45,599 –> 00:03:47,280
و به عبارت دیگر این 2
114
00:03:47,280 –> 00:03:49,920
فقط مقدار a را با b نشان می دهد
115
00:03:49,920 –> 00:03:52,720
به طور مشابه ما از b به c می رویم و آن
116
00:03:52,720 –> 00:03:54,720
دوباره فقط مقدار b را
117
00:03:54,720 –> 00:03:57,519
با c نشان می دهد و مقدار b توسط c برابر با آن
118
00:03:57,519 –> 00:03:58,720
برابر با 3 است.
119
00:03:58,720 –> 00:04:00,319
بنابراین در اینجا ما
120
00:04:00,319 –> 00:04:03,599
این دو عدد را ضرب میکنیم که به ما مقدار 6 را میدهد
121
00:04:03,599 –> 00:04:06,480
و این مقدار 6
122
00:04:06,480 –> 00:04:07,040
123
00:04:07,040 –> 00:04:09,920
مقدار a در c خواهد بود و به سرعت واقعی است، اجازه دهید فقط
124
00:04:09,920 –> 00:04:11,200
آن را در اینجا دوبار بررسی کنیم،
125
00:04:11,200 –> 00:04:14,080
بنابراین ما یک پرس و جو از a در c ایجاد کردیم.
126
00:04:14,080 –> 00:04:15,519
اولین پرس و جو را انجام دادیم
127
00:04:15,519 –> 00:04:17,358
و همانطور که در اینجا می بینید اولین
128
00:04:17,358 –> 00:04:18,798
پرس و جو a توسط
129
00:04:18,798 –> 00:04:21,358
c برابر با شش است، بنابراین ما آن را به
130
00:04:21,358 –> 00:04:22,320
131
00:04:22,320 –> 00:04:23,919
سرعت و به سرعت دریافت کردیم یک مثال دیگر می گوییم
132
00:04:23,919 –> 00:04:26,560
a توسط e و زمانی که شما یک توسط e دارید
133
00:04:26,560 –> 00:04:28,960
که e e اصلا در نمودار ما وجود ندارد،
134
00:04:28,960 –> 00:04:29,600
135
00:04:29,600 –> 00:04:30,960
بنابراین در آن صورت ما در نهایت
136
00:04:30,960 –> 00:04:32,880
یک منفی را برمی گردانیم همانطور که در اینجا انجام دادیم،
137
00:04:32,880 –> 00:04:33,360
138
00:04:33,360 –> 00:04:34,720
بسیار خوب، امیدوارم که متوجه شوید چگونه
139
00:04:34,720 –> 00:04:36,160
این کار می کند و اکنون کاری که می خواهیم
140
00:04:36,160 –> 00:04:36,479
انجام دهیم این
141
00:04:36,479 –> 00:04:38,000
است که می خواهیم آن را کدگذاری کنیم، ممکن است
142
00:04:38,000 –> 00:04:40,000
کمی گیج کننده باشد و در حین کدنویسی
143
00:04:40,000 –> 00:04:41,440
این که چگونه دو
144
00:04:41,440 –> 00:04:42,720
رویکرد متفاوت داریم، می توانیم
145
00:04:42,720 –> 00:04:44,560
یک رویکرد جستجوی عمقی اول یا یک
146
00:04:44,560 –> 00:04:45,919
رویکرد جستجوی اول گسترده را انتخاب کنیم
147
00:04:45,919 –> 00:04:48,320
. فکر نمی کنم هر یک از آنها چیز
148
00:04:48,320 –> 00:04:49,759
بهتر یا برتری
149
00:04:49,759 –> 00:04:51,520
نسبت به دیگری داشته باشد، اما آنها فقط
150
00:04:51,520 –> 00:04:52,960
کمی متفاوت عمل می کنند، بنابراین
151
00:04:52,960 –> 00:04:54,240
برای این سوال، ما یک رویکرد جستجوی عمیق را در نظر می گیریم،
152
00:04:54,240 –> 00:04:56,160
بنابراین
153
00:04:56,160 –> 00:04:57,759
در اینجا ما دو
154
00:04:57,759 –> 00:04:59,759
متفاوت خواهیم داشت. مراحل، بنابراین اولین
155
00:04:59,759 –> 00:05:02,080
قدم ما ساختن نمودار خواهد بود و
156
00:05:02,080 –> 00:05:03,919
157
00:05:03,919 –> 00:05:05,600
در مرحله دوم ما هر یک از پرس و جوهای خود را مرور می کنیم
158
00:05:05,600 –> 00:05:07,440
و ابتدا یک جستجوی عمیق انجام می دهیم
159
00:05:07,440 –> 00:05:09,360
تا به پاسخ آن برسیم.
160
00:05:09,360 –> 00:05:12,720
آن پرس و جو خاص
161
00:05:12,720 –> 00:05:14,240
خوب است، پس بیایید با f شروع کنیم
162
00:05:14,240 –> 00:05:16,160
مرحله اول که ساختن نمودار ما است، بنابراین در
163
00:05:16,160 –> 00:05:17,520
اینجا ما متغیری
164
00:05:17,520 –> 00:05:19,520
به نام گراف خواهیم داشت که نمودار ما را ذخیره می کند
165
00:05:19,520 –> 00:05:20,080
166
00:05:20,080 –> 00:05:21,520
و برای بدست آوردن آن
167
00:05:21,520 –> 00:05:23,600
از فرهنگ لغت پیش فرض
168
00:05:23,600 –> 00:05:26,880
مجموعه ها استفاده می کنیم تا مجموعه ها به طور پیش فرض نقطه نقطه را تعیین کنند.
169
00:05:26,880 –> 00:05:28,800
و سپس از
170
00:05:28,800 –> 00:05:30,880
دیکشنری استفاده خواهیم کرد، دلیل اینکه ما
171
00:05:30,880 –> 00:05:32,639
از دیکشنری پیشفرض مجموعهها
172
00:05:32,639 –> 00:05:34,160
به جای دیکشنری داخلی
173
00:05:34,160 –> 00:05:34,880
پایتون استفاده میکنیم، این
174
00:05:34,880 –> 00:05:36,560
است که برای دیکشنری پیشفرض است، بنابراین
175
00:05:36,560 –> 00:05:38,080
فرض کنید سعی میکنید به مقداری دسترسی پیدا کنید
176
00:05:38,080 –> 00:05:40,479
که در آن زمان وجود ندارد.
177
00:05:40,479 –> 00:05:42,000
در صورتی که شما فقط
178
00:05:42,000 –> 00:05:43,039
یک مقدار تصادفی
179
00:05:43,039 –> 00:05:45,120
به آن اختصاص می دهید و خطایی ایجاد نمی
180
00:05:45,120 –> 00:05:46,080
کند، خوب است، بنابراین
181
00:05:46,080 –> 00:05:48,400
اکنون که این را داریم، می خواهیم
182
00:05:48,400 –> 00:05:49,199
چیزهایی را
183
00:05:49,199 –> 00:05:51,520
به نمودار خود در اینجا اضافه کنیم تا این کار را انجام دهیم.
184
00:05:51,520 –> 00:05:53,280
با تکرار
185
00:05:53,280 –> 00:05:56,160
معادلات و مقادیرمان برای این
186
00:05:56,160 –> 00:05:58,240
کار، میتوانیم از تابع zip استفاده کنیم،
187
00:05:58,240 –> 00:06:00,000
بنابراین برای مقادیر
188
00:06:00,000 –> 00:06:01,520
خود x و y
189
00:06:01,520 –> 00:06:03,759
uh فقط دو مقدار دلخواه دریافت میکنیم و هر یک
190
00:06:03,759 –> 00:06:05,280
از آنها رشتهها هستند
191
00:06:05,280 –> 00:06:06,479
و دیگری چیزی که ما داریم می رویم g
192
00:06:06,479 –> 00:06:08,639
to be getting مقدار
193
00:06:08,639 –> 00:06:09,680
آن است که val okay نامیده می شود،
194
00:06:09,680 –> 00:06:12,960
بنابراین برای این در zip
195
00:06:12,960 –> 00:06:14,160
و ما می خواهیم معادلات را دریافت
196
00:06:14,160 –> 00:06:16,400
کنیم و همچنین
197
00:06:16,400 –> 00:06:17,840
مقادیر را خوب دریافت می کنیم،
198
00:06:17,840 –> 00:06:19,520
بنابراین اکنون که این را در داخل داریم
199
00:06:19,520 –> 00:06:21,520
در اینجا ما قرار است
200
00:06:21,520 –> 00:06:23,759
مقادیر خود را تعریف کنیم، به نمودار
201
00:06:23,759 –> 00:06:25,600
می رویم و سپس به
202
00:06:25,600 –> 00:06:28,240
x و سپس y می رویم و این برابر
203
00:06:28,240 –> 00:06:29,039
204
00:06:29,039 –> 00:06:31,919
با مقدار فعلی ما خواهد بود و همچنین باید عکس آن را
205
00:06:31,919 –> 00:06:32,240
انجام دهیم.
206
00:06:32,240 –> 00:06:34,639
از این، همانطور که قبلا دیدیم،
207
00:06:34,639 –> 00:06:35,759
بنابراین نمودار
208
00:06:35,759 –> 00:06:38,720
x y که اساساً می گوید x تقسیم بر y
209
00:06:38,720 –> 00:06:40,400
برابر با این مقدار است
210
00:06:40,400 –> 00:06:42,319
و به عبارت دیگر آه، کاری که این کار انجام
211
00:06:42,319 –> 00:06:44,000
می دهد جایی است که ما یک کلید
212
00:06:44,000 –> 00:06:47,039
x داریم که در کلمات ساده به y اشاره می کند و
213
00:06:47,039 –> 00:06:48,080
اکنون ما چیستیم. قرار است انجام دهیم این است که ما
214
00:06:48,080 –> 00:06:50,160
برعکس آن را انجام می دهیم، بنابراین y
215
00:06:50,160 –> 00:06:53,199
با اشاره به x و در این حالت
216
00:06:53,199 –> 00:06:55,520
مقدار متقابل خواهد بود بنابراین 1 توسط
217
00:06:55,520 –> 00:06:57,080
val و من فقط 1.0 را انجام می دهم
218
00:06:57,080 –> 00:07:00,560
و دلیل اینکه من 1.0 را انجام می دهم. به
219
00:07:00,560 –> 00:07:02,000
این ترتیب ما یک مقدار ممیز شناور دریافت
220
00:07:02,000 –> 00:07:04,240
می کنیم زیرا این همان چیزی است که ما می خواهیم، بنابراین اک
221
00:07:04,240 –> 00:07:05,360
ون که این را داریم، مر
222
00:07:05,360 –> 00:07:07,520
له اول را به پایان رساندیم که من ما نمودار uh خود را ایجاد می کنیم،
223
00:07:07,520 –> 00:07:10,240
بنابراین قبل از اینکه به
224
00:07:10,240 –> 00:07:11,759
ساخت تابع dfs خود
225
00:07:11,759 –> 00:07:14,000
در اینجا بپردازیم، لیست نتایج خود را تعریف می کنیم
226
00:07:14,000 –> 00:07:15,759
که فقط یک لیست خالی خواهد بود
227
00:07:15,759 –> 00:07:16,080
228
00:07:16,080 –> 00:07:18,080
و به آن همه نتایج خود را اضافه می
229
00:07:18,080 –> 00:07:19,120
230
00:07:19,120 –> 00:07:20,960
کنیم. ‘میخواهیم انجام دهیم این است که
231
00:07:20,960 –> 00:07:22,560
ما سؤالات را در اینجا داریم،
232
00:07:22,560 –> 00:07:24,080
بنابراین اجازه دهید هر یک از این سؤالات را مرور کنیم،
233
00:07:24,080 –> 00:07:25,599
بنابراین برای انجام این کار، اجازه دهید فقط
234
00:07:25,599 –> 00:07:26,240
235
00:07:26,240 –> 00:07:28,639
سؤالات و سؤالات را انجام دهیم، بنابراین اکنون که
236
00:07:28,639 –> 00:07:30,560
هر یک از سؤالات خود را داریم
237
00:07:30,560 –> 00:07:33,599
، ارزش اضافه میکنیم از این پرسوجوها برای
238
00:07:33,599 –> 00:07:35,919
نتایج ما در اینجا ارزش دارند، بنابراین
239
00:07:35,919 –> 00:07:38,160
نقطهای را اضافه میکنیم و در اینجا
240
00:07:38,160 –> 00:07:40,400
تابع dfs خود را dfs صدا
241
00:07:40,400 –> 00:07:42,720
میزنیم و آن را با چه چیزی
242
00:07:42,720 –> 00:07:43,680
فراخوانی
243
00:07:43,680 –> 00:07:46,240
میکنیم، بنابراین در اینجا میخواهیم پرس و جو را ارائه
244
00:07:46,240 –> 00:07:48,000
دهیم و ما دوباره 0
245
00:07:48,000 –> 00:07:50,080
شاخص آن را میدهیم و
246
00:07:50,080 –> 00:07:52,240
اولین شاخص آن را میدهیم، بنابراین شاخص 0
247
00:07:52,240 –> 00:07:52,879
248
00:07:52,879 –> 00:07:54,879
اولین مقدار