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

कॉपरस्मिथ फ्रीवाल्ड के एल्गोरिदम को लागू करने के लिए सी ++ प्रोग्राम

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

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

एल्गोरिदम

Begin
   Take matrix1(n*n), matrix2(n*n), matrix3(n*n) as input.
   // According to the algorithm we have to verify:
   // matrix1 × matrix2 = matrix3.
   1) Choose vector a[n][1] randomly and uniformly in which component will be 0 or 1.
   2) Compute matrix2 * a, matrix3 * a and then matrix1 * (matrix2 * a) for evaluating the expression, matrix1 * (matrix2 * a) - matrix3 * a.
   3) Check if matrix1 * (matrix2 * a) - matrix3 * a = 0 or not.
   4) If it is zero, then matrix multiplication is correct otherwise not.
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. सी ++ प्रोग्राम हीप सॉर्ट को लागू करने के लिए

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

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

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

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

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