यहां, हमें एक नंबर N दिया गया है। हमारा काम अलेक्जेंडर बोगोमोल्नी के अनऑर्डर्ड परम्यूटेशन एल्गोरिथम का उपयोग करके N का क्रमपरिवर्तन खोजना है।
आइए पहले क्रमपरिवर्तन पर चर्चा करें,
एक क्रमपरिवर्तन एक सेट में एक आइटम को विशिष्ट रूप से ऑर्डर करने के तरीकों की संख्या को क्रमपरिवर्तन कहा जाता है।
उदाहरण - {4,9,2} का क्रमचय {4,9,2}, {4,2,9}, {9,4,2}, {9,2,4}, {2,4,9 होगा। } और {2,9,4}.
क्रमपरिवर्तन ने कंप्यूटर नेटवर्किंग, समानांतर प्रसंस्करण में स्विचिंग नेटवर्क को परिभाषित करने और विभिन्न क्रिप्टोग्राफ़िक एल्गोरिदम में भी उपयोग किया है।
अलेक्जेंडर बोगोमोल्नी का अनियंत्रित क्रमचय एल्गोरिथम
यह एल्गोरिदम पहले एन प्राकृतिक संख्याओं के सभी संभावित क्रमपरिवर्तन की गणना करता है। एक संख्या N को देखते हुए, क्रमपरिवर्तन की गणना 1 से N तक की जाती है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 3
आउटपुट
1,2,3 ; 1,3,2 ; 2,1,3 ; 2,3,1 ; 3,1,2 ; 3,2,1
एल्गोरिदम
1. Build a function with an array, number N, and an integer k as parameters 2. Initialize the level, as level increases permute the rest of the values 3. When the recursion condition is reached all its values are printed.
उदाहरण
हमारे एल्गोरिथ्म के कार्यान्वयन को दिखाने के लिए कार्यक्रम -
#include <iostream> using namespace std; int level = -1; void AlexanderBogomolyn(int permutations[], int N, int k) { level = level + 1; permutations[k] = level; if (level == N) { for (int i = 0; i < N; i++) cout<<permutations[i]<<"\t"; cout<<endl; } else{ for (int i = 0; i < N; i++) if (permutations[i] == 0) AlexanderBogomolyn(permutations, N, i); } level = level - 1; permutations[k] = 0; } int main(){ int N = 4; int permutations[N] = { 0 }; cout<<"All permutations are :\n"; AlexanderBogomolyn(permutations, N, 0); return 0; }
आउटपुट
All permutations are : 1 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 2 1 3 4 2 1 4 3 3 1 2 4 4 1 2 3 3 1 4 2 4 1 3 2 2 3 1 4 2 4 1 3 3 2 1 4 4 2 1 3 3 4 1 2 4 3 1 2 2 3 4 1 2 4 3 1 3 2 4 1 4 2 3 1 3 4 2 1 4 3 2 1