در این مطلب، ویدئو نحوه پیاده سازی Depth-First Search در پایتون | اولین جستجوی عمق در پایتون | الگوریتم DFS با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:12:12
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,240 –> 00:00:02,080
بنابراین در آموزش امروز ما قصد داریم در
2
00:00:02,080 –> 00:00:04,640
مورد معکوس کردن پیوند با استفاده از لیست آژانس پوشش دهیم،
3
00:00:04,640 –> 00:00:05,440
4
00:00:05,440 –> 00:00:07,200
بنابراین اساساً در آموزش امروز ما می
5
00:00:07,200 –> 00:00:10,400
خواهیم اولین جستجوی عمق uh
6
00:00:10,400 –> 00:00:13,120
پیمایش بازگشتی را پوشش دهیم، بنابراین این یکی
7
00:00:13,120 –> 00:00:15,280
از راه های پیمایش یک نمودار
8
00:00:15,280 –> 00:00:17,279
است، اولین جستجوی عمقی است. و
9
00:00:17,279 –> 00:00:19,680
دیگری جستجوی وسعت است، بنابراین
10
00:00:19,680 –> 00:00:21,840
تفاوت اساسی بین این دو که
11
00:00:21,840 –> 00:00:24,720
قبلاً به شما گفتم که dfs
12
00:00:24,720 –> 00:00:26,320
از
13
00:00:26,320 –> 00:00:28,000
stack
14
00:00:28,000 –> 00:00:31,240
و recursion
15
00:00:32,640 –> 00:00:34,239
16
00:00:34,239 –> 00:00:36,239
استفاده می کند و bfs از هیدراتاسیون استفاده می کند،
17
00:00:36,239 –> 00:00:38,480
18
00:00:38,480 –> 00:00:39,680
بنابراین این یکی از موارد
19
00:00:39,680 –> 00:00:41,680
مختلف تکرار به اضافه
20
00:00:41,680 –> 00:00:43,600
q است،
21
00:00:43,600 –> 00:00:45,600
بنابراین این دو پیمایشی است که ما
22
00:00:45,600 –> 00:00:47,840
می رویم. برای یادگیری اما در
23
00:00:47,840 –> 00:00:49,120
آموزش امروز ما قرار است در مورد اولین جستجو یاد بگیریم،
24
00:00:49,120 –> 00:00:51,360
بنابراین این اولین جستجوی عمیق است
25
00:00:51,360 –> 00:00:53,680
که امروز می خواهیم انجام دهیم، بنابراین بیایید
26
00:00:53,680 –> 00:00:56,399
با آموزش شروع کنیم، بنابراین
27
00:00:56,399 –> 00:00:57,840
این نمودار ما بود
28
00:00:57,840 –> 00:00:59,039
و
29
00:00:59,039 –> 00:01:02,399
یک فایل به نام dfs.py در این
30
00:01:02,399 –> 00:01:04,080
ما قصد داریم اولین آموزش جستجوی عمق را پوشش دهیم
31
00:01:04,080 –> 00:01:06,240
و در اینجا می توانید ببینید که
32
00:01:06,240 –> 00:01:09,680
ما یک نمودار داریم بنابراین اساساً ما
33
00:01:09,680 –> 00:01:12,560
هفت راس هفت راس و نه یال داریم بنابراین
34
00:01:12,560 –> 00:01:14,799
هفت راس یک دو سه چهار پنج
35
00:01:14,799 –> 00:01:16,000
شش هفت
36
00:01:16,000 –> 00:01:18,479
uh و نه لبه یک دو سه چهار
37
00:01:18,479 –> 00:01:21,040
پنج شش هفت هشت و نه بنابراین من
38
00:01:21,040 –> 00:01:22,960
به سرعت یک نمای کلی ارائه می دهم a به b
39
00:01:22,960 –> 00:01:25,920
متصل است بله a به c متصل است a به
40
00:01:25,920 –> 00:01:29,200
f متصل است سپس c دو
41
00:01:29,200 –> 00:01:31,520
c دو e وصل می شود
42
00:01:31,520 –> 00:01:34,240
c دو f متصل است c دو d
43
00:01:34,240 –> 00:01:37,439
متصل است d به e وصل می شود d به g و
44
00:01:37,439 –> 00:01:39,200
g دو f وصل می
45
00:01:39,200 –> 00:01:40,479
شود
46
00:01:40,479 –> 00:01:42,159
بنابراین کاری که ابتدا می خواهیم انجام دهیم،
47
00:01:42,159 –> 00:01:44,880
آن را می گیریم که یک ورودی نمودار می گیرد
48
00:01:44,880 –> 00:01:47,280
و ابتدا یک عمق پیاده سازی می کنیم.
49
00:01:47,280 –> 00:01:49,600
پیمایش در این نمودار اجازه می دهد تا
50
00:01:49,600 –> 00:01:53,040
به سرعت این کار را انجام دهیم تا کاری که می توانیم انجام
51
00:01:53,040 –> 00:01:57,280
دهیم، بتوانیم نموداری از مجموعه ها بگیریم بسیار
52
00:01:57,280 –> 00:01:59,520
خوب،
53
00:01:59,680 –> 00:02:02,240
من از تاریخ پیش فرض وارد کردن مجموعه ها به بالا منتقل می شوم
54
00:02:02,240 –> 00:02:05,280
55
00:02:06,840 –> 00:02:10,160
56
00:02:10,160 –> 00:02:11,200
57
00:02:11,200 –> 00:02:12,480
و
58
00:02:12,480 –> 00:02:14,239
قبل از رفتن، مروری مختصر از عمق جستجوی اول به شما می دهم
59
00:02:14,239 –> 00:02:15,920
60
00:02:15,920 –> 00:02:18,720
بازدید پیمایشی کار می کند، فرض کنید ما یک
61
00:02:18,720 –> 00:02:21,200
نقطه شروع داریم، اجازه دهید این
62
00:02:21,200 –> 00:02:22,640
نقطه شروع
63
00:02:22,640 –> 00:02:24,560
a باشد، نقطه شروع این در این
64
00:02:24,560 –> 00:02:28,000
نمودار است وقتی از a به b حرکت می کنیم،
65
00:02:28,000 –> 00:02:29,920
سپس بررسی می کنیم
66
00:02:29,920 –> 00:02:32,480
که b به عنوان یک راس گره باشد، آیا
67
00:02:32,480 –> 00:02:35,440
قابل کاوش است، بله بله قابل کاوش است
68
00:02:35,440 –> 00:02:38,800
اما مسیری دارد که به a اما
69
00:02:38,800 –> 00:02:41,280
a alre برمی گردد ady بازدید کرد تا
70
00:02:41,280 –> 00:02:43,760
دیگر آن را کاوش نکنیم بنابراین از b بازدید کرده ایم بنابراین
71
00:02:43,760 –> 00:02:45,920
در همان حالت از a به c حرکت می کنیم و
72
00:02:45,920 –> 00:02:48,480
به صورت بازگشتی به c می
73
00:02:48,480 –> 00:02:51,680
رویم سپس به c می رویم و بررسی می کنیم که کجا می
74
00:02:51,680 –> 00:02:53,599
توانیم برویم می توانیم برای e برویم.
75
00:02:53,599 –> 00:02:54,640
سپس d
76
00:02:54,640 –> 00:02:58,319
یا f یا به a برگردیم، اما از آنجایی که a
77
00:02:58,319 –> 00:02:59,680
قبلاً بازدید شده است
78
00:02:59,680 –> 00:03:02,080
و نمیتوانیم به آن
79
00:03:02,080 –> 00:03:03,680
برگردیم زیرا قبلاً مورد نظر است، بنابراین به
80
00:03:03,680 –> 00:03:06,319
هر یک از گرهها و از f i like
81
00:03:06,319 –> 00:03:08,720
از اینجا به f میرویم، بنابراین علامت بازدید خوب است.
82
00:03:08,720 –> 00:03:11,360
آن به عنوان بازدید شده است بنابراین از f جایی که
83
00:03:11,360 –> 00:03:13,360
می توانیم برویم می توانیم به g
84
00:03:13,360 –> 00:03:14,159
c
85
00:03:14,159 –> 00:03:17,040
a برویم اما a قبلاً بازدید شده است c نیز
86
00:03:17,040 –> 00:03:19,120
قبلاً بازدید شده است ما فقط می توانیم به g برگردیم
87
00:03:19,120 –> 00:03:19,920
88
00:03:19,920 –> 00:03:22,480
بسیار خوب بنابراین وقتی به g حرکت می کنیم علامت آن
89
00:03:22,480 –> 00:03:26,159
به عنوان بازدید شده است بنابراین g به عنوان علامت گذاری شده است
90
00:03:26,159 –> 00:03:28,159
از g جایی که میتوانیم حرکت کنیم، میتوانیم
91
00:03:28,159 –> 00:03:29,440
به d
92
00:03:29,440 –> 00:03:32,239
f حرکت کنیم، اما f قبلاً بازدید شده است،
93
00:03:32,239 –> 00:03:34,640
بنابراین به d منتقل نمیشویم و آن را بهعنوان
94
00:03:34,640 –> 00:03:37,440
بازدیدشده از d علامتگذاری میکنیم، میتوانیم جایی که
95
00:03:37,440 –> 00:03:41,120
میتوانیم حرکت کنیم، میتوانیم به c یا e یا g اما
96
00:03:41,120 –> 00:03:43,200
g قبلاً بازدید شده است c قبلاً بازدید شده است
97
00:03:43,200 –> 00:03:45,440
بنابراین ما به آنجا حرکت نمی کنیم ما
98
00:03:45,440 –> 00:03:47,519
ترتیب رئوس هایی را که قبلاً
99
00:03:47,519 –> 00:03:50,239
بازدید کرده ایم حفظ می کنیم بنابراین t را منتقل می کنیم از آنجایی که همه
100
00:03:50,239 –> 00:03:52,400
آنها بازدید می شوند، بنابراین ما بازگشت را در آنجا پایان می دهیم،
101
00:03:52,400 –> 00:03:54,319
بنابراین عمق جستجو
102
00:03:54,319 –> 00:03:57,519
به این صورت کار می کند، بنابراین اینطور بود که
103
00:03:57,519 –> 00:04:00,159
جستجوی عمقی چگونه کار می کند، بنابراین a می تواند
104
00:04:00,159 –> 00:04:01,920
گره شروع ما
105
00:04:01,920 –> 00:04:05,120
باشد، بنابراین این نقطه شروع خواهد بود. با
106
00:04:05,120 –> 00:04:07,439
قسمت پیاده سازی حرکت کنید به
107
00:04:07,439 –> 00:04:10,879
همین سادگی کاری که می خواهیم انجام دهیم
108
00:04:10,879 –> 00:04:13,599
v کاما
109
00:04:13,599 –> 00:04:16,560
e برابر است با نقشه و
110
00:04:16,560 –> 00:04:19,358
111
00:04:19,358 –> 00:04:21,440
نقطه ورودی کاما تقسیم نقطه
112
00:04:21,440 –> 00:04:23,759
من به سرعت آن را می گیرم، بنابراین برای ما
113
00:04:23,759 –> 00:04:25,919
تعداد uh داریم بنابراین
114
00:04:25,919 –> 00:04:29,680
نمودار برابر با تاریخ پیش فرض
115
00:04:29,680 –> 00:04:30,960
116
00:04:30,960 –> 00:04:31,840
117
00:04:31,840 –> 00:04:33,280
لیست است
118
00:04:33,280 –> 00:04:36,000
بنابراین برای i در محدوده
119
00:04:36,000 –> 00:04:37,440
e
120
00:04:37,440 –> 00:04:39,440
u کاما
121
00:04:39,440 –> 00:04:40,840
v میتواند
122
00:04:40,840 –> 00:04:42,479
str
123
00:04:42,479 –> 00:04:43,919
ورودی
124
00:04:43,919 –> 00:04:45,440
نقطه تقسیم را ترسیم کند،
125
00:04:45,440 –> 00:04:48,720
بنابراین من یک تابع تقسیم میسازم، سپس
126
00:04:48,720 –> 00:04:51,280
نمودار u
127
00:04:51,440 –> 00:04:53,199
dot را
128
00:04:53,199 –> 00:04:55,040
اضافه میکنم
129
00:04:55,040 –> 00:04:57,520
و گراف v
130
00:04:57,520 –> 00:04:58,639
131
00:04:58,639 –> 00:05:00,800
132
00:05:00,960 –> 00:05:03,759
dot را اضافه
133
00:05:04,240 –> 00:05:05,360
134
00:05:05,360 –> 00:05:07,600
میکنم، بنابراین به این صورت نمودار خود را پیادهسازی کردهایم،
135
00:05:07,600 –> 00:05:11,759
بنابراین اکنون نمودار خود را داریم.
136
00:05:11,759 –> 00:05:14,800
سپس اجازه دهید یک
137
00:05:14,800 –> 00:05:16,639
مسیر برابر با لیست خالی ایجاد کنیم،
138
00:05:16,639 –> 00:05:19,039
بنابراین این قسمت را تعریف می کند و
139
00:05:19,039 –> 00:05:20,400
شروع برابر با
140
00:05:20,400 –> 00:05:23,360
a است زیرا اوه ما یک گره شروع را حرکت می دهیم
141
00:05:23,360 –> 00:05:25,120
و
142
00:05:25,120 –> 00:05:26,160
اکنون
143
00:05:26,160 –> 00:05:28,639
کاری که می خواهیم انجام دهیم
144
00:05:28,639 –> 00:05:29,600
145
00:05:29,600 –> 00:05:32,000
مسیر پیمایش
146
00:05:32,000 –> 00:05:33,039
147
00:05:33,039 –> 00:05:35,440
شده برابر با dfs است
148
00:05:35,440 –> 00:05:37,840
که پیاده سازی می کنیم. تابع dfs و
149
00:05:37,840 –> 00:05:39,360
سپس
150
00:05:39,360 –> 00:05:42,320
تراور را چاپ می کنم مسیر sed
151
00:05:42,320 –> 00:05:43,280
152
00:05:43,280 –> 00:05:44,320
خوب است،
153
00:05:44,320 –> 00:05:46,000
بنابراین این راهی است که ما میخواهیم
154
00:05:46,000 –> 00:05:48,800
مسیر پیموده شده را چاپ کنیم، حالا
155
00:05:48,800 –> 00:05:50,400
تابع dfs را پیادهسازی میکنیم، پارامتر اول
156
00:05:50,400 –> 00:05:52,560
به گراف
157
00:05:52,560 –> 00:05:54,000
میرود، پارامتر دوم به
158
00:05:54,000 –> 00:05:55