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

C++ प्रोग्राम: कॉपरस्मिथ-फ्राइवल्ड एल्गोरिदम इम्प्लीमेंट करें


फ्राइवल्ड का एल्गोरिदम यह निर्धारित करता है कि चुने गए k मान के लिए मैट्रिक्स 2^-k से कम विफलता की संभावना के साथ O(kn^2) में समान हैं या नहीं।

इसका उपयोग मैट्रिक्स मल्टीप्लिकेशन को सत्यापित करने के लिए किया जाता है।

एल्गोरिदम

Begin    matrix1(n*n), matrix2(n*n), matrix3(n*n) को इनपुट के रूप में लें।    // एल्गोरिदम के अनुसार हमें सत्यापित करना है:    // matrix1 × matrix2 = matrix3।    1) वेक्टर a[n][1] को रैंडमली और यूनिफॉर्मली चुनें जिसमें कंपोनेंट 0 या 1 होगा।    2) matrix2 * a, matrix3 * a कैलकुलेट करें और फिर एक्सप्रेशन matrix1 * (matrix2 * a) - matrix3 * a का मूल्यांकन करने के लिए matrix1 * (matrix2 * a) कैलकुलेट करें।    3) जांचें कि matrix1 * (matrix2 * a) - matrix3 * a = 0 है या नहीं।    4) यदि यह शून्य है, तो मैट्रिक्स मल्टीप्लिकेशन सही है अन्यथा नहीं। End.

उदाहरण

#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main(int argc, char **argv) {    cout << "Enter the dimension of the matrices: ";    int n;    cin >> n;    cout << "Enter the 1st matrix: ";    double matrix1[n][n];    for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {          cin >> matrix1[i][j];       }    }    cout << "Enter the 2nd matrix: ";    double matrix2[n][n];    for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {          cin >> matrix2[i][j];       }    }    cout << "Enter the result matrix: ";    double matrix3[n][n];    for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {          cin >> matrix3[i][j];       }    }    double a[n][1];    for (int i = 0; i < n; i++) {       a[i][1] = rand() % 2;    }    double matrix2a[n][1];    for (int i = 0; i < n; i++) {       for (int j = 0; j < 1; j++) {          for (int k = 0; k < n; k++) {             matrix2a[i][j] = matrix2a[i][j] + matrix2[i][k] * a[k][j];          }       }    }    double matrix3a[n][1];    for (int i = 0; i < n; i++) {       for (int j = 0; j < 1; j++) {          for (int k = 0; k < n; k++) {             matrix3a[i][j] = matrix3a[i][j] + matrix3[i][k] * a[k][j];          }       }    }    double matrix12a[n][1];    for (int i = 0; i < n; i++) {       for (int j = 0; j < 1; j++) {          for (int k = 0; k < n; k++) {             matrix12a[i][j] = matrix12a[i][j] + matrix1[i][k] *matrix2a[k][j];          }       }    }    for (int i = 0; i < n; i++) {       matrix12a[i][0] -= matrix3a[i][0];    }    bool flag = true;    for (int i = 0; i < n; i++) {       if (matrix12a[i][0] == 0)          continue;       else          flag = false;    }    if (flag == true)       cout << "This is the resultant matrix";    else       cout << "This is not the resultant matrix"; }

आउटपुट - 1

Enter the dimension of the matrices: 2 Enter the 1st matrix: 1 2 3 4 Enter the 2nd matrix: 2 0 1 2 Enter the result matrix: 4 4 10 8 This is the resultant matrix

आउटपुट - 2

Enter the dimension of the matrices: 2 Enter the 1st matrix: 1 2 3 4 Enter the 2nd matrix: 2 0 1 2 Enter the result matrix: 4 5 5 5 This is not the resultant matrix

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

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

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

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

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

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