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

C++ में बाइसिमेट्रिक मैट्रिक्स जांच


बाइसिमेट्रिक मैट्रिक्स क्या है?

बाइसिमेट्रिक मैट्रिक्स एक वर्ग मैट्रिक्स है जो दोनों प्रमुख विकर्णों के बारे में सममित होती है। नीचे दी गई मैट्रिक्स बाइसिमेट्रिक मैट्रिक्स का एक उदाहरण है।

1 2 3 4 5
2 6 7 8 4
3 7 9 7 3
4 8 7 6 2
5 4 3 2 1

गुण

  1. मुख्य विकर्ण के पार सममिति: mat[i][j] == mat[j][i] सभी i,j के लिए
  2. द्वितीयक विकर्ण के पार सममिति: mat[i][j] == mat[n-j-1][n-i-1] सभी i,j के लिए

एल्गोरिदम

checkBiSymmetric(mat, n):
Begin
    for i = 0 to n-1:
        for j = 0 to i-1:
            if mat[i][j] != mat[j][i]:
                return false
        done
    done

    for i = 0 to n-1:
        for j = 0 to n-i-1:
            if mat[i][j] != mat[n-j-1][n-i-1]:
                return false
        done
    done

    return true
End

उदाहरण

#include <iostream>
#define N 5
using namespace std;

int matrix[N][N] = {
    {1, 2, 3, 4, 5},
    {2, 6, 7, 8, 4},
    {3, 7, 9, 7, 3},
    {4, 8, 7, 6, 2},
    {5, 4, 3, 2, 1}
};

bool checkBiSymmetric() {
    // मुख्य विकर्ण के पार सममिति जांचें
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < i; j++) {
            if (matrix[i][j] != matrix[j][i]) {
                return false;
            }
        }
    }

    // द्वितीयक विकर्ण के पार सममिति जांचें
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N - i; j++) {
            if (matrix[i][j] != matrix[N - j - 1][N - i - 1]) {
                return false;
            }
        }
    }

    return true;
}

int main() {
    if (checkBiSymmetric()) {
        cout << "Yes the matrix is bisymmetric";
    } else {
        cout << "No the matrix is not bisymmetric";
    }
    return 0;
}

आउटपुट

Yes the matrix is bisymmetric

संबंधित मैट्रिक्स प्रकार

प्रकार शर्त
सममित (Symmetric) A[i][j] == A[j][i]
विषम-सममित (Skew-symmetric) A[i][j] == -A[j][i]
बाइसिमेट्रिक (Bisymmetric) दोनों विकर्णों पर सममित
सेंट्रोसममित (Centrosymmetric) A[i][j] == A[n-1-i][n-1-j]
टॉप्लिट्ज़ (Toeplitz) A[i][j] == A[i+1][j+1]

समय जटिलता

O(n²) - मैट्रिक्स के सभी तत्वों को जांचने के लिए

स्थान जटिलता

O(1) - अतिरिक्त स्थान नहीं

  1. - C++ में एक्सपैंडिंग मैट्रिक्स में पिछला तत्व लौटाना

    मैट्रिक्स का विस्तार करने पर आधारित एक समस्या पर चर्चा करें। एक्सपैंडिंग मैट्रिक्स एक मैट्रिक्स है जिसका आकार किसी कारक द्वारा लगातार बढ़ता है। यहां हमारे पास वर्णों का एक मैट्रिक्स है जिसका आकार 2 के कारक से बढ़ रहा है, यानी यदि मैट्रिक्स का मूल आकार N * N है, तो विस्तारित मैट्रिक्स का आकार 2N *

  1. C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल C++ में मैट्रिक्स की पंक्ति-वार बनाम स्तंभ-वार ट्रैवर्सल

    एक मैट्रिक्स को दो तरीकों से ट्रैवर्स किया जा सकता है। पंक्ति-वार ट्रैवर्सल प्रत्येक पंक्ति को एक-एक करके पहले पंक्ति से शुरू करके अंतिम पंक्ति तक देखता है। पंक्ति में तत्व इंडेक्स 0 से अंतिम इंडेक्स तक लौटाए जाते हैं। स्तंभ-वार ट्रैवर्सल में, तत्वों को पहले स्तंभ से अंतिम स्तंभ तक क्रम में ट्रैवर्स

  1. - C++ में बूलियन मैट्रिक्स प्रश्न

    यहां हम एक रोचक बूलियन मैट्रिक्स समस्या देखेंगे। एक बूलियन मैट्रिक्स दिया गया है जिसमें 0 और 1 हैं। हमारा लक्ष्य यह ढूंढना है कि 1 कहां मार्क किया गया है। यदि 1 स्थिति mat[i,j] पर मार्क किया गया है, तो हम पंक्ति i और स्तंभ j के सभी एंट्रीज को 1 बना देंगे। एक उदाहरण देखते हैं। यदि मैट्रिक्स नीचे जैसा