برنامه نویسی

🔍 الگوریتم جستجوی Wredth-First (BFS)

🧠 این را تصور کنید:
شما در پیچ و خم اتاق هستید. شما می خواهید کوتاهترین راه را پیدا کنید. بنابراین از اتاق اول شروع می کنید ، تمام اتاق های مجاور را بررسی کنید ، سپس به لایه بعدی اتاق ها بروید و تا رسیدن به خروجی ، گسترش دهید.
این جستجوی وسعت اول (BFS) است-شما لایه بر روی لایه ، سطح بر اساس سطح را کشف می کنید.

bs BFS چیست؟
Wreadth-First Search (BFS) یک الگوریتم اساسی نمودار Traversal است که سطح گره ها را بر اساس سطح بررسی می کند. این امر به ویژه برای یافتن کوتاهترین مسیر در نمودارهای بدون وزنی مفید است.
به این فکر کنید مانند کاوش در یک درخت به صورت افقی: شما قبل از رفتن به پسر عموی خود ، همه خواهر و برادرهای خود را بررسی می کنید!

🧠 چگونه کار می کند
1. از یک گره شروع کنید (مثلاً گره 0).
2. از یک صف استفاده کنید تا به خاطر داشته باشید “چه چیزی برای بازدید بعدی”.
3. بازدید از[] آرایه بنابراین بازدیدهای خود را تکرار نمی کنید.
4. برای هر گره:
همسایگان بی نظیر خود را به صف اضافه کنید.
یکی یکی از آنها بازدید کنید.
📥queue نظم را تضمین می کند – اول ، اول. مناسب برای سطح سطح
سفر

🤝 موارد استفاده در دنیای واقعی
پیشنهادات شبکه اجتماعی (چه کسی 1 دوست از دوست شما دور است؟)
خزیدن
کوتاهترین مسیر در نمودارهای بدون وزنی
شبکه های همتا به همسالان

🔄 مثال اجرای خشک (نمودار)

شرح تصویر

شرح تصویر

order سفارش Traversal: 1 → 2 → 3 → 4 → 5
✅ توضیح:
از گره 1 → همسایگان Enqueue 2 و 3 شروع کنید
به 2 → Enqueue 4 مراجعه کنید
به 3 → Enqueue 5 مراجعه کنید
بازدید از 4 (قبلاً اضافه شده)
بازدید از 5
صف خالی می شود.

#include 
#include 
#include 
using namespace std;

vector bfsOfGraph(int V, vector adj[]) {
    vector bfs;
    vector visited(V, false);
    queue q;

    // Start BFS from node 0
    q.push(0);
    visited[0] = true;

    while (!q.empty()) {
        int node = q.front();
        q.pop();
        bfs.push_back(node);

        for (int neighbor : adj[node]) {
            if (!visited[neighbor]) {
                visited[neighbor] = true;
                q.push(neighbor);
            }
        }
    }

    return bfs;
}

int main() {
    int V = 5;
    vector adj[V];

    // Undirected Graph Example
    adj[0] = {1, 2};
    adj[1] = {0, 3};
    adj[2] = {0, 4};
    adj[3] = {1};
    adj[4] = {2};

    vector result = bfsOfGraph(V, adj);

    cout << "BFS Traversal: ";
    for (int node : result)
        cout << node << " ";
    cout << endl;

    return 0;
}

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

📈 پیچیدگی زمان و فضا
پیچیدگی زمانی: o (v + e)
پیچیدگی فضا: o (v)
جایی که V تعداد راس ها و E تعداد لبه ها است.

🧊 غذای اصلی
BFS برای یافتن کوتاهترین مسیر (در نمودارهای بدون وزنی) بسیار عالی است.
از یک صف برای عبور از سطح به سطح استفاده می کند.
ایده آل وقتی می خواهید ابتدا همه چیز نزدیک خود را کشف کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا