গ্রাফ ট্রাভার্সাল অ্যালগরিদম (Graph Traversal Algorithms) - গ্রাফ থিওরি (Graph Theory) - Computer Science

462

DFS (Depth-First Search)

DFS (Depth-First Search) হল একটি গ্রাফ ট্রাভার্সাল অ্যালগরিদম যা একটি গ্রাফের ভেরটেক্স এবং এজকে গভীরভাবে অনুসন্ধান করে। এই পদ্ধতিতে, একটি নির্দিষ্ট নোড থেকে শুরু করে যতদূর সম্ভব যেতে চেষ্টা করা হয়, তারপর সেই নোডের প্রতিবেশী নোডগুলিতে চলে যাওয়া হয় যতক্ষণ না সব ভিজিট করা নোড সম্পন্ন হয়।

DFS অ্যালগরিদমের ধাপ:

  1. প্রাথমিক ভেরটেক্স নির্বাচন: DFS শুরু করার জন্য একটি প্রাথমিক ভেরটেক্স নির্বাচন করুন এবং এটিকে ভিজিট করুন।
  2. স্ট্যাক ব্যবহার: একটি স্ট্যাক (stack) বা রিকার্সিভ পদ্ধতি ব্যবহার করে কাজ করুন। প্রাথমিক ভেরটেক্সটি স্ট্যাকে যোগ করুন।
  3. নোড ভিজিট করা:
    • যখন স্ট্যাক খালি না হয়, তখন:
      • প্রথম ভেরটেক্সটি বের করুন এবং এটিকে ভিজিট করুন।
      • বের করা ভেরটেক্সের সমস্ত প্রতিবেশী নোডগুলিকে চেক করুন:
        • যদি প্রতিবেশী নোডটি পূর্বে ভিজিট করা না হয়ে থাকে, তবে এটিকে স্টাকে যোগ করুন এবং ভিজিট করা হিসাবে চিহ্নিত করুন।
  4. পুনরাবৃত্তি: উপরের ধাপগুলি পুনরাবৃত্তি করুন যতক্ষণ না স্ট্যাক খালি হয়ে যায়।

pseudocode for DFS

DFS(Graph G, Vertex start):
  Create a stack S
  Create a set visited to keep track of visited vertices
  Push start into S
  Mark start as visited

  while S is not empty:
    current = Pop S
    Process current (e.g., print or store the vertex)

    for each neighbor in G.neighbors(current):
      if neighbor is not in visited:
        Push neighbor into S
        Mark neighbor as visited

উদাহরণ

ধরি, আমাদের একটি গ্রাফ আছে:

    A
   / \
  B   C
 / \   \
D   E   F

DFS-এ আউটপুট হবে:

  1. শুরু করি A থেকে।
  2. A এর প্রতিবেশী B তে যাব।
  3. B এর প্রতিবেশী D তে যাব।
  4. D এর কোন প্রতিবেশী না থাকলে, আমরা B তে ফিরে আসব এবং E তে যাব।
  5. E এর কোন প্রতিবেশী না থাকলে, আমরা A তে ফিরে যাব এবং C তে যাব।
  6. C এর প্রতিবেশী F তে যাব।
  7. F এর কোন প্রতিবেশী না থাকলে, DFS শেষ হবে।

DFS-এর সুবিধা

  1. মেমরি ব্যবহার: DFS সাধারণত কম মেমরি ব্যবহার করে, কারণ এটি মাত্র একটি পাথ (path) অনুসন্ধান করে।
  2. গভীর অনুসন্ধান: DFS একটি নির্দিষ্ট পথের গভীরে প্রবেশ করতে সক্ষম, যা কিছু সমস্যা সমাধানে উপকারী।
  3. কম্পিউটার বিজ্ঞানে ব্যবহৃত: অনেক অ্যালগরিদম, যেমন টোপোলজিকাল সর্টিং এবং সাইকেল শনাক্তকরণ, DFS এর উপর ভিত্তি করে কাজ করে।

DFS-এর অসুবিধা

  1. বাঁকা পথে আটকে পড়া: DFS কখনও কখনও কোন সমাধানে পৌঁছানোর আগে দীর্ঘ পাথ অনুসন্ধান করতে পারে।
  2. গভীরতা সীমাবদ্ধতা: যদি গ্রাফ খুব গভীর হয়, তবে এটি স্ট্যাক ওভারফ্লো হতে পারে।

সারসংক্ষেপ

DFS (Depth-First Search) হল একটি শক্তিশালী গ্রাফ ট্রাভার্সাল অ্যালগরিদম, যা গভীরভাবে নোডগুলি অনুসন্ধান করে। এটি সহজে বাস্তবায়িত হয় এবং অনেক ধরনের সমস্যা সমাধানে ব্যবহৃত হয়। DFS এর সাহায্যে গ্রাফের গঠন এবং সম্পর্ক বিশ্লেষণে কার্যকরী ফলাফল পাওয়া যায়।

Content added By
Promotion

Are you sure to start over?

Loading...