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; }

आउटपुट

Comparing str1 and str2 using ==, Res: 0 Comparing str1 and str3 using ==, Res: 1 Comparing str1 and str2 using compare(), Res: -1024 Comparing str1 and str3 using compare(), Res: 0

  1. - C++ प्रोग्राम: बूथ गुणन एल्गोरिदम द्वारा दो साइन नंबरों का गुणन

    बूथ एल्गोरिदम एक गुणन एल्गोरिदम है जो 2 के पूरक संकेतन में दो साइन बाइनरी नंबरों को गुणा करता है। बूथ ने डेस्क कैलकुलेटर का उपयोग किया जो जोड़ की तुलना में शिफ्टिंग में तेज थे और उनकी गति बढ़ाने के लिए इस एल्गोरिदम का निर्माण किया। एल्गोरिदम शुरुआत    गुणक को BR में और गुणनखंड को QR में र

  1. - डायनामिक प्रोग्रामिंग का उपयोग करके नैपसैक समस्या हल करने के लिए C++ प्रोग्राम

    यह डायनामिक प्रोग्रामिंग का उपयोग करके 0-1 नैपसैक समस्या को हल करने के लिए एक C++ प्रोग्राम है। 0-1 नैपसैक समस्या में, आइटम्स का एक सेट दिया जाता है, प्रत्येक का एक वजन और एक मूल्य होता है। हमें प्रत्येक आइटम की संख्या निर्धारित करनी होती है जिसे एक संग्रह में शामिल किया जाए ताकि कुल वजन दी गई सीमा

  1. - C++ में हीप सॉर्ट एल्गोरिदम का उपयोग करके 10 तत्वों की सरणी को सॉर्ट करने का प्रोग्राम

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