TGViewer
انجمن علمی مهندسی کامپیوتر دانشگاه مازندران انجمن علمی مهندسی کامپیوتر دانشگاه مازندران @umz_computer · 556 subscribers
Post #362 686
🔍 مقایسه الگوریتم‌های جستجو در گراف: DFS و BFS 🔍 

✅ جستجوی عمقی (DFS - Depth First Search)
✅ جستجوی سطحی (BFS - Breadth First Search) 

هر یک از این روش‌ها در موقعیت‌های مختلف کارایی متفاوتی دارند و انتخاب صحیح آن‌ها می‌تواند تأثیر بسزایی در بهینه‌سازی عملکرد الگوریتم‌ها داشته باشد. 

🔶 جستجوی عمقی (DFS) | حرکت در عمق و بررسی مسیرهای طولانی‌تر:
یک روش بازگشتی یا استکی برای پیمایش گراف است که ابتدا تا جای ممکن در یک مسیر به عمق می‌رود و در صورت نیاز، عقب‌گرد (Backtrack) انجام می‌دهد. 

💡 کاربردهای DFS در دنیای واقعی: 
🔹 حل مسائل مسیر‌یابی در مارپیچ‌ها و مازها 
🔹 تحلیل شبکه‌های اجتماعی (مثلاً شناسایی گروه‌های مرتبط) 
🔹 تشخیص وجود دور (Cycle Detection) در گراف 
🔹 حل مسائل منطقی و معمایی مانند سودوکو 

📌 کد ساده‌‌ی پایتون برای پیاده‌سازی DFS: 
def dfs(graph, node, visited=None):
if visited is None:
visited = set()
visited.add(node)
print(node, end=" ") # نمایش ترتیب پیمایش گره‌ها
for neighbor in graph.get(node, []):
if neighbor not in visited:
dfs(graph, neighbor, visited)

# تعریف یک گراف نمونه
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F', 'G'],
'D': ['B'],
'E': ['B', 'H'],
'F': ['C'],
'G': ['C'],
'H': ['E']
}

print("DFS Traversal:")
dfs(graph, 'A')



🔶 جستجوی سطحی (BFS) | پیمایش سطربه‌سطر و بررسی گره‌های نزدیک‌تر:
یک روش صف‌محور (Queue-based) است که ابتدا گره‌های مجاور را بررسی کرده و سپس به سراغ سطوح پایین‌تر می‌رود. 

💡 کاربردهای BFS در دنیای واقعی: 
🔹 پیدا کردن کوتاه‌ترین مسیر در گراف‌های بدون وزن (مانند مسیریابی در سامانه‌های ناوبری) 
🔹 تحلیل شبکه‌های اجتماعی (برای یافتن کوتاه‌ترین ارتباط بین دو فرد) 
🔹 ساخت خزنده‌های وب (Web Crawlers) برای ایندکس صفحات اینترنتی 
🔹 حل مسائل مسیر‌یابی و بازی‌هایی مانند شطرنج 

📌 کد ساده‌ی پایتون برای پیاده‌سازی BFS: 
from collections import deque

def bfs(graph, start):
visited = set()
queue = deque([start])
visited.add(start)

while queue:
node = queue.popleft()
print(node, end=" ") # نمایش ترتیب پیمایش گره‌ها
for neighbor in graph.get(node, []):
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)

# تعریف یک گراف نمونه
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F', 'G'],
'D': ['B'],
'E': ['B', 'H'],
'F': ['C'],
'G': ['C'],
'H': ['E']
}

print("\nBFS Traversal:")
bfs(graph, 'A')


🔷 کدام الگوریتم مناسب‌تر است؟ 
✔️ در صورتی که نیاز به یافتن سریع‌ترین مسیر در گراف‌های بدون وزن دارید، BFS گزینه بهتری است. 
✔️ اگر بررسی تمام مسیرهای ممکن برای شما اهمیت دارد، DFS انتخاب مناسب‌تری خواهد بود. 

انجمن علمی مهندسی کامپیوتر دانشگاه مازندران
🆔 @Umz_Computer

📌 ویدیو را مشاهده کنید و ببینید چگونه هر الگوریتم مسیر خود را در گراف پیدا می‌کند.
YouTube bfs vs dfs in graph #dsa #bfs #dfs #graphtraversal #graph #cse breadth first searchdepth first searchbfs and dfs in graph
  • 🔥 7
  • 👍 5
  • ❤ 2
More from @umz_computer
  1. Oct 1, 2026📢 فراخوان ثبت‌نام دهمین جشنواره اندیشمندان و دانشمندان جوان 💡 اگر در حوزه‌های علوم پایه،…
  2. Sep 25, 2026🎓 هزاران تبریک به فارغ‌التحصیلان مهندسی کامپیوتر ورودی ۴۰۱ دانشگاه مازندران 💻 یک مسیر به…
  3. Sep 18, 2026به یه زبان خارجی مسلطی؟ 🇬🇧🇩🇪🇸🇦 انگلیسی، آلمانی، عربی یا هر زبان دیگه‌ای؟ دوست داری ا…
  4. Sep 17, 2026راهنمای ورود دانشجویان به پنل کاربری نحوه ورود به lms ریلاین + نام کاربری: شماره دانشجویی…
  5. Sep 14, 2026❗️اطلاعيه نحوه فعالیت آموزشی دانشگاه‌ مازندران نیم‌سال اول سال تحصیلی 1406 – 1405❗️ ▫️حسب…
  6. Sep 12, 2026جدول دروس عمومی و معارف اسلامی، برای انتخاب دروس عمومی در انتخاب واحد
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →