در این مطلب، ویدئو مشکلات محدودیت در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 1:06:31
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,770 –> 00:00:03,810
بسیار خوب سلام به همه، همه می توانند صدای من را بشنوند،
2
00:00:03,810 –> 00:00:06,150
خوب این اولین بار است که در توییچ استریم می
3
00:00:06,150 –> 00:00:11,450
کنم، بنابراین امیدوارم خوب پیش برود، من
4
00:00:11,450 –> 00:00:15,240
بدیهی است که در این کار تازه کار هستم و
5
00:00:15,240 –> 00:00:17,430
احتمالاً چندین اشتباه مرتکب خواهم شد، بنابراین
6
00:00:17,430 –> 00:00:20,369
قبل از آن از شما بپرسم
7
00:00:20,369 –> 00:00:22,949
که صفحه نمایش من خوانا است، بنابراین می توانید
8
00:00:22,949 –> 00:00:26,550
کد را خوب بخوانید و این کدی نیست که
9
00:00:26,550 –> 00:00:27,930
ما با آن شروع می کنیم، بلکه فقط یک
10
00:00:27,930 –> 00:00:37,760
نمونه است، بسیار
11
00:00:37,760 –> 00:00:40,739
عالی، بسیار خوب، بنابراین چیزی که ما
12
00:00:40,739 –> 00:00:43,410
امروز در مورد آن صحبت خواهیم کرد این است که محدودیت ها را تنظیم کنید
13
00:00:43,410 –> 00:00:45,360
، آن را بزرگتر کنید خوب این یکی از موارد است.
14
00:00:45,360 –> 00:00:46,530
بزرگتر است پس بگذارید کمی بزرگترش کنم
15
00:00:46,530 –> 00:00:57,710
سپس بیایید 20 را بهتر انجام دهیم بسیار
16
00:00:57,710 –> 00:01:01,280
خوب با تشکر jsb از
17
00:01:01,280 –> 00:01:05,640
اطلاع رسانی در مورد آن تشکر می کنیم بنابراین
18
00:01:05,640 –> 00:01:07,020
امروز می خواهیم در مورد
19
00:01:07,020 –> 00:01:09,600
مشکلات رضایت از محدودیت صحبت کنیم و این
20
00:01:09,600 –> 00:01:12,240
از فصل سوم مسائل کلاسیک
21
00:01:12,240 –> 00:01:14,040
علوم کامپیوتر و سوئیفت است. و
22
00:01:14,040 –> 00:01:15,810
همچنین مسائل کلاسیک علوم کامپیوتر
23
00:01:15,810 –> 00:01:19,080
در پایتون هر دوی این کتاب ها کتاب هایی
24
00:01:19,080 –> 00:01:20,970
برای افرادی هستند که یا کمی
25
00:01:20,970 –> 00:01:22,710
در علم کامپیوتر خود زنگ زده اند اما من
26
00:01:22,710 –> 00:01:24,450
چندین سال است که در برنامه نویسی هستم یا
27
00:01:24,450 –> 00:01:26,610
شاید افرادی که هرگز
28
00:01:26,610 –> 00:01:29,729
تحصیلات علوم کامپیوتر داشتند و به عنوان برنامه نویس کار می کنند
29
00:01:29,729 –> 00:01:31,350
یا به عنوان یک سرگرمی برنامه نویسی
30
00:01:31,350 –> 00:01:33,060
می کنند و می خواهند یک
31
00:01:33,060 –> 00:01:35,340
بررسی کلی از چندین موضوع مختلف
32
00:01:35,340 –> 00:01:37,890
علوم کامپیوتر داشته باشند، بنابراین یکی از موضوعاتی که
33
00:01:37,890 –> 00:01:39,180
در این کتاب به آن
34
00:01:39,180 –> 00:01:41,250
می پردازیم مشکلات رضایت از محدودیت است که امروز به آن خواهیم پرداخت.
35
00:01:41,250 –> 00:01:43,020
کدهایی را در مورد آنها در پایتون مرور کنید
36
00:01:43,020 –> 00:01:45,540
و سپس در پایان یک پرسش و پاسخ در
37
00:01:45,540 –> 00:01:47,159
مورد کتاب ها یا هر چیزی در مورد
38
00:01:47,159 –> 00:01:48,720
آموزش علوم کامپیوتر که می خواهید
39
00:01:48,720 –> 00:01:50,759
در مورد آن صحبت کنید انجام می دهم. کمی خودم را معرفی می کنم
40
00:01:50,759 –> 00:01:52,860
تا اسم من دیوید کوپک است
41
00:01:52,860 –> 00:01:55,170
. نویسنده مشکلات کلاس علوم کامپیوتر
42
00:01:55,170 –> 00:01:56,520
و مسائل سوئیفت و کلاس
43
00:01:56,520 –> 00:01:58,409
علوم کامپیوتر در پایتون و همچنین
44
00:01:58,409 –> 00:02:01,110
دارت برای مبتدیان مطلق من به عنوان
45
00:02:01,110 –> 00:02:02,490
استادیار علوم کامپیوتر
46
00:02:02,490 –> 00:02:05,219
در کالج Champlain کار می کنم من طیف گسترده
47
00:02:05,219 –> 00:02:07,170
ای از دوره های علوم کامپیوتر را تدریس
48
00:02:07,170 –> 00:02:09,508
می کنم و واقعا هیجان زده هستم با شما باشم و
49
00:02:09,508 –> 00:02:12,150
فرصتی پیدا کنم تا کمی
50
00:02:12,150 –> 00:02:13,590
در مورد مشکلات رضایت از محدودیت ها
51
00:02:13,590 –> 00:02:13,800
و
52
00:02:13,800 –> 00:02:16,590
کتاب ها به طور کلی با شما صحبت کنم، بنابراین کاری که فکر کردم
53
00:02:16,590 –> 00:02:19,520
انجام دهم این است که هر دو را ترکیبی داشته باشم
54
00:02:19,520 –> 00:02:22,250
کدی که به نوعی
55
00:02:22,250 –> 00:02:25,260
از کتاب عبور میکند و من در واقع
56
00:02:25,260 –> 00:02:26,970
برخی از نمودارهای کتاب
57
00:02:26,970 –> 00:02:30,000
را مستقیماً مرتبط با آنچه
58
00:02:30,000 –> 00:02:32,160
در مورد آن صحبت خواهیم کرد، میکشم، بنابراین من
59
00:02:32,160 –> 00:02:33,600
کمی به عقب و جلو میروم.
60
00:02:33,600 –> 00:02:36,000
بین برخی از نمودارها و برخی از
61
00:02:36,000 –> 00:02:37,770
کدها نیز قرار میگیریم و من چت را تماشا میکنم
62
00:02:37,770 –> 00:02:39,690
در صورتی که کسی سؤالی داشته باشد،
63
00:02:39,690 –> 00:02:43,140
بنابراین
64
00:02:43,140 –> 00:02:45,690
مشکل رضایت از محدودیت چیست و مشکل رضایت از محدودیت
65
00:02:45,690 –> 00:02:48,090
به نظر
66
00:02:48,090 –> 00:02:49,830
چیزی شبیه چیزی است که شما دارید مشکلی
67
00:02:49,830 –> 00:02:52,500
که دارای محدودیتهایی است اما محدودیت چیست،
68
00:02:52,500 –> 00:02:54,900
بنابراین قبل از اینکه در مورد
69
00:02:54,900 –> 00:02:58,110
آن مانند عنوان فصل
70
00:02:58,110 –> 00:03:00,300
مشکلات رضایت از محدودیت صحبت کنیم، اجازه دهید
71
00:03:00,300 –> 00:03:02,910
در مورد ایده کلی متغیرها
72
00:03:02,910 –> 00:03:08,070
و دامنهها صحبت کنیم تا یک متغیر درست مانند یک
73
00:03:08,070 –> 00:03:10,230
متغیر در برنامهنویسی باشد.
74
00:03:10,230 –> 00:03:12,750
چیزی که دارای چندین مقدار مختلف است
75
00:03:12,750 –> 00:03:14,850
اما در هر زمان ممکن است
76
00:03:14,850 –> 00:03:17,670
فقط یک مقدار را نگه دارد و ما می خواهیم
77
00:03:17,670 –> 00:03:19,650
متغیرها را به صورت ایده آل روی مقادیر مناسب تنظیم
78
00:03:19,650 –> 00:03:22,200
کنیم تا برخی از مسائل را حل کنیم،
79
00:03:22,200 –> 00:03:25,680
اما چه چیزی nd از مقادیر، آیا میتوانیم
80
00:03:25,680 –> 00:03:28,620
متغیرها را به خوبی تنظیم کنیم که
81
00:03:28,620 –> 00:03:32,070
هدف دامنهها این است، بنابراین دامنهها به ما بگویند
82
00:03:32,070 –> 00:03:35,130
این مقادیر ممکن برای این
83
00:03:35,130 –> 00:03:38,090
متغیرها هستند، بنابراین من یک مثال در اینجا دارم،
84
00:03:38,090 –> 00:03:41,040
این یک نوع مشکل است که
85
00:03:41,040 –> 00:03:42,840
مشکلات رضایت از محدودیتها
86
00:03:42,840 –> 00:03:44,670
برای آن بسیار استفاده میشود. حل یک مشکل زمان بندی
87
00:03:44,670 –> 00:03:47,040
بنابراین ما چند متغیر داریم در
88
00:03:47,040 –> 00:03:48,930
این مورد متغیرهای ما در واقع
89
00:03:48,930 –> 00:03:50,880
افراد مختلف هستند و شاید افرادی
90
00:03:50,880 –> 00:03:54,030
که نیاز به تشکیل جلسه دارند بنابراین مری جو
91
00:03:54,030 –> 00:03:57,060
و سو متغیرهای ما هستند و دامنه
92
00:03:57,060 –> 00:03:59,730
ممکن است زمانی باشد که آن
93
00:03:59,730 –> 00:04:01,140
متغیرها برای جلسه
94
00:04:01,140 –> 00:04:03,150
تا شاید بین
95
00:04:03,150 –> 00:04:05,489
ساعت 2:00 تا 4:00 بعد از ظهر در دسترس باشند. یا چیزی شبیه به
96
00:04:05,489 –> 00:04:09,120
آن پس و سپس قیود که در
97
00:04:09,120 –> 00:04:10,769
آن این در واقع به یک مشکل رضایت محدودیت تبدیل می شود
98
00:04:10,769 –> 00:04:12,810
، این
99
00:04:12,810 –> 00:04:15,330
الزامات بین متغیرها هستند
100
00:04:15,330 –> 00:04:18,750
که باید صادق باشند تا مشکل
101
00:04:18,750 –> 00:04:22,560
حل شود، بنابراین در این مشکل ما
102
00:04:22,560 –> 00:04:24,600
محدودیت هایی در مورد اینکه چه کسی باید باشد وجود دارد. در
103
00:04:24,600 –> 00:04:27,780
جلسه سو و مری باید در
104
00:04:27,780 –> 00:04:30,870
جلسه باشند یا جو می تواند در جلسه باشد تا
105
00:04:30,870 –> 00:04:34,680
بتوانیم مری و جو را داشته باشیم یا می
106
00:04:34,680 –> 00:04:37,590
توانیم مریت را داشته باشیم، فقط می توانیم جو را داشته
107
00:04:37,590 –> 00:04:40,320
باشیم یا می توانیم سو و
108
00:04:40,320 –> 00:04:41,669
مری را داشته باشیم متاسفم که نیاز داریم. داشتن سو و مری
109
00:04:41,669 –> 00:04:43,650
و ما میتوانیم جو را با آنها داشته باشیم یا
110
00:04:43,650 –> 00:04:45,540
نمیتوانیم جو داشته باشیم، اما یک محدودیت این است
111
00:04:45,540 –> 00:04:47,190
که باید سو و مری را داشته باشیم و
112
00:04:47,190 –> 00:04:49,470
محدودیت دیگر این است که ممکن است جو را داشته باشیم یا نداشته باشیم،
113
00:04:49,470 –> 00:04:53,790
بنابراین اگر بتوانیم راهی برای ملاقات پیدا کنیم.
114
00:04:53,790 –> 00:04:55,800
بار به عبارت دیگر دامنهها برای هر
115
00:04:55,800 –> 00:04:58,950
سه نفر از این افراد است و ما میتوانیم اطمینان
116
00:04:58,950 –> 00:05:02,070
حاصل کنیم که افراد مناسب از طریق آن
117
00:05:02,070 –> 00:05:03,660
محدودیتها میتوانند در جلسه حضور داشته باشند، سپس
118
00:05:03,660 –> 00:05:05,850
میتوانیم مشکل را حل کنیم، بنابراین این اتفاق همیشه رخ میدهد.
119
00:05:05,850 –> 00:05:07,110
120
00:05:07,110 –> 00:05:09,360
Google Calendar یا از
121
00:05:09,360 –> 00:05:11,130
Apple iCal استفاده کنید و شما سعی میکنید آنها
122
00:05:11,130 –> 00:05:12,330
دیگر آن را iCal نمینامند در حال حاضر
123
00:05:12,330 –> 00:05:14,610
تقویم اپل است آنها و
124
00:05:14,610 –> 00:05:17,070
سعی میکنند برنامههای افراد مختلف را مشخص کنند
125
00:05:17,070 –> 00:05:19,290
و زمانی که افراد بعدی
126
00:05:19,290 –> 00:05:20,820
همه در دسترس هستند، در حال حل مشکل هستند.
127
00:05:20,820 –> 00:05:22,200
مشکل ارضای محدودیت مانند
128
00:05:22,200 –> 00:05:25,830
این است، بنابراین این یکی کمی
129
00:05:25,830 –> 00:05:26,790
درگیرتر است، ما در
130
00:05:26,790 –> 00:05:28,500
چند دقیقه آینده چند مورد سادهتر را حل
131
00:05:28,500 –> 00:05:31,620
میکنیم، اما قبل از انجام این کار اجازه
132
00:05:31,620 –> 00:05:33,630
دهید شروع کد پایتون خود را
133
00:05:33,630 –> 00:05:35,880
برای
134
00:05:35,880 –> 00:05:37,560
حل مشکل رضایت از محدودیت به شما نشان دهم. سپس ما
135
00:05:37,560 –> 00:05:39,000
وارد برخی
136
00:05:39,000 –> 00:05:43,700
مشکلات خاص رضایت از محدودیت میشویم، بنابراین کد پایتون ما
137
00:05:43,700 –> 00:05:46,320
با تعریف محدودیت شروع
138
00:05:46,320 –> 00:05:48,960
میشود، بنابراین شما متوجه خواهید شد که من از
139
00:05:48,960 –> 00:05:51,030
پینهای اتصال در این مورد استفاده میکنم و من فقط
140
00:05:51,030 –> 00:05:52,200
چیزی در مورد تایپ میگویم.
141
00:05:52,200 –> 00:05:56,160
ذهن من به
142
00:05:56,160 –> 00:05:57,930
خصوص زمانی که در حال خواندن کد هستید،
143
00:05:57,930 –> 00:05:59,250
زمانی که کد را در پایتون می نویسید، آن را طولانی تر می کنند،
144
00:05:59,250 –> 00:06:01,500
اما فکر می کنم
145
00:06:01,500 –> 00:06:03,510
زمانی که کد را می خوانید کمی وضوح را اضافه می کنند، اما من می گویم
146
00:06:03,510 –> 00:06:05,550
که این مورد بحث برانگیزترین بود. تصمیم اولیه ای
147
00:06:05,550 –> 00:06:07,710
که در مورد کتاب گرفتم این بود که
148
00:06:07,710 –> 00:06:10,380
سنجاق های کراوات را در همه جا بگذارم و برخی از مردم
149
00:06:10,380 –> 00:06:13,530
پین های کراوات را دوست دارند برخی از افراد واقعاً
150
00:06:13,530 –> 00:06:15,390
آنها را کمی به هم ریخته می دانند
151
00:06:15,390 –> 00:06:17,580
و کد را کمی پرمخاطب تر می کنند، اما
152
00:06:17,580 –> 00:06:19,229
اگر شما این کار را نکنید، من از پین های کراوات در اینجا استفاده می
153
00:06:19,229 –> 00:06:21,360
کنم. با پین های کراواتی آشنا هستید،
154
00:06:21,360 –> 00:06:23,669
در واقع می توانید کد را بدون
155
00:06:23,669 –> 00:06:26,550
اشاره تایپ بخوانید و اساساً
156
00:06:26,550 –> 00:06:28,169
پایتون استاندارد برای شما بدون پین های کراواتی است،
157
00:06:28,169 –> 00:06:30,990
بنابراین هر زمان که یک دونقطه را مشاهده کردید که
158
00:06:30,990 –> 00:06:33,479
پین های کراواتی اضافه می کند، اما اگر فقط کو
159
00:06:33,479 –> 00:06:35,909
ون را خارج کنید، فقط کافی است. پا
160
00:06:35,909 –> 00:06:37,979
بدون پینهای کراوات، بنابراین شما نمیدانید
161
00:06:37,979 –> 00:06:41,040
خیلی زیاد نیست،
162
00:06:41,040 –> 00:06:42,780
اگر تایپهای را
163
00:06:42,780 –> 00:06:45,000
ندیدهاید، مشکلی ندارد و متاسفم که سگ من
164
00:06:45,000 –> 00:06:49,320
کمی پارس میکرد.
165
00:06:49,320 –> 00:06:50,550
166
00:06:50,550 –> 00:06:53,100
آنها چیزهایی
167
00:06:53,100 –> 00:06:55,650
هستند که محدود می شوند، متغیرها هستند، بنابراین
168
00:06:55,650 –> 00:06:57,810
این کلاس محدودیت واقعاً ساده
169
00:06:57,810 –> 00:07:01,140
است، تنها کاری که باید انجام دهید این است که لیستی از
170
00:07:01,140 –> 00:07:04,440
متغیرها را تهیه کنید و سپس مطمئن شوید که همه
171
00:07:04,440 –> 00:07:07,140
آنها راضی هستند، اما Virgen
172
00:07:07,140 –> 00:07:08,940
Urich یک محدودیت دارد. آموزشی که
173
00:07:08,940 –> 00:07:11,340
مختص نوع خاصی از مشکل نیست، ما
174
00:07:11,340 –> 00:07:12,960
نمی دانیم که ارضای آن محدودیت به چه معناست،
175
00:07:12,960 –> 00:07:15,210
بنابراین اگر
176
00:07:15,210 –> 00:07:17,370
این یک مشکل زمان بندی بود،
177
00:07:17,370 –> 00:07:19,320
رضایت ممکن است به این ارتباط داشته باشد که
178
00:07:19,320 –> 00:07:21,480
همه متغیرهای مشخصی از
179
00:07:21,480 –> 00:07:23,970
متغیرها در دسترس هستند. در آن زمان، اما
180
00:07:23,970 –> 00:07:25,590
برای انواع دیگر مشکلات،
181
00:07:25,590 –> 00:07:27,600
فاکتورهای مختلفی وجود خواهد داشت که در
182
00:07:27,600 –> 00:07:29,820
مورد برآورده شدن یا نبودن محدودیت تأثیر میگذارد،
183
00:07:29,820 –> 00:07:31,770
بنابراین ما در نهایت
184
00:07:31,770 –> 00:07:33,990
این روش را نادیده میگیریم و در
185
00:07:33,990 –> 00:07:36,060
زیر کلاسهای محدودیت که
186
00:07:36,060 –> 00:07:37,650
برای انواع مختلف مشکلات ما پیادهسازی میشوند،
187
00:07:37,650 –> 00:07:41,490
بسیار خوب است. این محدودیت ما است،
188
00:07:41,490 –> 00:07:44,190
سپس ما ساختار کلی برای
189
00:07:44,190 –> 00:07:45,870
نگه داشتن کل
190
00:07:45,870 –> 00:07:47,880
مشکل رضایت محدودیت را داریم و می
191
00:07:47,880 –> 00:07:54,470
گوییم که کلاس CSP و CSP
192
00:07:54,470 –> 00:07:58,110
دوباره یک کلاس عمومی است زیرا می
193
00:07:58,110 –> 00:08:00,150
خواهیم بتوانیم با انواع مختلف
194
00:08:00,150 –> 00:08:02,370
هم برای متغیرها و هم برای دامنه ها کار کنیم.
195
00:08:02,370 –> 00:08:05,850
متغیرهای ما ممکن است رشته باشند یا
196
00:08:05,850 –> 00:08:08,070
ممکن است اعداد صحیح باشند دامنه های ما ممکن است
197
00:08:08,070 –> 00:08:09,270
رشته باشند ممکن است اعداد صحیح باشند و
198
00:08:09,270 –> 00:08:11,430
ممکن است در کل چیز دیگری باشند بنابراین
199
00:08:11,430 –> 00:08:13,170
بسته به نوع مشکل، ما
200
00:08:13,170 –> 00:08:14,790
انواع مختلفی از متغیرها
201
00:08:14,790 –> 00:08:17,640
و محدودیت ها را خواهیم داشت و ببخشید در دامنه ها
202
00:08:17,640 –> 00:08:19,980
و این بسته
203
00:08:19,980 –> 00:08:22,620
به ویژگی های مشکل متفاوت است و بنابراین
204
00:08:22,620 –> 00:08:25,320
اینجاست که شما شروع به دیدن برخی از
205
00:08:25,320 –> 00:08:28,080
نکات نوع پایتون می کنید در اینجا بازی کنید، بنابراین
206
00:08:28,080 –> 00:08:31,740
این در نوع پایتون است که میگوید VND
207
00:08:31,740 –> 00:08:34,470
میتواند هر نوع خاصی باشد، ما نمیدانیم
208
00:08:34,470 –> 00:08:36,419
در زمانی که
209
00:08:36,419 –> 00:08:38,400
کلاس را تعریف میکنیم چه نوع هستند، اما در
210
00:08:38,400 –> 00:08:40,440
آینده کاربر این کلاس
211
00:08:40,440 –> 00:08:42,539
مقداری را مشخص خواهد کرد. انواع برای V و برخی از
212
00:08:42,539 –> 00:08:44,640
انواع برای D و آن نوع باید در
213
00:08:44,640 –> 00:08:46,320
سرتاسر زیر کلاس یکسان باشد، بنابراین
214
00:08:46,320 –> 00:08:48,480
متغیرها همیشه
215
00:08:48,480 –> 00:08:50,400
برای نوع خاصی از مسئله از نوع خاصی
216
00:08:50,400 –> 00:08:52,710
خواهند بود و دامنه ها همیشه برای
217
00:08:52,710 –> 00:08:53,930
نوع خاصی از یک نوع هستند،
218
00:08:53,930 –> 00:08:57,350
بنابراین CSP هر چند
219
00:08:57,350 –> 00:08:59,690
دامنهها و محدودیتهای متغیر را جمعآوری میکند
220
00:08:59,690 –> 00:09:02,290
، مسئولیت
221
00:09:02,290 –> 00:09:04,970
مرتبط کردن متغیرها با دامنهها
222
00:09:04,970 –> 00:09:07,700
را بر عهده دارد و این کار را انجام میدهد و مسئول اطمینان از
223
00:09:07,700 –> 00:09:09,890
اینکه همه محدودیتها واقعاً
224
00:09:09,890 –> 00:09:11,390
برآورده میشوند، این همان چیزی است که این
225
00:09:11,390 –> 00:09:12,800
محدودیت دارد. structor این کار را انجام می دهد و فقط
226
00:09:12,800 –> 00:09:15,050
دامنه ها و محدودیت های متغیر را
227
00:09:15,050 –> 00:09:17,480
به عنوان فرهنگ لغت جمع می کند تا بتوانیم
228
00:09:17,480 –> 00:09:19,459
بعداً آنها را جستجو کنیم و سپس وقتی
229
00:09:19,459 –> 00:09:21,380
می خواهیم یک محدودیت اضافه کنیم، در
230
00:09:21,380 –> 00:09:23,089
واقع یک روش در اینجا داریم که محدودیت را اضافه کنیم و
231
00:09:23,089 –> 00:09:25,820
کاری که انجام می دهد فقط انجام یک بررسی عقلانی است
232
00:09:25,820 –> 00:09:26,779
و فقط مطمئن شوید که
233
00:09:26,779 –> 00:09:28,760
این محدودیت بین
234
00:09:28,760 –> 00:09:30,770
متغیرهای خاصی است، آیا آن متغیرها واقعاً
235
00:09:30,770 –> 00:09:34,220
در مسئله وجود دارند، اگر متغیرها
236
00:09:34,220 –> 00:09:37,279
واقعاً در مشکل وجود داشته باشند، ما
237
00:09:37,279 –> 00:09:38,930
خوب هستیم و می توانیم این محدودیت را اضافه کنیم
238
00:09:38,930 –> 00:09:40,279
اگر اینطور نیست به این معنی است
239
00:09:40,279 –> 00:09:41,480
که مشکلی در ساخت وجود داشته است. از
240
00:09:41,480 –> 00:09:42,800
این محدودیت، بنابراین این واقعاً
241
00:09:42,800 –> 00:09:45,560
فقط یک بررسی عقلانی است، هیچ
242
00:09:45,560 –> 00:09:48,290
چیز پیچیدهتری وجود ندارد، خوب است،
243
00:09:48,290 –> 00:09:50,600
بنابراین تا کنون ما فقط در حال انجام راهاندازی بودهایم،
244
00:09:50,600 –> 00:09:53,200
اکنون وارد چیزهای واقعی میشویم که به نظر میرسد
245
00:09:53,200 –> 00:09:57,200
یکنواخت است و
246
00:09:57,200 –> 00:10:02,300
به نظر میرسد که آیا هر محدودیتی برای
247
00:10:02,300 –> 00:10:05,480
برخی خاص است یا خیر. نگرانی،
248
00:10:05,480 –> 00:10:07,190
بنابراین به یاد داشته باشید که محدودیتهای
249
00:10:07,190 –> 00:10:08,390
مختلف با متغیرهای مختلف مرتبط میشوند،
250
00:10:08,390 –> 00:10:10,550
بنابراین محدودیتهایی برای برخی از
251
00:10:10,550 –> 00:10:11,959
متغیرها، فرض کنید که این محدودیتها ما بود.
252
00:10:11,959 –> 00:10:13,370
مشکل زمانبندی، فرض کنید تمام محدودیتهای
253
00:10:13,370 –> 00:10:16,040
اطراف جو، بنابراین محدودیتهای مختلف
254
00:10:16,040 –> 00:10:19,640
که کاربرد جو را در یک
255
00:10:19,640 –> 00:10:22,820
جلسه محدود میکنند، همه راضی هستند، در صورتی
256
00:10:22,820 –> 00:10:25,640
که خوب هستند، و این بدان معناست
257
00:10:25,640 –> 00:10:28,790
که ما تا به حال راهحل خوبی
258
00:10:28,790 –> 00:10:30,589
برای محدودیتهای این متغیر داریم، اگر
259
00:10:30,589 –> 00:10:32,959
آنها وجود داشته باشند. راضی نیستیم
260
00:10:32,959 –> 00:10:35,540
که باید به عقب برگردیم و
261
00:10:35,540 –> 00:10:37,310
مقادیر مختلف دامنه را برای این
262
00:10:37,310 –> 00:10:39,740
متغیر امتحان کنیم تا بتوانیم آن را حل کنیم و روشی
263
00:10:39,740 –> 00:10:40,820
که میخواهیم این کار را انجام دهیم از طریق
264
00:10:40,820 –> 00:10:42,020
چیزی است که به آن جستجوی بازگشتی
265
00:10:42,020 –> 00:10:44,300
میگویند که در واقع ماست. روش بعدی پس
266
00:10:44,300 –> 00:10:46,520
من در عرض یک دقیقه به آن
267
00:10:46,520 –> 00:10:48,680
خواهم پرداخت، اما می خواهم به این نکته اشاره کنم که چقدر خوب است که
268
00:10:48,680 –> 00:10:50,510
همه چیز را در فرهنگ لغت ذخیره
269
00:10:50,510 –> 00:10:52,339
کنیم، زیرا ما به راحتی می توانیم موارد
270
00:10:52,339 –> 00:10:54,140
را با متغیر درست جستجو کنیم تا بتوانیم
271
00:10:54,140 –> 00:10:55,579
به سرعت این موارد را جستجو کنیم.
272
00:10:55,579 –> 00:10:57,709
محدودیتهای مرتبط با این
273
00:10:57,709 –> 00:11:02,240
متغیر خوب است، بنابراین
274
00:11:02,240 –> 00:11:04,279
این پیچیدهترین است، اگرچه آنقدرها
275
00:11:04,279 –> 00:11:06,260
هم پیچیده نیست، این
276
00:11:06,260 –> 00:11:07,850
پیچیدهترین بخش
277
00:11:07,850 –> 00:11:09,589
مشکل رضایت از محدودیت است.
278
00:11:09,589 –> 00:11:12,440
جستجوی پسگرد این همان
279
00:11:12,440 –> 00:11:14,720
280
00:11:14,720 –> 00:11:16,910
چیزی است که واقعاً چیزی را انجام میدهد، بنابراین
281
00:11:16,910 –> 00:11:18,980
جستجوی پسگرد مسئول
282
00:11:18,980 –> 00:11:22,069
تلاش برای یافتن مقادیر دامنهای است که
283
00:11:22,069 –> 00:11:23,990
میتواند برای هر یک از متغیرها وارد شود که
284
00:11:23,990 –> 00:11:27,649
همه محدودیتها را برآورده کند، بنابراین چگونه
285
00:11:27,649 –> 00:11:30,050
آیا هر بار که
286
00:11:30,050 –> 00:11:32,660
جستجوی پسرفته انجام میدهیم، نوعی
287
00:11:32,660 –> 00:11:35,240
تخصیص داریم، بنابراین این مقادیر دامنه بالقوه
288
00:11:35,240 –> 00:11:40,130
برای متغیرها هستند و اگر
289
00:11:40,130 –> 00:11:44,389
تعداد تخصیصها به
290
00:11:44,389 –> 00:11:46,670
اندازه متغیرهایمان باشد، به این معنی است که ما در واقع
291
00:11:46,670 –> 00:11:48,649
همه چیز را به این معنی اختصاص دادهایم.
292
00:11:48,649 –> 00:11:51,170
هر متغیر دارای مقداری تخصیص است، بنابراین
293
00:11:51,170 –> 00:11:53,389
ما یک مقدار دامنه پیدا کرده ایم که
294
00:11:53,389 –> 00:11:55,459
برای هر متغیر مناسب است و این یک
295
00:11:55,459 –> 00:11:58,069
چیز عالی است، بنابراین در این صورت کار ما تمام شده است و ما
296
00:11:58,069 –> 00:11:59,480
در واقع تخصیص را برگردانده
297
00:11:59,480 –> 00:12:01,040
ایم زیرا با موفقیت هر
298
00:12:01,040 –> 00:12:04,610
متغیر را به یک دامنه اختصاص داده ایم. مقدار با این حال
299
00:12:04,610 –> 00:12:06,290
بیشتر اوقات تا زمانی که کار را تمام
300
00:12:06,290 –> 00:12:08,389
کنیم درست نیست و بنابراین ما فقط اینجا را دنبال می
301
00:12:08,389 –> 00:12:10,579
کنیم متغیرهای Wyck هنوز
302
00:12:10,579 –> 00:12:12,769
تخصیص ندارند بنابراین کدام متغیرها را
303
00:12:12,769 –> 00:12:15,740
نداریم هنوز مقادیر دامنه برای رفتن
304
00:12:15,740 –> 00:12:17,540
به آنها را پیدا نکردهایم، این همان چیزی است که در اینجا تخصیص داده نشده
305
00:12:17,540 –> 00:12:19,100
است و ما در اینجا نیز از درک درک فهرست کمی
306
00:12:19,100 –> 00:12:21,259
در پایتون
307
00:12:21,259 –> 00:12:24,470
برای انجام این کار استفاده میکنیم، سپس چگونه میتوانیم
308
00:12:24,470 –> 00:12:27,740
در واقع برویم و جستجو را انجام دهیم تا ببینیم
309
00:12:27,740 –> 00:12:30,439
چه مقادیر دامنه ممکن است برای این کار قابل استفاده باشد.
310
00:12:30,439 –> 00:12:33,589
متغیر خوب این در واقع به این
311
00:12:33,589 –> 00:12:35,720
صورت است که اگر شما
312
00:12:35,720 –> 00:12:37,550
ابتدا الگوریتم جستجوی عمق را قبل از این الگوریتم جستجوی عمق عمق دیده باشید،
313
00:12:37,550 –> 00:12:39,740
قبل از اینکه این شکلی از
314
00:12:39,740 –> 00:12:42,860
جستجوی اول عمق باشد، کاری که ما انجام می دهیم این است که
315
00:12:42,860 –> 00:12:44,689
ابتدا به اولین متغیر اختصاص نیافته
316
00:12:44,689 –> 00:12:48,139
نگاه می کنیم و آن را پیگیری می کنیم. در یک
317
00:12:48,139 –> 00:12:50,120
متغیر در اینجا یک متغیر پایتون اکنون
318
00:12:50,120 –> 00:12:52,699
یک متغیر رضایت محدودیت نیست،
319
00:12:52,699 –> 00:12:54,649
سپس از تمام دامنههای بالقوه
320
00:12:54,649 –> 00:12:56,480
برای آن متغیر عبور میکنیم، بنابراین میخواهیم
321
00:12:56,480 –> 00:12:58,339
آنها را یکی یکی به
322
00:12:58,339 –> 00:12:59,870
ترتیب اصلی که در دامنهها قرار داده شدهاند مرور کنیم.
323
00:12:59,870 –> 00:13:04,189
و برای هر یک از آنها
324
00:13:04,189 –> 00:13:07,670
یک تخصیص بالقوه جدید ایجاد می کنیم که تخصیص
325
00:13:07,670 –> 00:13:09,199
قدیمی را انجام می دهد زیرا تخصیص قدیمی
326
00:13:09,199 –> 00:13:11,180
دامنه های
327
00:13:11,180 –> 00:13:13,430
همه متغیرهای قبلی را خواهد داشت و در
328
00:13:13,430 –> 00:13:15,709
این یکی فقط یک متغیر جدید اضافه می کنیم.
329
00:13:15,709 –> 00:13:18,260
امضا و اضافه می کنیم که به این
330
00:13:18,260 –> 00:13:21,350
چیزی که به آن تخصیص محلی می گوییم و
331
00:13:21,350 –> 00:13:23,990
اگر معلوم شد که آن روش را به یاد داشته باشید که
332
00:13:23,990 –> 00:13:25,550
ما سازگاری انجام دادیم که
333
00:13:25,550 –> 00:13:27,709
تمام محدودیت ها را بررسی می کند اگر معلوم شد که
334
00:13:27,709 –> 00:13:31,459
این تخصیص جدید همراه با همه
335
00:13:31,459 –> 00:13:35,180
موارد قدیمی با هم سازگار
336
00:13:35,180 –> 00:13:36,889
است. یعنی همه محدودیتها برآورده میشوند،
337
00:13:36,889 –> 00:13:40,009
پس ما خوب هستیم و این بدان معنی است که
338
00:13:40,009 –> 00:13:42,290
این یک تخصیص خوب بود و در این
339
00:13:42,290 –> 00:13:45,139
صورت ما مدار
340
00:13:45,139 –> 00:13:47,449
بازگشتی را به صورت بازگشتی فراخوانی میکنیم و آنچه اتفاق میافتد این است که
341
00:13:47,449 –> 00:13:50,000
اجازه دهید به بالا برگردیم در اینجا
342
00:13:50,000 –> 00:13:52,430
تخصیص اکنون همان چیزی میشود که بود.
343
00:13:52,430 –> 00:13:55,160
تخصیص محلی اکنون با یک متغیر دیگر که با
344
00:13:55,160 –> 00:13:57,949
موفقیت با یک
345
00:13:57,949 –> 00:14:01,100
مقدار دامنه برای آن پر شده است، به این معنی است که
346
00:14:01,100 –> 00:14:02,920
اکنون میتوانیم به یک
347
00:14:02,920 –> 00:14:05,269
متغیر تخصیص داده شده دیگر برویم یا اگر کاملاً تمام شد
348
00:14:05,269 –> 00:14:07,310
، فقط انتساب را برمیگردانیم
349
00:14:07,310 –> 00:14:09,759
تا در واقع یک متغیر باشد.
350
00:14:09,759 –> 00:14:12,800
اولین مدار عمق بازگشتی بسیار ساده که در اینجا انجام می شود
351
00:14:12,800 –> 00:14:14,149
اگر با جستجوی اول عمق آشنایی ندارید
352
00:14:14,149 –> 00:14:15,589
می توانم بفهمم که
353
00:14:15,589 –> 00:14:18,500
این بسیار ترسناک به نظر می رسد اما
354
00:14:18,500 –> 00:14:20,180
خبر عالی یک عمق است جستجوی st در واقع
355
00:14:20,180 –> 00:14:22,730
در فصل 2 کتاب
356
00:14:22,730 –> 00:14:24,290
پوشش داده شده است، بنابراین ما ابتدا به جستجوی عمقی در فصل
357
00:14:24,290 –> 00:14:26,000
2 کتاب پرداختیم و سپس در فصل 3 در مورد
358
00:14:26,000 –> 00:14:27,800
مسائل مربوط به رضایت از محدودیت، به
359
00:14:27,800 –> 00:14:29,029
نوعی فرض می کنیم که شما آن دانش را
360
00:14:29,029 –> 00:14:30,110
در مورد جستجوی اول
361
00:14:30,110 –> 00:14:33,110
عمق اما اساساً عمق دارید. -جستجوی اول اجازه دهید
362
00:14:33,110 –> 00:14:35,180
به عنوان یک قیاس در دنیای واقعی ایده ای در مورد آن به شما بدهم،
363
00:14:35,180 –> 00:14:39,230
بنابراین اگر یک پیاز داشتید
364
00:14:39,230 –> 00:14:41,839
و چیزی شبیه به داخل
365
00:14:41,839 –> 00:14:42,980
پیاز شما در جایی وجود داشت، شاید
366
00:14:42,980 –> 00:14:44,569
حشره ای در داخل آن خزیده باشد، اگر
367
00:14:44,569 –> 00:14:47,029
این یک نمونه بد است اما من این کار
368
00:14:47,029 –> 00:14:47,480
را به هر حال
369
00:14:47,480 –> 00:14:49,190
انجام می دهم، مقداری حشره در داخل
370
00:14:49,190 –> 00:14:50,630
پیاز شما می خزد و شما می خواهید آن را درست پیدا کنید
371
00:14:50,630 –> 00:14:53,510
، دو استراتژی اصلی وجود دارد که می توانید
372
00:14:53,510 –> 00:14:55,220
از آن استفاده کنید، جستجوی وسعت اول وجود دارد که در
373
00:14:55,220 –> 00:14:56,779
آن ممکن است پیاز را یک لایه پوست کنده و
374
00:14:56,779 –> 00:14:59,569
به دنبال آن بگردید.
375
00:14:59,569 –> 00:15:01,760
حشره و سپس یک جستجوی عمقی وجود دارد
376
00:15:01,760 –> 00:15:02,959
که در آن ممکن است فقط
377
00:15:02,959 –> 00:15:04,279
یک چاقو را به پیاز بچسبانید و
378
00:15:04,279 –> 00:15:05,779
امیدوار باشید که آن را پیدا کرده باشید،
379
00:15:05,779 –> 00:15:07,880
خیلی سریع به اعماق عمق رفته اید و این کار
380
00:15:07,880 –> 00:15:09,649
را خیلی روشمند انجام نداده اید. رفتید و
381
00:15:09,649 –> 00:15:11,240
شما یکسری مقادیر را امتحان کردید یکسری
382
00:15:11,240 –> 00:15:13,519
جاها را امتحان کردید تا آن را جستجو کنید و آن را
383
00:15:13,519 –> 00:15:15,319
کاملاً پیدا نکردید، بنابراین
384
00:15:15,319 –> 00:15:17,120
به آخرین جایی که بودید عقب می روید و آن
385
00:15:17,120 –> 00:15:18,380
را کمی متفاوت به آن می چسبانید
386
00:15:18,380 –> 00:15:22,910
و امیدواریم که پیدا کنید حشره به
387
00:15:22,910 –> 00:15:25,189
این ترتیب همیشه کارآمدترین
388
00:15:25,189 –> 00:15:27,110
راه برای انجام کارها نیست و این
389
00:15:27,110 –> 00:15:28,699
کارآمدترین راه لزوماً برای
390
00:15:28,699 –> 00:15:30,350
حل مشکل رضایت محدودیت نیست،
391
00:15:30,350 –> 00:15:34,640
اما مطمئناً کار می کند
392
00:15:34,640 –> 00:15:36,050
و نشان دادن آن بسیار ساده است و به
393
00:15:36,050 –> 00:15:38,300
همین دلیل است که ما از این
394
00:15:38,300 –> 00:15:40,490
روش در کتاب در فصل
395
00:15:40,490 –> 00:15:40,910
سوم استفاده
396
00:15:40,910 –> 00:15:43,370
کنید بسیار خوب، بنابراین اکنون بیایید از این چارچوب
397
00:15:43,370 –> 00:15:45,680
برای حل برخی از مسائل واقعی خاص
398
00:15:45,680 –> 00:15:47,420
استفاده کنیم، بنابراین همه اینها فقط ساخته شده است
399
00:15:47,420 –> 00:15:49,310
تا بتوانیم یک مشکل را حل کنیم، اما
400
00:15:49,310 –> 00:15:51,440
بیایید برخی از متغیرهای واقعی را امتحان کنیم.
401
00:15:51,440 –> 00:15:53,480
دامنههای واقعی و برخی
402
00:15:53,480 –> 00:15:57,080
محدودیتهای واقعی، بنابراین
403
00:15:57,080 –> 00:16:00,320
من پیشنمایش برخی
404
00:16:00,320 –> 00:16:02,750
از مشکلات کتاب را در اینجا باز میکنم و بیایید به
405
00:16:02,750 –> 00:16:05,300
مشکل رنگآمیزی نقشه استرالیا نگاه کنیم،
406
00:16:05,300 –> 00:16:08,720
بنابراین مشکلی که ما کشور Aus داریم اینجاست.
407
00:16:08,720 –> 00:16:11,330
ترالیا و استرالیا چندین
408
00:16:11,330 –> 00:16:13,190
منطقه مختلف دارند، من فکر میکنم برخی از آنها
409
00:16:13,190 –> 00:16:14,930
منطقه هستند و برخی از آنها استان هستند،
410
00:16:14,930 –> 00:16:16,880
اما من فقط همه آنها را
411
00:16:16,880 –> 00:16:20,360
منطقه مینامم و کاری که میخواهیم انجام دهیم این است که
412
00:16:20,360 –> 00:16:22,820
میخواهیم هر یک از مناطق مختلف استرالیا را با یک رنگ آمیزی کنیم.
413
00:16:22,820 –> 00:16:25,460
414
00:16:25,460 –> 00:16:27,290
رنگ های مختلف و ما سه
415
00:16:27,290 –> 00:16:29,240
رنگ مختلف خواهیم داشت که می توانیم از آنها استفاده کنیم،
416
00:16:29,240 –> 00:16:34,400
می توانیم از سبز آبی و قرمز استفاده کنیم، بنابراین
417
00:16:34,400 –> 00:16:36,500
سؤال این است که آیا می توانیم رایانه را به
418
00:16:36,500 –> 00:16:38,210
طور خودکار آنها را برای ما رنگ آمیزی کنیم تا ما به عنوان
419
00:16:38,210 –> 00:16:39,470
انسان نیازی به این کار نداشته باشیم.
420
00:16:39,470 –> 00:16:41,180
که این مانند یک مشکل بسیار سخت برای
421
00:16:41,180 –> 00:16:43,280
انجام یک انسان است، در واقع اگر خودتان سعی کنید
422
00:16:43,280 –> 00:16:45,200
آن را با یک نقشه خالی از
423
00:16:45,200 –> 00:16:47,210
استرالیا انجام دهید، احتمالاً می توانید آن را فقط در
424
00:16:47,210 –> 00:16:49,430
چند دقیقه انجام دهید، اما اغلب به عنوان
425
00:16:49,430 –> 00:16:51,260
اولین مشکل و
426
00:16:51,260 –> 00:16:54,020
مشکل رضایت از محدودیت استفاده می شود. حل آموزش
427
00:16:54,020 –> 00:16:56,360
حدس میزنم یا آموزش، زیرا
428
00:16:56,360 –> 00:16:59,960
فکر کردن و استدلال کردن در مورد آن بسیار آسان است، بنابراین اگر به این فکر کنیم
429
00:16:59,960 –> 00:17:02,300
430
00:17:02,300 –> 00:17:05,329
متغیرهای ما چیست و حوزههای ما در اینجا چیست، بنابراین
431
00:17:05,329 –> 00:17:07,970
متغیرها هر یک از مناطق مختلف خواهند بود
432
00:17:07,970 –> 00:17:11,390
و میتوانیم نازک کنیم. k در مورد آنها
433
00:17:11,390 –> 00:17:13,790
فقط رشتههایی در برنامه ما هستند، بنابراین
434
00:17:13,790 –> 00:17:16,609
میتوانند رشتههایی مانند
435
00:17:16,609 –> 00:17:18,109
استرالیای غربی باشند.
436
00:17:18,109 –> 00:17:19,390
437
00:17:19,390 –> 00:17:21,709
438
00:17:21,709 –> 00:17:24,230
439
00:17:24,230 –> 00:17:26,510
این
440
00:17:26,510 –> 00:17:28,010
متغیرها، بنابراین ما سه
441
00:17:28,010 –> 00:17:30,560
رنگ مختلف در اینجا داریم، ما قرمز سبز و آبی داریم،
442
00:17:30,560 –> 00:17:32,360
بنابراین دامنه در واقع
443
00:17:32,360 –> 00:17:34,070
برای هر متغیر یکسان خواهد بود، زیرا
444
00:17:34,070 –> 00:17:36,710
استرالیای غربی
445
00:17:36,710 –> 00:17:38,270
بسته به اینکه چگونه مشکل را حل
446
00:17:38,270 –> 00:17:41,060
کنیم استرالیای جنوبی می تواند سبز قرمز باشد، می تواند قرمز
447
00:17:41,060 –> 00:17:43,100
سبز یا آبی باشد. یا آبی بسته به اینکه اکنون چگونه مشکل را
448
00:17:43,100 –> 00:17:45,290
حل کنیم چه محدودیتی وجود دارد
449
00:17:45,290 –> 00:17:46,700
خوب که در آنجا مشکل در واقع
450
00:17:46,700 –> 00:17:47,990
جالب می شود.
451
00:17:47,990 –> 00:17:49,580
452
00:17:49,580 –> 00:17:50,330
453
00:17:50,330 –> 00:17:52,130
هر یک
454
00:17:52,130 –> 00:17:53,800
از دو منطقه در کنار یکدیگر
455
00:17:53,800 –> 00:17:57,260
دارای یک رنگ هستند، بنابراین می خواهیم
456
00:17:57,260 –> 00:17:59,120
مطمئن شویم که هر دو منطقه در کنار
457
00:17:59,120 –> 00:18:00,920
یکدیگر رنگ متفاوتی دارند، بنابراین ما می خواهیم
458
00:18:00,920 –> 00:18:02,570
استرالیای غربی رنگ متفاوتی
459
00:18:02,570 –> 00:18:04,460
با قلمرو شمالی داشته باشیم، اما ما
460
00:18:04,460 –> 00:18:06,679
همچنین میخواهیم استرالیای غربی
461
00:18:06,679 –> 00:18:08,990
رنگی متفاوت از استرالیای جنوبی داشته باشد، بنابراین
462
00:18:08,990 –> 00:18:11,240
میخواهیم مطمئن شویم که همیشه
463
00:18:11,240 –> 00:18:13,550
دو منطقهای که
464
00:18:13,550 –> 00:18:15,350
همسایه یکدیگر باشند وجود نداشته
465
00:18:15,350 –> 00:18:16,850
باشد که رنگ یکسانی داشته باشند. محدودیت ما باشد
466
00:18:16,850 –> 00:18:18,770
، بنابراین اکنون که یک چارچوب
467
00:18:18,770 –> 00:18:20,780
حل مسئله رضایت از محدودیت داریم،
468
00:18:20,780 –> 00:18:23,450
چگونه میتوانیم
469
00:18:23,450 –> 00:18:27,020
مشکل و محدودیتها را خیلی خوب کدگذاری کنیم،
470
00:18:27,020 –> 00:18:28,820
در واقع فکر میکنم قبل از اینکه
471
00:18:28,820 –> 00:18:30,590
به محدودیت نگاه کنیم، بیایید ببینیم که چگونه
472
00:18:30,590 –> 00:18:33,110
متغیرها را کدگذاری کردهایم، بنابراین متغیرهای من
473
00:18:33,110 –> 00:18:35,960
در اینجا هستند. فقط فهرستی از رشتهها که هر
474
00:18:35,960 –> 00:18:38,480
رشته نشاندهنده یک منطقه از
475
00:18:38,480 –> 00:18:42,140
استرالیا
476
00:18:42,140 –> 00:18:44,030
477
00:18:44,030 –> 00:18:46,040
478
00:18:46,040 –> 00:18:49,220
479
00:18:49,220 –> 00:18:51,770
است.
480
00:18:51,770 –> 00:18:53,059
فقط میخواهیم همه متغیرها را مرور کنیم
481
00:18:53,059 –> 00:18:55,220
و دامنههای قرمز سبز و
482
00:18:55,220 –> 00:18:57,650
آبی را به همه آنها اختصاص دهیم، اکنون
483
00:18:57,650 –> 00:18:59,300
که این چارچوب را در اختیار داریم، به همین راحتی بود.
484
00:18:59,300 –> 00:19:01,400
تعریف متغیرها و محدودیت ها بسیار ساده بود
485
00:19:01,400 –> 00:19:02,450
و ما در واقع
486
00:19:02,450 –> 00:19:04,730
تقریباً کل مشکل را تعریف کرده ایم،
487
00:19:04,730 –> 00:19:07,340
قسمت آخر محدودیت ها است، بنابراین
488
00:19:07,340 –> 00:19:09,080
محدودیت ها این است که ما نمی
489
00:19:09,080 –> 00:19:11,420
خواهیم دو منطقه در کنار یکدیگر
490
00:19:11,420 –> 00:19:16,340
داشته باشیم که رنگ یکسانی داشته باشند. بنابراین قبل از اینکه من بروم
491
00:19:16,340 –> 00:19:17,960
و همه این کدها را برای اضافه کردن
492
00:19:17,960 –> 00:19:19,580
تمام محدودیت ها بررسی کنیم، بیایید ببینیم که چگونه یک
493
00:19:19,580 –> 00:19:22,940
محدودیت در واقع تعریف می شود، بنابراین یک
494
00:19:22,940 –> 00:19:26,450
محدودیت رنگ آمیزی نقشه، زیر کلاسی از
495
00:19:26,450 –> 00:19:27,770
کلاس محدودیت است که قبلاً به آن نگاه
496
00:19:27,770 –> 00:19:30,200
کردیم و به یاد داشته باشید که محدودیتی
497
00:19:30,200 –> 00:19:33,140
که قبلاً گفتیم بود. عمومی از این نظر که
498
00:19:33,140 –> 00:19:35,000
متغیرها و دامنه ها می توانند هر
499
00:19:35,000 –> 00:19:37,130
نوع باشند، اما اکنون در این مشکل ما
500
00:19:37,130 –> 00:19:39,620
انواع خاصی داریم، می دانیم که همه
501
00:19:39,620 –> 00:19:41,360
متغیرها رشته های پایتون
502
00:19:41,360 –> 00:19:43,700
خواهند بود، آنها چیزهایی مانند
503
00:19:43,700 –> 00:19:46,640
قلمرو شمالی استرالیای غربی خواهند بود و می دانیم
504
00:19:46,640 –> 00:19:48,500
که دامنه ها نیز
505
00:19:48,500 –> 00:19:49,850
رشته هایی خواهند بود، آنها چیزهایی مانند
506
00:19:49,850 –> 00:19:54,110
سبز قرمز یا آبی خواهند بود، بنابراین وقتی به
507
00:19:54,110 –> 00:19:55,910
زیر کلاس و محدودیت در اینجا رسیدیم،
508
00:19:55,910 –> 00:19:57,590
اکنون می توانیم انواع را پر کنیم و
509
00:19:57,590 –> 00:19:59,419
رشته نوع متغیر پر می شود
510
00:19:59,419 –> 00:20:01,490
و رشته نیز
511
00:20:01,490 –> 00:20:01,860
512
00:20:01,860 –> 00:20:04,020
برای نوع دامنه پر می شود، بنابراین
513
00:20:04,020 –> 00:20:05,370
یک رنگ نقشه و محدودیت،
514
00:20:05,370 –> 00:20:08,250
محدودیتی بین متغیرهایی با
515
00:20:08,250 –> 00:20:10,080
رشته هایی است که دارای دامنه هایی هستند که
516
00:20:10,080 –> 00:20:12,179
رشته ای هستند و متغیرهای دیگری که
517
00:20:12,179 –> 00:20:13,380
رشته ای هستند. که دارای دامنههایی هستند که رشتهای هستند،
518
00:20:13,380 –> 00:20:16,230
بنابراین وقتی یک محدودیت رنگآمیزی نقشه جدید را مقداردهی میکنیم،
519
00:20:16,230 –> 00:20:18,720
آنچه میخواهیم
520
00:20:18,720 –> 00:20:21,090
ارائه کنیم دو مکان هستند، بنابراین
521
00:20:21,090 –> 00:20:22,950
به یاد داشته باشید که همیشه بین
522
00:20:22,950 –> 00:20:25,559
دو منطقه مجاور استرالیا خواهد بود، بنابراین
523
00:20:25,559 –> 00:20:29,910
مکانهایی مانند شمال
524
00:20:29,910 –> 00:20:32,970
استرالیا و استرالیای غربی خواهد بود.
525
00:20:32,970 –> 00:20:34,620
این مکانهایی مانند ما متاسفیم
526
00:20:34,620 –> 00:20:36,120
منطقه شمالی متاسفم اگر
527
00:20:36,120 –> 00:20:37,860
استرالیاییهایی هستند که به چیزهایی مانند
528
00:20:37,860 –> 00:20:39,570
قلمرو شمالی در استرالیای جنوبی گوش
529
00:20:39,570 –> 00:20:41,070
میدهند، ما همیشه دو نفر از آنها را محدود میکنیم،
530
00:20:41,070 –> 00:20:42,690
بنابراین این مکان یک در
531
00:20:42,690 –> 00:20:45,179
مکان دو است و سپس آنها چگونه
532
00:20:45,179 –> 00:20:48,240
راضی هستند. خوب ما میخواهیم مطمئن شویم
533
00:20:48,240 –> 00:20:51,570
که دامنه
534
00:20:51,570 –> 00:20:53,760
یکسانی ندارند تا رنگ مشابهی نداشته باشند چگونه
535
00:20:53,760 –> 00:20:54,809
بررسی کنیم که دامنه مشابهی ندارند همین
536
00:20:54,809 –> 00:20:56,429
رنگ خوب این خط واقعا ساده است که
537
00:20:56,429 –> 00:20:59,190
در اینجا مساوی نیست با چقدر ساده است
538
00:20:59,190 –> 00:21:01,770
که ما می خواهیم مطمئن شویم که
539
00:21:01,770 –> 00:21:03,780
قرمز برابر با سبز نیست درست می خواهیم کاری کنیم که
540
00:21:03,780 –> 00:21:05,309
قرمز شما با آبی برابر نیست آبی
541
00:21:05,309 –> 00:21:07,110
برابر با سبز نیست ما می خواهیم فقط
542
00:21:07,110 –> 00:21:09,299
مطمئن شوید که آنها یک
543
00:21:09,299 –> 00:21:11,790
رشته نیستند، ممکن است تعجب کنید که چرا این
544
00:21:11,790 –> 00:21:14,970
خط اول در اینجا است، ما حتی نمی توانیم
545
00:21:14,970 –> 00:21:17,700
بررسی کنیم اگر هنوز هر
546
00:21:17,700 –> 00:21:20,130
دوی آنها را اختصاص نداده ایم، برای مثال اگر من اختصاص داده باشم
547
00:21:20,130 –> 00:21:22,620
رنگ برای استرالیای غربی اما
548
00:21:22,620 –> 00:21:24,360
من هنوز رنگی را برای
549
00:21:24,360 –> 00:21:26,460
قلمرو شمالی تعیین نکردهام، پس
550
00:21:26,460 –> 00:21:28,320
واقعاً راهی برای من وجود ندارد که بتوانم
551
00:21:28,320 –> 00:21:30,299
بین آن دو بررسی کنم که آیا این
552
00:21:30,299 –> 00:21:33,540
محدودیت برآورده شده است یا خیر، بنابراین در آن صورت
553
00:21:33,540 –> 00:21:35,730
من فقط درست را برگرداندم زیرا میخواهم
554
00:21:35,730 –> 00:21:38,549
ادامه دهید تا زمانی که واقعاً
555
00:21:38,549 –> 00:21:42,090
نوعی تکلیف برای هر دوی آنها داشته باشم، اما
556
00:21:42,090 –> 00:21:43,410
زمانی که آن را به هر دوی آنها اختصاص ندادم، به
557
00:21:43,410 –> 00:21:44,610
همین سادگی است که فقط بررسی
558
00:21:44,610 –> 00:21:46,260
کنید که تکلیف یکسان نیست، بنابراین
559
00:21:46,260 –> 00:21:49,470
واقعاً ساده است، سپس
560
00:21:49,470 –> 00:21:50,669
کدی برای اضافه کردن همه آنها وجود دارد.
561
00:21:50,669 –> 00:21:52,740
کنسترا ints اکنون این بخش به صورت دستی درست انجام شده است،
562
00:21:52,740 –> 00:21:54,870
بنابراین هیچ راهی وجود نداشت که به
563
00:21:54,870 –> 00:21:56,549
طور خودکار بدانم که
564
00:21:56,549 –> 00:21:57,780
جالب بود شاید اگر از یادگیری ماشینی استفاده می کردم
565
00:21:57,780 –> 00:21:59,580
و در فایل نقشه مطالعه می کردم و به
566
00:21:59,580 –> 00:22:01,080
طور خودکار متوجه می شدم که این
567
00:22:01,080 –> 00:22:03,330
منطقه این نام را دارد و در کنار
568
00:22:03,330 –> 00:22:05,130
این منطقه که این نام است، اما در اینجا
569
00:22:05,130 –> 00:22:07,049
ما فقط به صورت دستی این اساساً
570
00:22:07,049 –> 00:22:09,210
نقشه ما است، ما به صورت دستی
571
00:22:09,210 –> 00:22:11,160
محدودیت هایی را برای هر یک از مناطق مجاور
572
00:22:11,160 –> 00:22:13,169
اضافه می کنیم، بنابراین ما در غرب
573
00:22:13,169 –> 00:22:15,429
استرالیا به برج شمالی
574
00:22:15,429 –> 00:22:18,220
و غیره از سمت راست ویکتوریا تا نیو ساوت
575
00:22:18,220 –> 00:22:20,110
ولز اضافه می کنیم. از آنجایی که آنها در کنار یکدیگر از
576
00:22:20,110 –> 00:22:22,450
ویکتوریا تا تاسمانی هستند، بنابراین هر دو که مجاور هستند،
577
00:22:22,450 –> 00:22:23,919
باید یک محدودیت
578
00:22:23,919 –> 00:22:25,629
بین آنها داشته باشیم، بنابراین ما فقط در
579
00:22:25,629 –> 00:22:27,940
اینجا همه این محدودیت ها را اضافه کرده ایم، سپس فقط
580
00:22:27,940 –> 00:22:29,830
روش هایی را بر روی آنچه قبلا تعریف کرده بودیم فراخوانی می
581
00:22:29,830 –> 00:22:31,450
کنیم.
582
00:22:31,450 –> 00:22:33,909
کلاس رضایت از محدودیت را برای
583
00:22:33,909 –> 00:22:35,620
داشتن روش جستجوی پسرفتی تعریف
584
00:22:35,620 –> 00:22:37,960
کردیم که ما فقط در جستجوی آن هستیم و اگر
585
00:22:37,960 –> 00:22:39,909
راه حلی پیدا کردیم راه حل را چاپ می کنیم
586
00:22:39,909 –> 00:22:41,559
و اگر
587
00:22:41,559 –> 00:22:43,629
راه حلی پیدا نکردیم آن را چاپ می کنیم. هیچ راه حلی پیدا نشد،
588
00:22:43,629 –> 00:22:45,639
پس اجازه دهید آن را اجرا کنم،
589
00:22:45,639 –> 00:22:48,940
ببینیم نتایج چگونه به نظر می رسند تا آنها را با موفقیت رنگ آمیزی کرد،
590
00:22:48,940 –> 00:22:50,440
بنابراین اول از همه بدانیم
591
00:22:50,440 –> 00:22:51,940
که چون فقط چاپ نشده است،
592
00:22:51,940 –> 00:22:55,659
راه حلی پیدا نشده است و راه حل این است که
593
00:22:55,659 –> 00:22:59,259
استرالیای غربی باید قرمز باشد.
594
00:22:59,259 –> 00:23:01,779
قلمرو شمالی باید سبز باشد
595
00:23:01,779 –> 00:23:05,679
استرالیای جنوبی باید آبی و غیره و غیره باشد و
596
00:23:05,679 –> 00:23:07,570
اگر به اینجا نگاه کنید این
597
00:23:07,570 –> 00:23:10,720
همان چیزی است که ما الیس در
598
00:23:10,720 –> 00:23:12,100
نمودار در کتاب به آن پرداخته ایم،
599
00:23:12,100 –> 00:23:14,919
بدیهی است که یک راه حل است، بنابراین خوب ممکن است بگویید
600
00:23:14,919 –> 00:23:17,559
که خیلی به نظر می رسد. کار برای حل
601
00:23:17,559 –> 00:23:20,379
آن مشکل که به نظر می رسید شما
602
00:23:20,379 –> 00:23:23,169
تنظیمات زیادی را در آنجا انجام داده اید، آماده سازی زیادی
603
00:23:23,169 –> 00:23:26,169
برای حل مشکلی که به نظر می رسد آنقدرها
604
00:23:26,169 –> 00:23:29,200
سخت نیست، به خوبی چیزی که فکر می کنم در اینجا جالب تر است
605
00:23:29,200 –> 00:23:31,570
این است که چگونه می توانیم از
606
00:23:31,570 –> 00:23:33,399
همان فریم ورک در حال حاضر برای حل مسائل مختلف دوباره استفاده کنیم.
607
00:23:33,399 –> 00:23:35,769
انواع مشکلات، بنابراین بیایید
608
00:23:35,769 –> 00:23:38,440
دو یا سه مشکل دیگر را
609
00:23:38,440 –> 00:23:40,119
که کاملاً متفاوت از مسئله رنگ آمیزی نقشه هستند،
610
00:23:40,119 –> 00:23:42,490
با استفاده از همان چارچوب دقیق حل
611
00:23:42,490 –> 00:23:45,700
کنیم و کاری که برای آن انجام خواهم داد این است که
612
00:23:45,700 –> 00:23:47,619
به نمودار بعدی می روم. بنابراین ما
613
00:23:47,619 –> 00:23:51,190
میتوانیم مشکل بعدی را نشان دهیم، بنابراین این
614
00:23:51,190 –> 00:23:52,619
مسئله هشت کوئینز نامیده میشود،
615
00:23:52,619 –> 00:23:55,090
در اینجا چالشی است که شما یک
616
00:23:55,090 –> 00:23:58,809
صفحه شطرنج دارید و کاری که میخواهید انجام دهید این است که
617
00:23:58,809 –> 00:24:01,720
میخواهید در واقع هشت ملکه را روی
618
00:24:01,720 –> 00:24:03,759
صفحه شطرنج قرار دهید تا هیچ یک از آنها
619
00:24:03,759 –> 00:24:05,860
یکدیگر را تهدید نکنند. یا
620
00:24:05,860 –> 00:24:07,360
بسته به حرف شما به یکدیگر حمله کنید،
621
00:24:07,360 –> 00:24:09,820
بنابراین این یک راه حل بالقوه واقعی
622
00:24:09,820 –> 00:24:11,350
در اینجا برای کسانی است که یا
623
00:24:11,350 –> 00:24:14,080
به روشی که کوئینز کار می کند شطرنج بازی نمی کند، آنها
624
00:24:14,080 –> 00:24:15,970
در واقع می توانند هم به صورت مورب
625
00:24:15,970 –> 00:24:18,159
حرکت کنند و هم می توانند به صورت عمودی و
626
00:24:18,159 –> 00:24:21,279
افقی در سراسر ستون ها حرکت کنند.
627
00:24:21,279 –> 00:24:22,869
ردیفها قویترین قطعه در
628
00:24:22,869 –> 00:24:25,149
بازی هستند و میتوانند
629
00:24:25,149 –> 00:24:27,220
از روی تخته به سمت هر مربعی که
630
00:24:27,220 –> 00:24:28,120
داخل
631
00:24:28,120 –> 00:24:29,650
مورب است که توسط چیزی
632
00:24:29,650 –> 00:24:34,240
در یک ردیف یا ستون مسدود نشده است حرکت کنند، بنابراین در این مورد
633
00:24:34,240 –> 00:24:36,040
اگر موربها را دنبال کنید، فرض کنید اگر
634
00:24:36,040 –> 00:24:39,100
635
00:24:39,100 –> 00:24:43,030
مورب ها را دنبال کنید یا ردیف اینجا
636
00:24:43,030 –> 00:24:44,410
یا ستون را دنبال کنید، ملکه را در c7 دنبال می کنیم، می بینید که
637
00:24:44,410 –> 00:24:47,190
ملکه دیگری در هیچ یک از آن مکان ها
638
00:24:47,190 –> 00:24:52,300
وجود ندارد، بنابراین این یک سوال است. این
639
00:24:52,300 –> 00:24:54,880
بخش خوبی از یک راه حل برای
640
00:24:54,880 –> 00:24:56,140
مشکل ملکه است زیرا
641
00:24:56,140 –> 00:24:57,760
تهدید یا حمله به
642
00:24:57,760 –> 00:24:59,860
ملکه های دیگری نیست، بنابراین سوال این است که آیا می توانیم
643
00:24:59,860 –> 00:25:01,900
هر هشت نفر از آنها را بدون
644
00:25:01,900 –> 00:25:04,720
تهدید یا حمله به
645
00:25:04,720 –> 00:25:06,850
ملکه های دیگر روی تخته قرار دهیم. در واقع بیش
646
00:25:06,850 –> 00:25:08,290
از یک راه حل برای این مشکل
647
00:25:08,290 –> 00:25:09,490
وجود دارد، بنابراین در واقع تخته های مختلف زیادی وجود دارد
648
00:25:09,490 –> 00:25:12,100
که تخته های ملکه را در
649
00:25:12,100 –> 00:25:13,750
مکان های مختلف دارند که با موفقیت
650
00:25:13,750 –> 00:25:15,550
یک مشکل را حل می کند، اما ما فقط می
651
00:25:15,550 –> 00:25:17,320
خواهیم یک راه حل پیدا کنیم آیا می توانیم فقط
652
00:25:17,320 –> 00:25:20,230
یک راه حل برای این مشکل پیدا
653
00:25:20,230 –> 00:25:22,180
کنیم، بنابراین ما به CSP برنمی گردیم زیرا ما
654
00:25:22,180 –> 00:25:23,410
قبلاً حل کرده ایم که این
655
00:25:23,410 –> 00:25:25,210
چیز عالی است، ما قبلاً می دانیم که یک
656
00:25:25,210 –> 00:25:26,800
مشکل رضایت از محدودیت چگونه به نظر می
657
00:25:26,800 –> 00:25:28,840
رسد آنچه می توانیم انجام دهیم این است که اکنون می
658
00:25:28,840 –> 00:25:30,850
توانیم انواع مختلفی از محدودیت ها را تعریف کنیم
659
00:25:30,850 –> 00:25:33,160
و سپس می توانیم انواع کاملاً متفاوتی را حل کنیم.
660
00:25:33,160 –> 00:25:35,350
بنابراین با استفاده از چارچوب یکسان
661
00:25:35,350 –> 00:25:38,080
، در اینجا ما یک محدودیت کوئینز داریم
662
00:25:38,080 –> 00:25:40,690
و یک محدودیت کوئینز
663
00:25:40,690 –> 00:25:42,640
قرار است Queen B بین متغیرهایی باشد
664
00:25:42,640 –> 00:25:44,920
که اعداد صحیح هستند و دامنههایی که
665
00:25:44,920 –> 00:25:48,520
اعداد صحیح هستند چرا ما
666
00:25:48,520 –> 00:25:51,850
واقعاً میتوانیم در مورد متغیرهایی در
667
00:25:51,850 –> 00:25:54,660
این مورد فکر کنیم که ستونهای پتانسیل متفاوتی هستند
668
00:25:54,660 –> 00:25:58,330
که ملکه
669
00:25:58,330 –> 00:26:00,640
میتواند روی آن باشد، به طوری که میتواند مانند ستونهای a
670
00:26:00,640 –> 00:26:03,160
تا 8 در این تابلو باشد یا فقط از
671
00:26:03,160 –> 00:26:05,200
اعداد صحیح استفاده کنیم. و میدانید که در محاسبات، ما
672
00:26:05,200 –> 00:26:07,270
معمولاً از 0 درست شروع به شمارش میکنیم، بنابراین
673
00:26:07,270 –> 00:26:08,860
میتوانیم آن را به عنوان ستون 0 تا 7 در نظر بگیریم
674
00:26:08,860 –> 00:26:11,020
و همان چیزی را برای
675
00:26:11,020 –> 00:26:12,550
ردیفهای سمت راست، میتوانیم به
676
00:26:12,550 –> 00:26:14,620
عنوان ردیفهای 0 تا 7 در نظر بگیریم یا ممکن است
677
00:26:14,620 –> 00:26:16,360
واقعاً 1 را انجام داده باشم. از طریق 8 در کد،
678
00:26:16,360 –> 00:26:18,400
باید به خودم یادآوری کنم که من 1 تا 8 را انجام دادم،
679
00:26:18,400 –> 00:26:20,830
بنابراین 1 تا 8 می توانند ستون ها و 1
680
00:26:20,830 –> 00:26:25,630
تا 8 می توانند ردیف ها باشند، بنابراین CSP
681
00:26:25,630 –> 00:26:27,760
سپس
682
00:26:27,760 –> 00:26:30,550
هر یک از کوئین ها را در ستون های مختلف مرتبط می کند
683
00:26:30,550 –> 00:26:32,350
و به هر حال ما می دانیم که همه کوئین
684
00:26:32,350 –> 00:26:34,120
ها باید روی ستون های مختلف باشند،
685
00:26:34,120 –> 00:26:35,800
زیرا اگر هر یک از کوئین ها روی
686
00:26:35,800 –> 00:26:37,060
ستون های مشابهی قرار می گرفتند به یکدیگر حمله می
687
00:26:37,060 –> 00:26:38,920
کردند، بنابراین ما می دانیم که
688
00:26:38,920 –> 00:26:40,930
این مانند یک ترفند کوچک است که
689
00:26:40,930 –> 00:26:41,799
باید هر کدام را انجام دهیم.
690
00:26:41,799 –> 00:26:43,840
ملکه جدا ستون سمت راست، اما چیزی که ما
691
00:26:43,840 –> 00:26:45,639
نمی دانیم این است که همه آنها را در کدام ردیف
692
00:26:45,639 –> 00:26:47,529
قرار دهیم، وقتی همه آنها
693
00:26:47,529 –> 00:26:51,700
را در ستون های جداگانه قرار دادیم، او از ما پنهان می
694
00:26:51,700 –> 00:26:55,929
کند خوشحالم که شما را از اسپانیا می بینم تا بدانیم
695
00:26:55,929 –> 00:26:57,639
که همه این ملکه های مختلف در
696
00:26:57,639 –> 00:26:59,710
ستون های مختلف قرار دارند چگونه
697
00:26:59,710 –> 00:27:01,570
دوباره ردیف سمت راست را به خوبی پیدا کنیم، فقط می توانیم
698
00:27:01,570 –> 00:27:03,970
از CSP ما بخواهیم که یک جستجوی عقبگرد برای
699
00:27:03,970 –> 00:27:06,399
حل آن انجام دهد، بنابراین همه
700
00:27:06,399 –> 00:27:08,529
ستون ها را به عنوان متغیرهای خود تنظیم کرده ایم و
701
00:27:08,529 –> 00:27:11,139
سطرهای ممکن مختلف را به عنوان خود تنظیم کرده ایم.
702
00:27:11,139 –> 00:27:14,200
دامنهها و سپس ما فقط یک CSP را پیادهسازی
703
00:27:14,200 –> 00:27:15,999
میکنیم که مشکل رضایت از محدودیت ما را
704
00:27:15,999 –> 00:27:17,769
دارد که دارای ستونهایی برای
705
00:27:17,769 –> 00:27:20,499
ردیفهای متغیر برای دامنهها است،
706
00:27:20,499 –> 00:27:22,539
اما پس از آن باید
707
00:27:22,539 –> 00:27:24,609
محدودیت را اضافه کنیم و این بار متوجه میشوید
708
00:27:24,609 –> 00:27:26,139
که نوع دیگری از محدودیت است.
709
00:27:26,139 –> 00:27:29,169
در مسئله رنگ آمیزی نقشه که
710
00:27:29,169 –> 00:27:31,119
قبل از آن به آن نگاه کردیم، محدودیت
711
00:27:31,119 –> 00:27:34,450
همیشه بین دو مکان مختلف
712
00:27:34,450 –> 00:27:36,309
روی نقشه دو منطقه مختلف
713
00:27:36,309 –> 00:27:39,940
استرالیا بود، اکنون این مشکل
714
00:27:39,940 –> 00:27:42,399
محدودیت در واقع بین همه
715
00:27:42,399 –> 00:27:44,440
متغیرهای مختلف به طور همزمان است. درست است
716
00:27:44,440 –> 00:27:46,659
، محدودیت در واقع این است که ما باید
717
00:27:46,659 –> 00:27:48,369
همزمان به هر ملکه نگاه
718
00:27:48,369 –> 00:27:49,869
کنیم، زیرا ما فقط به دو نفر در
719
00:27:49,869 –> 00:27:51,879
یک زمان نگاه نمی کنیم، خوب است اگر دو نفر از آنها
720
00:27:51,879 –> 00:27:53,679
به یکدیگر حمله نکنند، اما ما می خواهیم که
721
00:27:53,679 –> 00:27:56,080
هر کدام از آنها نباشند. حمله به تمام
722
00:27:56,080 –> 00:27:59,019
کوئین های دیگر، بنابراین در اینجا یک نوع محدودیت متفاوت است،
723
00:27:59,019 –> 00:28:00,789
724
00:28:00,789 –> 00:28:02,710
این یک محدودیت است که در آن ما در
725
00:28:02,710 –> 00:28:05,409
واقع به فهرستی از همه
726
00:28:05,409 –> 00:28:08,799
کوئین های بالقوه مختلف نگاه می کنیم، بنابراین چگونه این
727
00:28:08,799 –> 00:28:10,570
محدودیت را برآورده کنیم چگونه
728
00:28:10,570 –> 00:28:12,970
یک محدودیت بین همه موارد
729
00:28:12,970 –> 00:28:15,879
ممکن را برآورده کنیم. کوئینهای مختلف فکر نمیکنم
730
00:28:15,879 –> 00:28:17,230
مشکلات دیگری وجود داشته باشد که بخواهم آنها را
731
00:28:17,230 –> 00:28:18,249
پوشش دهم، بنابراین فکر نمیکنم مجبور باشیم با
732
00:28:18,249 –> 00:28:19,509
جزئیات زیادی از
733
00:28:19,509 –> 00:28:22,389
این موضوع عبور کنیم، اما کمی
734
00:28:22,389 –> 00:28:24,820
بعد به ستون موجود در آن نگاه میکنیم. ردیف
735
00:28:24,820 –> 00:28:26,679
هر ملکه و بنابراین شما می توانید در مورد
736
00:28:26,679 –> 00:28:29,109
آن به عنوان اولین ملکه فکر کنید، بنابراین این مانند
737
00:28:29,109 –> 00:28:31,419
ملکه یک ستون است ملکه یک ردیف
738
00:28:31,419 –> 00:28:34,960
منظور من از q1 است، ببینید q1 اینجا هستند، سپس
739
00:28:34,960 –> 00:28:37,509
به هر یک از ملکه های دیگر نگاه می کنیم و
740
00:28:37,509 –> 00:28:40,480
بنابراین من به نام ملکه های دیگر مانند q2
741
00:28:40,480 –> 00:28:44,230
C ملکه است دو ستون و ملکه دو ردیف، بنابراین
742
00:28:44,230 –> 00:28:45,999
ما در نهایت به Q 1 C و
743
00:28:45,999 –> 00:28:49,389
Q 1 برای یک ملکه نگاه می کنیم و سپس Q 2 C و
744
00:28:49,389 –> 00:28:51,700
Q 2 R هر یک از ملکه های دیگر خواهند بود،
745
00:28:51,700 –> 00:28:53,710
بنابراین در مجموع هشت ملکه داریم.
746
00:28:53,710 –> 00:28:55,600
درست است
747
00:28:55,600 –> 00:28:59,530
بنابراین اولین ملکه همیشه q1 C
748
00:28:59,530 –> 00:29:01,600
و q1 هستند و سپس هفت
749
00:29:01,600 –> 00:29:04,570
ملکه دیگر یکی یکی از Q به C
750
00:29:04,570 –> 00:29:08,650
و Q تا R هستند. حداکثر خوب است که شما را ببینم بنابراین
751
00:29:08,650 –> 00:29:13,360
داشتن q1 C و q1 با q2 همراه هستند.
752
00:29:13,360 –> 00:29:15,700
C و Q به R می توانیم آنها را با هم مقایسه
753
00:29:15,700 –> 00:29:17,010
کنیم و دوباره مانند
754
00:29:17,010 –> 00:29:19,090
مشکل رنگ آمیزی نقشه استرالیا، یک
755
00:29:19,090 –> 00:29:20,950
جک ساده است، فقط باید بررسی
756
00:29:20,950 –> 00:29:23,080
کنیم که یکسان نیستند اگر
757
00:29:23,080 –> 00:29:25,180
یکسان هستند که خوب نیست، یعنی ما
758
00:29:25,180 –> 00:29:26,470
داریم اگر
759
00:29:26,470 –> 00:29:29,020
دو ملکه در یک ردیف داشته باشیم، مشکل حل نشده است، بدیهی است که
760
00:29:29,020 –> 00:29:30,670
مشکل را حل نکردهایم،
761
00:29:30,670 –> 00:29:33,070
بررسی دیگر در اینجا برای مورب است و استفاده از
762
00:29:33,070 –> 00:29:35,350
مقادیر مطلق در اینجا فقط یک راه سریع برای
763
00:29:35,350 –> 00:29:37,330
بررسی اینکه آیا این دو در یک
764
00:29:37,330 –> 00:29:39,400
مورب هستند یا نه به عبارت دیگر در اینجا ما به هم
765
00:29:39,400 –> 00:29:41,200
وصل می کنیم این دو ملکه در
766
00:29:41,200 –> 00:29:43,060
یک ردیف هستند آنها در همان ردیف هستند که
767
00:29:43,060 –> 00:29:44,560
g نیست ما مشکل را حل نکردیم و
768
00:29:44,560 –> 00:29:45,940
سپس در مورد دوم فقط بررسی می کنیم که
769
00:29:45,940 –> 00:29:48,070
آیا این دو ملکه در
770
00:29:48,070 –> 00:29:49,990
یک مورب هستند اگر روی یک
771
00:29:49,990 –> 00:29:51,670
مورب باشند، ما نیز مشکل را حل نکردیم،
772
00:29:51,670 –> 00:29:52,120
773
00:29:52,120 –> 00:29:54,160
اما اگر آنها در یک مورب نباشند. همان ردیف
774
00:29:54,160 –> 00:29:55,840
و در یک مورب نیستند و
775
00:29:55,840 –> 00:29:57,520
پس از آن ما از مقایسه این
776
00:29:57,520 –> 00:29:59,980
ملکه با تمام کوئینهای دیگر عبور کردهایم، سپس
777
00:29:59,980 –> 00:30:02,200
مشکل را با موفقیت حل کردهایم و این
778
00:30:02,200 –> 00:30:04,630
بدان معنی است که ما به درستی برمیگردیم، بنابراین دوباره
779
00:30:04,630 –> 00:30:06,730
یک مقایسه ساده و ماشینآلات است.
780
00:30:06,730 –> 00:30:08,530
برای انجام تمام
781
00:30:08,530 –> 00:30:10,420
جستجوها قبلاً با عقب نشینی جستجو
782
00:30:10,420 –> 00:30:12,640
در مسئله رضایت محدودیت اجرا شده است،
783
00:30:12,640 –> 00:30:15,760
بنابراین در اینجا میتوانیم نوع کاملاً متفاوتی
784
00:30:15,760 –> 00:30:18,100
از مشکل را انجام دهیم و با استفاده از همان چارچوب آن را حل کنیم،
785
00:30:18,100 –> 00:30:19,630
بنابراین اجازه دهید
786
00:30:19,630 –> 00:30:23,500
این را اجرا کنم و خواهیم دید که اکنون چه چیزی به دست میآوریم.
787
00:30:23,500 –> 00:30:24,730
ممکن است کمی مرموز به نظر برسد، اما
788
00:30:24,730 –> 00:30:27,700
آنچه در اینجا وجود دارد این است که هر ملکه
789
00:30:27,700 –> 00:30:30,610
در یک ستون بالقوه با ردیفی
790
00:30:30,610 –> 00:30:32,020
است که باید روی آن باشد تا مشکل حل شود،
791
00:30:32,020 –> 00:30:34,420
بنابراین ما در اینجا حل کردیم که ملکه
792
00:30:34,420 –> 00:30:36,250
ملکه در ستون یک باید در ردیف یک باشد
793
00:30:36,250 –> 00:30:38,290
، Q ueen در ستون دو باید در ردیف
794
00:30:38,290 –> 00:30:40,330
پنج باشد، ملکه در ستون سه باید
795
00:30:40,330 –> 00:30:41,890
در ردیف هشت باشد و اگر همه
796
00:30:41,890 –> 00:30:42,910
اینها را دنبال کنیم و آنها را روی صفحه شطرنج بگذاریم،
797
00:30:42,910 –> 00:30:44,980
آنها به یکدیگر حمله
798
00:30:44,980 –> 00:30:47,140
نمی کنند و موقعیتی به دست می آوریم که
799
00:30:47,140 –> 00:30:49,870
شبیه نمودار نهایی ما است. در اینجا
800
00:30:49,870 –> 00:30:52,720
که تمام کوئین ها در مکان هایی
801
00:30:52,720 –> 00:30:54,040
هستند که به هیچ کوئین دیگری حمله نمی کنند،
802
00:30:54,040 –> 00:30:56,440
بنابراین امیدوارم ببینید که حداقل در
803
00:30:56,440 –> 00:30:58,240
ذهن من این مشکل کاملاً متفاوت
804
00:30:58,240 –> 00:31:00,400
از مشکل رنگ آمیزی نقشه استرالیا
805
00:31:00,400 –> 00:31:02,470
است، اما به این دلیل که ما می توانیم
806
00:31:02,470 –> 00:31:04,990
آن را به دامنههای متغیرها و
807
00:31:04,990 –> 00:31:07,540
محدودیتها تقسیم میکنیم، میتوانیم آن را با استفاده از همان چارچوب عمومی حل کنیم،
808
00:31:07,540 –> 00:31:09,080
809
00:31:09,080 –> 00:31:11,809
خب، بیایید یک مشکل دیگر را امتحان کنیم، بنابراین ما
810
00:31:11,809 –> 00:31:13,399
مسئله رنگآمیزی نقشه استرالیا
811
00:31:13,399 –> 00:31:16,820
را انجام دادیم، ما هشت مسئله کوئینز را انجام دادیم
812
00:31:16,820 –> 00:31:18,559
که هر دو مسائل بسیار کلاسیک
813
00:31:18,559 –> 00:31:20,360
هستند. در اینجا یک مشکل وجود دارد که هر کسی
814
00:31:20,360 –> 00:31:22,249
که من کنجکاو هستم با آن آشنا هستم جستجوی کلمه است،
815
00:31:22,249 –> 00:31:25,090
بنابراین در این مشکل ما
816
00:31:25,090 –> 00:31:27,230
کلمات مختلفی داریم که می خواهیم آنها را در یک
817
00:31:27,230 –> 00:31:29,720
شبکه از حروف قرار دهیم و می خواهیم آن را
818
00:31:29,720 –> 00:31:32,419
طوری بسازیم که کلمات ساق باشند. در داخل
819
00:31:32,419 –> 00:31:36,789
شبکه حروف متحد شوید بدون اینکه
820
00:31:36,789 –> 00:31:39,139
لزوماً یکدیگر را به دلیل نداشتن
821
00:31:39,139 –> 00:31:41,299
کلمه بهتری نادیده بگیریم، بنابراین آنها باید با خیال راحت
822
00:31:41,299 –> 00:31:44,359
همه بتوانند با موفقیت در آن جا قرار گیرند،
823
00:31:44,359 –> 00:31:46,909
بنابراین چگونه می توانیم کلمات با اندازه های مختلف
824
00:31:46,909 –> 00:31:50,090
را در این شبکه قرار دهیم اساساً چالش این شبکه است.
825
00:31:50,090 –> 00:31:52,789
مشکل جستجوی کلمه
826
00:31:52,789 –> 00:31:54,109
اکنون کمی بیشتر درگیر است
827
00:31:54,109 –> 00:31:55,909
و بنابراین فکر میکنم میخواهم
828
00:31:55,909 –> 00:31:58,249
طرح کلی آن و نحوه
829
00:31:58,249 –> 00:32:00,499
استفاده از چارچوب مشکل رضایت از محدودیت را بررسی
830
00:32:00,499 –> 00:32:04,220
کنم، اما شاید جزییات نحوه ساخت ما را بررسی نکنم.
831
00:32:04,220 –> 00:32:06,489
832
00:32:06,489 –> 00:32:10,340
همه بخشهای آن را باز کنم،
833
00:32:10,340 –> 00:32:12,109
متأسفم که به فصل اشتباه رفتم،
834
00:32:12,109 –> 00:32:14,659
جستجوی کلمه شبیه
835
00:32:14,659 –> 00:32:15,499
برنامهنویسی
836
00:32:15,499 –> 00:32:18,080
خطی است، بله، برنامهریزی خطی را میتوان
837
00:32:18,080 –> 00:32:21,230
به عنوان یک تکنیک پیشرفتهتر از این
838
00:32:21,230 –> 00:32:23,809
جستجوی پسگرد عمومی برای حل
839
00:32:23,809 –> 00:32:25,279
مشکلات رضایت از محدودیت در نظر گرفت.
840
00:32:25,279 –> 00:32:26,960
بله، در برنامه نویسی خطی، شما محدودیت هایی بین متغیرها نیز دارید،
841
00:32:26,960 –> 00:32:29,059
842
00:32:29,059 –> 00:32:30,859
معمولاً محدودیت های منطقی بین
843
00:32:30,859 –> 00:32:32,960
متغیرها وجود دارد و بنابراین یک مقدار بسیار زیاد وجود دارد.
844
00:32:32,960 –> 00:32:34,730
همپوشانی قابل توجهی بین
845
00:32:34,730 –> 00:32:36,559
مسائل رضایت از محدودیت و
846
00:32:36,559 –> 00:32:39,019
برنامه نویسی خطی این یک سوال عالی است،
847
00:32:39,019 –> 00:32:43,850
بنابراین برای پیدا کردن یک جستجوی کلمه
848
00:32:43,850 –> 00:32:46,549
در این مورد، ما چند
849
00:32:46,549 –> 00:32:48,590
کلاس کمکی مختلف داریم، ما یک مکان شبکه داریم
850
00:32:48,590 –> 00:32:51,350
که مانند یک مکان در
851
00:32:51,350 –> 00:32:53,029
شبکه جستجوی کلمه در جایی یک ردیف است. در یک
852
00:32:53,029 –> 00:32:56,720
ستون ما همچنین یک شبکه داریم و یک شبکه
853
00:32:56,720 –> 00:33:00,169
فقط دو بعدی خواهد بود که در
854
00:33:00,169 –> 00:33:01,399
زبان های برنامه نویسی دیگر
855
00:33:01,399 –> 00:33:04,669
آرایه دو بعدی می نامیم اما در پایتون
856
00:33:04,669 –> 00:33:06,049
آن را لیست لیست ها می نامیم،
857
00:33:06,049 –> 00:33:09,139
بنابراین لیستی از رشته ها که هر کدام
858
00:33:09,139 –> 00:33:10,669
رشته در واقع فقط یک
859
00:33:10,669 –> 00:33:12,409
حرف خواهد بود، بنابراین من می توانستم از یک
860
00:33:12,409 –> 00:33:13,850
کاراکتر یا چیزی شبیه به آن استفاده کنم،
861
00:33:13,850 –> 00:33:15,739
اما در واقع فقط یک حرف منفرد
862
00:33:15,739 –> 00:33:19,309
در جایی در شبکه است، بنابراین با داشتن شبکه
863
00:33:19,309 –> 00:33:21,590
ای از حروف دارای مکان در شبکه،
864
00:33:21,590 –> 00:33:22,909
سپس شروع به داشتن
865
00:33:22,909 –> 00:33:24,559
روش ها می کنیم. برای ساختن یک شبکه و
866
00:33:24,559 –> 00:33:25,999
باز هم با جزئیات زیاد وارد همه اینها
867
00:33:25,999 –> 00:33:27,769
نمیشوم، اما کاری که این
868
00:33:27,769 –> 00:33:29,419
کار اساسا انجام میدهد ایجاد یک
869
00:33:29,419 –> 00:33:32,149
شبکه تصادفی با استفاده از چیزهای زیبای داخلی
870
00:33:32,149 –> 00:33:33,849
پایتون است. کتابخانه استاندارد
871
00:33:33,849 –> 00:33:36,919
و این فقط یک شبکه نمایش می دهد و
872
00:33:36,919 –> 00:33:39,320
فقط همه آن را چاپ می کند، سپس
873
00:33:39,320 –> 00:33:41,179
به قسمت هایی می رسیم که در واقع به یک
874
00:33:41,179 –> 00:33:43,609
مشکل رضایت محدودیت مربوط می شوند، بنابراین
875
00:33:43,609 –> 00:33:46,879
ایجاد دامنه تولید دامنه می
876
00:33:46,879 –> 00:33:49,070
رود و یک متغیر بالقوه را کشف می
877
00:33:49,070 –> 00:33:50,450
کند و من باید می گفتم.
878
00:33:50,450 –> 00:33:51,919
چه متغیری در این چاه وجود دارد، اجازه دهید از شما
879
00:33:51,919 –> 00:33:53,629
بخواهم برای یک ثانیه در مورد آن فکر کنید، همانطور که من
880
00:33:53,629 –> 00:33:55,220
به مشکل برمی گردم اینجا که در
881
00:33:5