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

গ্রাফে ব্রিজ (Bridges in a Graph)


এক অনির্দেশিত গ্রাফে একটি এজকে ব্রিজ বলা হয়, যদি এবং কেবল যদি সেটি রিমুভ করলে গ্রাফ ডিসকানেক্টেড হয়, বা গ্রাফের ভিন্ন কম্পোনেন্ট তৈরি হয়।

গ্রাফে ব্রিজ (Bridges in a Graph)

বাস্তব জীবনে, যদি কোনো নেটওয়ার্কে ব্রিজ থাকে, এবং ব্রিজের কানেকশন ভাঙলে, পুরো নেটওয়ার্ক ভেঙে যেতে পারে।

ইনপুট এবং আউটপুট

ইনপুট: গ্রাফের এডজেসেন্সি ম্যাট্রিক্স। 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 আউটপুট: Bridges in given graph: Bridge 3--4 Bridge 0--3

অ্যালগরিদম

bridgeFind(start, visited, disc, low, parent)

ইনপুট - শুরুর ভার্টেক্স, ভিজিটেড অ্যারে নোড ভিজিটেড কিনা মার্ক করতে, disc ভার্টেক্সের ডিসকভারি টাইম ধারণ করবে, এবং low সাবট্রি সম্পর্কে ইনফরমেশন রাখবে। parent কারেন্ট ভার্টেক্সের পেরেন্ট ধারণ করবে।

আউটপুট - যদি কোনো ব্রিজ পাওয়া যায় প্রিন্ট করুন।

শুরু
  time := 0
  //time-এর ভ্যালু নেক্সট ফাংশন কলের জন্য ইনিশিয়ালাইজ হবে না
  start কে ভিজিটেড মার্ক করুন
  disc[start] := time+1 এবং low[start] := time + 1 সেট করুন
  time := time + 1
  গ্রাফ G-তে সব ভার্টেক্স v-এর জন্য করুন
    যদি (start, v) এর মধ্যে এজ থাকে, তবে
      যদি v ভিজিটেড হয়, তবে
        parent[v] := start
        bridgeFind(v, visited, disc, low, parent)
        low[start] := minimum of low[start] and low[v]
        যদি low[v] > disc[start], তবে
          start থেকে v পর্যন্ত ব্রিজ ডিসপ্লে করুন
      অন্যথায় যদি v start-এর পেরেন্ট নয়, তবে
        low[start] := minimum of low[start] and disc[v]
  শেষ
শেষ

উদাহরণ

#include<iostream> #define NODE 5 using namespace std; int graph[NODE][NODE] = { {0, 1, 1, 1, 0}, {1, 0, 1, 0, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 1}, {0, 0, 0, 1, 0} }; int min(int a, int b) { return (a disc[start]) cout << "Bridge " << start << "--"<<v<<endl; } else if(v != parent[start]) //পূর্বের কলের জন্য start-এর low আপডেট করুন low[start] = min(low[start], disc[v]); } } } bool bridges() { bool *vis = new bool[NODE]; int *disc = new int[NODE]; int *low = new int[NODE]; int *parent = new int[NODE]; for(int i = 0; i

আউটপুট

Bridges in given graph: Bridge 3--4 Bridge 0--3

  1. সি প্রোগ্রামে পিটারসন গ্রাফ সমস্যা

  2. Matplotlib-এ ঘূর্ণনশীল ৩D গ্রাফ অ্যানিমেট করা

  3. পাইথনে গ্রাফ প্লটিং: matplotlib লাইব্রেরির ব্যবহার

  4. RedisGraph ২.৮ এখন উপলব্ধ: নতুন ফিচার ও উন্নতি