Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में नियरेस्ट नेबर एल्गोरिदम को लागू करना


यह नियरेस्ट नेबर एल्गोरिदम को लागू करने के लिए एक C++ प्रोग्राम है जिसका उपयोग ट्रैवलिंग सेल्समैन प्रॉब्लम को लागू करने के लिए किया जाता है ताकि सभी नोड्स को विजिट करने के लिए आवश्यक न्यूनतम लागत की गणना की जा सके, एजेस को केवल एक बार पार करके।

आवश्यक फंक्शन्स और स्यूडोकोड्स

एल्गोरिदम

Begin    c = 0, cost = 1000 इनिशियलाइज़ करें;    g[][] इनिशियलाइज़ करें।    function swap() दो मानों x और y को स्वैप करने के लिए उपयोग किया जाता है।    function cal_sum() लागत की गणना करने के लिए जो ऐरे a[] और ऐरे के आकार को इनपुट के रूप में लेता है।    sum =0 इनिशियलाइज़ करें।    for i = 0 to n       s+= g[a[i %3]][a[(i+ 1) %3]] की गणना करें;    if (cost >s)       cost = s    function permute() परम्यूटेशन करने के लिए उपयोग किया जाता है:    यदि ऐरे में एक एलिमेंट है       cal_sum() कॉल करें।    अन्यथा       for j = i to n          swap (a+i) with (a + j)          cal_sum(a+1,n)          swap (a+i) with (a + j) End

उदाहरण कोड

#include<iostream> using namespace std; int c = 0, cost = 1000; int g[3][3 ] = { {1,2,3},{4,5,8},{6,7,10}}; void swap(int *x, int *y) {    int t;    t = *x;    *x = *y;    *y = t; } void cal_sum(int *a, int n) {    int i, s= 0;    for (i = 0; i <= n; i++) {       s+= g[a[i %3]][a[(i+ 1) %3]];    }    if (cost >s) {       cost = s;    } } void permute(int *a,int i,int n) {    int j, k;    if (i == n) {       cal_sum (a,n);    } else {       for (j = i; j <= n; j++) {          swap((a + i), (a + j));          cal_sum(a+1,n);          swap((a + i), (a + j));       }    } } int main() {    int i, j;    int a[] = {1,2,3};//ऐरे एलिमेंट्स लें    permute(a, 0,2);    cout << "minimum cost:" << cost << endl; }

आउटपुट

minimum cost:3

  1. - C++ प्रोग्राम: हीप सॉर्ट लागू करना

    एक हीप एक पूर्ण बाइनरी ट्री है जो या तो मिन हीप या मैक्स हीप है। एक मैक्स हीप में, रूट पर कुंजी हीप में मौजूद सभी कुंजियों में अधिकतम होनी चाहिए। यह गुण उस बाइनरी ट्री में सभी नोड्स के लिए पुनरावर्ती रूप से सत्य होना चाहिए। मिन हीप मिनहीप के समान है। फंक्शन विवरण void BHeap::Insert(int ele): हीप मे

  1. - C++ प्रोग्राम: बबल सॉर्ट लागू करना

    बबल सॉर्ट तुलना-आधारित सॉर्टिंग एल्गोरिदम है। इस एल्गोरिदम में आसन्न तत्वों की तुलना की जाती है और सही क्रम बनाने के लिए स्वैप किया जाता है। यह एल्गोरिदम अन्य एल्गोरिदम की तुलना में सरल है, लेकिन इसकी कुछ कमियां भी हैं। यह एल्गोरिदम बड़ी संख्या में डेटा सेट के लिए उपयुक्त नहीं है। सॉर्टिंग कार्यों

  1. - C++ प्रोग्राम: रेडिक्स सॉर्ट लागू करना

    रेडिक्स सॉर्ट गैर-तुलनात्मक सॉर्टिंग एल्गोरिदम है। यह सॉर्टिंग एल्गोरिदम पूर्णांक कुंजियों पर काम करता है उन अंकों को समूहित करके जो समान स्थिति और मान साझा करते हैं। रेडिक्स एक संख्या प्रणाली का आधार है। जैसा कि हम जानते हैं कि दशमलव प्रणाली में रेडिक्स या आधार 10 है। इसलिए कुछ दशमलव संख्याओं को स