آرین سليمان زاده
  • الرئيسية
  • المدونة
  • البودكاست
  • الفيديوهات
  • المكتبة
  • تواصل
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
اللوحة•تواصل سريع

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

احجز موعداً

أرسل رسالة قصيرة — سأرد في أقرب وقت ممكن.

LinkedInاستجابة سريعة
الرئيسية/المقالات/Breadth-First Search (BFS): البحث مستوى بعد مستوى
AlgorithmsGraph Algorithmsمقال

Breadth-First Search (BFS): البحث مستوى بعد مستوى

دليل عملي لفهم BFS، Queue، visited، أقصر مسار في الرسم غير الموزون، Grid، Multi-Source BFS والتعقيد.

٢١ أغسطس ٢٠٢٦9 دقيقة قراءة22 المشاهدات
#Graph#Algorithms#BFS#Queue#Shortest Path#JavaScript#TypeScript

Arian Soleimanzadeh

Software Engineer & Researcher

دليل بصري لخوارزمية Breadth-First Search BFS

Arian Soleimanzadeh

ذكاء اصطناعي · برمجة · منتج

بحث + هندسة
في هذه الصفحة
الفكرة الأساسيةJavaScriptأقصر مسارBFS و DFSGrid و MazeMulti-Source BFSBidirectional BFS0-1 BFSالتطبيقاتالتعقيدالخلاصة

تستخدم BFS طابوراً Queue لاستكشاف الرسم البياني حسب المسافة من نقطة البداية: المستوى الأول ثم الثاني ثم الثالث.

أهم ميزة لها هي إيجاد أقصر مسار بعدد الحواف في الرسم غير الموزون أو عندما تكون جميع الحواف متساوية التكلفة.

الفكرة الأساسية

Code
1
FIFO — First In, First Out

نحدد العقدة كـ visited عند إدخالها إلى Queue حتى لا تدخل أكثر من مرة.

JavaScript

JavaScript
1234567891011121314151617181920
function bfs(graph, start) {
  const queue = [start];
  let head = 0;
  const visited = new Set([start]);
  const order = [];

  while (head < queue.length) {
    const current = queue[head++];

    order.push(current);

    for (const next of graph[current] ?? []) {
      if (visited.has(next)) continue;
      visited.add(next);
      queue.push(next);
    }
  }

  return order;
}

أقصر مسار

لأن BFS تزور العقد بترتيب عدد الحواف، فإن أول وصول إلى عقدة يمثل أقل عدد من الحواف إليها.

يمكن حفظ distance و parent لإعادة بناء المسار.

BFS و DFS

BFS تتحرك مستوى بعد مستوى باستخدام Queue، بينما DFS تتعمق باستخدام Stack أو recursion.

BFS تضمن أقصر مسار في الرسم غير الموزون؛ DFS لا تضمن ذلك.

Grid و Maze

كل Cell يمكن اعتباره Vertex وكل حركة Edge. إذا كانت الحركات متساوية التكلفة، فإن BFS تجد أقل عدد من الحركات.

Multi-Source BFS

يمكن وضع عدة مصادر في Queue بمسافة صفر. تستخدم في أقرب مستشفى، انتشار النار، العدوى وأقرب مخرج.

Bidirectional BFS

عند معرفة البداية والهدف يمكن البحث من الطرفين لتقليل مساحة البحث.

0-1 BFS

إذا كانت الأوزان فقط 0 و1، يمكن استخدام Deque بدلاً من BFS العادية.

التطبيقات

  • Social Networks
  • Maze و Grid
  • Web Crawling
  • Connected Components
  • Bipartite Check
  • Minimum Moves
  • State Search

التعقيد

Code
12
Time: O(V + E)
Space: O(V)

الخلاصة

إذا كان المطلوب أقرب حالة أو أقل عدد من الخطوات في Graph غير موزون، فـ BFS غالباً هي الاختيار الصحيح.

في هذه الصفحة
الفكرة الأساسيةJavaScriptأقصر مسارBFS و DFSGrid و MazeMulti-Source BFSBidirectional BFS0-1 BFSالتطبيقاتالتعقيدالخلاصة

تفاصيل المقال

بيانات النشر ووقت القراءة وعدد المشاهدات.

تاريخ النشر

٢١ أغسطس ٢٠٢٦

آخر تحديث

٦ نوفمبر ٢٠٢٦

وقت القراءة

9 دقيقة قراءة

المشاهدات

22

الكاتب

Arian Soleimanzadeh

المقال السابق

ما هي خوارزمية Cuckoo Hashing وكيف تعمل؟

المقال التالي

Depth-First Search (DFS): البحث العميق من الأساسيات إلى التطبيق

آرین سليمان زاده

معرض أعمال شخصي يركز على هندسة الويب الحديثة، وأنظمة الواجهات، ومنتجات الذكاء الاصطناعي العملية — كود نظيف، وتصميم نقي.

روابط سريعة

  • نبذة
  • المدونة
  • المكتبة
  • تواصل

تواصل

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

التوفر: أيام الأسبوع

عادةً يتم الرد خلال 24 ساعة.

النشرة البريدية

احصل على تحديثات حول المقالات، والمشاريع، والإصدارات الجديدة.

© 2026 ariansoleimanzadeh.dev — جميع الحقوق محفوظة.

لينكدإن