এটি একটি C++ প্রোগ্রাম যেখানে দেওয়া এজ 'e' এর জন্য একটি আনডirected র্যান্ডম গ্রাফ জেনারেট করা হয়। এই অ্যালগরিদম মূলত বড় নেটওয়ার্কে ইমপ্লিমেন্ট করা হয় এবং এর টাইম কমপ্লেক্সিটি O(log n)।
অ্যালগরিদম
শুরু
GenerateRandomGraphs() ফাংশন, আর্গুমেন্ট লিস্টে 'e' হিসেবে এজ সংখ্যা থাকে
i = 0 ইনিশিয়ালাইজ করুন
যতক্ষণ (i < e) করুন
edge[i][0] = rand()%N+1
edge[i][1] = rand()%N+1
i বৃদ্ধি করুন
i = 0 থেকে N-1 পর্যন্ত
count = 0 ইনিশিয়ালাইজ করুন
j = 0 থেকে e-1 পর্যন্ত
if (edge[j][0] == i+1) হয়, তবে
edge[j][1] প্রিন্ট করুন
count বৃদ্ধি করুন
else if (edge[j][1] == i+1) হয়, তবে
edge[j][0] প্রিন্ট করুন
count বৃদ্ধি করুন
else if (j == e-1 && count == 0) হয়, তবে
"Isolated Vertex" প্রিন্ট করুন
শেষ করুন
শেষ
উদাহরণ কোড
#include <iostream>
#include <stdlib.h>
#define N 10
using namespace std;
void GenerateRandomGraphs(int e) {
int i, j, edge[e][2], count;
i = 0;
// দুটি র্যান্ডম নম্বরের মধ্যে কানেকশন জেনারেট করুন, ছোট কেসের জন্য ভার্টেক্স লিমিট ১০
while (i < e) {
edge[i][0] = rand() % N + 1;
edge[i][1] = rand() % N + 1;
i++;
}
// প্রতিটি ভার্টেক্সের সব কানেকশন প্রিন্ট করুন, ডিরেকশন নির্বিশেষে
cout << "\nThe generated random graph is: ";
for (i = 0; i < N; i++) {
count = 0;
cout << "\n\t" << i+1 << "-> { ";
for (j = 0; j < e; j++) {
if (edge[j][0] == i+1) {
cout << edge[j][1] << " ";
count++;
}
else if (edge[j][1] == i+1) {
cout << edge[j][0] << " ";
count++;
}
// শূন্য ডিগ্রি वाले ভার্টেক্সের জন্য "Isolated vertex" প্রিন্ট করুন
else if (j == e-1 && count == 0)
cout << "Isolated Vertex!";
}
cout << " }";
}
}
int main() {
int n, i, e;
cout << "Enter the number of edges for the random graphs: ";
cin >> e;
GenerateRandomGraphs(e);
return 0;
}
আউটপুট
Enter the number of edges for the random graphs: 10
The generated random graph is:
1-> { 10 7 }
2-> { 10 }
3-> { 7 8 7 }
4-> { 7 6 7 }
5-> { Isolated Vertex! }
6-> { 8 4 }
7-> { 4 3 4 1 3 }
8-> { 6 3 }
9-> { Isolated Vertex! }
10-> { 2 1 }