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