الگوریتم جست وجوی (dfs(Depth-first search - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

الگوریتم جست وجوی (dfs(Depth-first search

+2 امتیاز
الگوریتم جست و جوی dfs چیست ؟  شبه کدش به چه شکل هست ؟
سوال شده شهریور 8, 1393  بوسیله ی َAI (امتیاز 200)   13 19 30
ویرایش شده آذر 22, 1393 بوسیله ی مصطفی ساتکی

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

برای  نوشتن DFS به این شکل عمل می کنیم :

 

 1_ یک صف(Queue) میسازیم و بهش مقدار اولیه میدیم

 2_ عنصر اول صف رو از صف خارج می کنیم (deque)

 3_ عنصر خارج شده رو گشترش میدیم و به اول صف اضافه می کنیم(enque) و اگر قابل گسترش نبود دیگه به صف اضافش نمی کنیم

 4_ مرحله 2 به بعد رو تا وقتی که صف خالی نشده تکرار می کنیم

 

مثال از نحوه کار  :
 
الگوریتم, جست و جو, dfs, گراف
 

مثال 2 فرض کنید گراف به شکل زیر هست :

 

الگوریتم, جست و جو, dfs, گراف

 

و فرض کنید DFS  رو از راس A شروع می کنیم مراحل به این شکله :

(A,B),(A,C)                      ساختن و  مقدار اولیه دادن  
(A,B,D),(A,B,C),(A,C)       گسترش (A,B) , اضافه کردن به اول صف  
(A,B,D,E),(A,B,C),(A,C)   گسترش (A,B,D) , اضافه کردن به اول صف  
(A,B,C),(A,C)                  گسترش (A,B,D,E) , چون قابل گسترش نیست از صف حذف میشه  
(A,C)                              گسترش (A,C) , چون یکبار قبلا گسترش داده شده از صف حذف میشه  
--                                    تمام
شبه کد  این الگوریتم:
procedure DFS-iterative(G,v):
2      let S be a queue
3      S.push(v)
4      while S is not empty
5            v ← S.pop() 
6            if v is not labeled as discovered:
7                label v as discovered
8                for all edges from v to w in G.adjacentEdges(v) do
9                    S.push(w)

 

 

پاسخ داده شده شهریور 8, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده دی 30, 1393 بوسیله ی haniye sarbazi
...