কম্পিউটার টিউটোরিয়াল

সি++ প্রোগ্রাম: ডিপথ ফার্স্ট সার্চ (DFS) ট্রাভার্সাল স্টেপ-বাই-স্টেপ প্রিন্ট করা


এই টিউটোরিয়ালে ডিপথ ফার্স্ট সার্চ (Depth First Search - DFS) ব্যবহার করে বাইনারি ট্রি ট্রাভার্সালের (traversal) প্রতিটি স্টেপ (step) প্রিন্ট করার প্রোগ্রাম আলোচনা করা হবে।

এতে DFS-এ হয়endo সব স্টেপ থাকবে, ব্যাকট্র্যাকিং (backtracking) প্রক্রিয়াও থাকবে।

DFS aikana প্রতিটি নোড ট্রাভার্স করব এবং পেরেন্ট নোড (parent node) ও ব্যবহৃত এজ (edge) সংরক্ষণ করব। ট্রাভার্সালের সময় যদি съসেজ এজ (adjacent edge) ভিজিটেড (visited) থাকে, তবে সেই নোডটিকেই DFS-এ একটি স্টেপ হিসেবে প্রিন্ট করা হবে।

উদাহরণ

#include <bits/stdc++.h> using namespace std; const int N = 1000; vector adj[N]; // DFS ট্রাভার্সালের স্টেপ প্রিন্ট করা void dfs_steps(int u, int node, bool visited[], vector path_used, int parent, int it){    int c = 0;    for (int i = 0; i < node; i++)    if (visited[i])       c++;    if (c == node)       return; // নোডকে ভিজিটেড মার্ক করা    visited[u] = true;    path_used.push_back({ parent, u });    cout << u << " ";    for (int x : adj[u]){       if (!visited[x])          dfs_steps(x, node, visited, path_used, u, it + 1);    }    for (auto y : path_used)    if (y.second == u)    dfs_steps(y.first, node, visited,    path_used, u, it + 1); } void dfs(int node){    bool visited[node];    vector > path_used;    for (int i = 0; i < node; i++)    visited[i] = false;    dfs_steps(0, node, visited, path_used, -1, 0);    } void add_edge(int u, int v){    adj[u].push_back(v);    adj[v].push_back(u); } int main(){    int node = 11, edge = 13;    add_edge(0, 1);    add_edge(0, 2);    add_edge(1, 5);    add_edge(1, 6);    add_edge(2, 4);    add_edge(2, 9);    add_edge(6, 7);    add_edge(6, 8);    add_edge(7, 8);    add_edge(2, 3);    add_edge(3, 9);    add_edge(3, 10);    add_edge(9, 10);    dfs(node);    return 0; }

আউটপুট

0 1 5 1 6 7 8 7 6 1 0 2 4 2 9 3 10

  1. C++ প্রোগ্রাম: DFS ব্যবহার করে অনডিরেক্টেড গ্রাফের কানেক্টিভিটি চেক করা

  2. C++ প্রোগ্রাম: BFS ব্যবহার করে ডিরেক্টেড গ্রাফের কানেক্টিভিটি চেক করা

  3. C++ প্রোগ্রাম: BFS ব্যবহার করে অনডিরেক্টেড গ্রাফের কানেক্টিভিটি চেক করা

  4. C++ প্রোগ্রাম: DFS ব্যবহার করে নির্দেশিত গ্রাফের কানেক্টিভিটি যাচাই