# Check if a given matrix is Hankel or not

• Last Updated : 17 Aug, 2022

Given a matrix m[][] of size n x n. The task is to check whether given matrix is Hankel Matrix or not.
In linear algebra, a Hankel matrix (or catalecticant matrix), named after Hermann Hankel, is a square matrix in which each ascending skew-diagonal from left to right is constant.

Examples:

Input: n = 4,
m[][] = {
{1, 2, 3, 5},
{2, 3, 5, 8},
{3, 5, 8, 0},
{5, 8, 0, 9}
};
Output: Yes
All diagonal {1}, {2, 2}, {3, 3, 3}, {5, 5, 5, 5}, {8, 8, 8}, {9} have constant value.
So given matrix is Hankel Matrix.

Input: n = 3,
m[][] = {
{1, 2, 3},
{2, 3, 5},
{3, 9, 8}
};
Output: No

Observe, for a matrix to be Hankel Matrix, it must be of the form,

a0  a1  a2  a3
a1  a2  a3  a4
a2  a3  a4  a5
a3  a4  a5  a6

Therefore, to check if the given matrix is Hankel Matrix, we need check if each m[i][j] == ai + j. Now, ai + j can be define as:

m[i+j][0], if i + j < n
ai + j =
m[i + j - n + 1][n-1], otherwise

Below is the implementation of the above approach:

## C++

 // C++ Program to check if given matrix is// Hankel Matrix or not.#include using namespace std;#define N 4 // Function to check if given matrix is Hankel// Matrix or not.bool checkHankelMatrix(int n, int m[N][N]){    // for each row    for (int i = 0; i < n; i++) {         // for each column        for (int j = 0; j < n; j++) {             // checking if i + j is less than n            if (i + j < n) {                 // checking if the element is equal to the                // corresponding diagonal constant                if (m[i][j] != m[i + j][0])                    return false;            }            else {                 // checking if the element is equal to the                // corresponding diagonal constant                if (m[i][j] != m[i + j - n + 1][n - 1])                    return false;            }        }    }     return true;} // Drivers codeint main(){    int n = 4;    int m[N][N] = {        { 1, 2, 3, 5 },        { 2, 3, 5, 8 },        { 3, 5, 8, 0 },        { 5, 8, 0, 9 }    };     checkHankelMatrix(n, m) ? (cout << "Yes")                            : (cout << "No");    return 0;}

## Java

 // Java Program to check if given matrix is// Hankel Matrix or not.import java.io.*;import java.util.*; class GFG {     // Function to check if given matrix    // is Hankel Matrix or not.    static boolean checkHankelMatrix(int n,                                 int m[][])    {        // for each row        for (int i = 0; i < n; i++) {                 // for each column            for (int j = 0; j < n; j++) {                     // checking if i + j is less                // than n                if (i + j < n) {                         // checking if the element                    // is equal to the                    // corresponding diagonal                    // constant                    if (m[i][j] != m[i + j][0])                        return false;                }                else {                         // checking if the element                    // is equal to the                    // corresponding diagonal                    // constant                    if (m[i][j] !=                       m[i + j - n + 1][n - 1])                        return false;                }            }        }             return true;    }         // Drivers code    public static void main(String args[])    {        int n = 4;        int m[][] = {            { 1, 2, 3, 5 },            { 2, 3, 5, 8 },            { 3, 5, 8, 0 },            { 5, 8, 0, 9 }        };             if(checkHankelMatrix(n, m))            System.out.println("Yes");        else            System.out.println("No");    }} // This code is contributed by Anuj_67.

## Python 3

 # Python 3 Program to check if given matrix is# Hankel Matrix or not. N = 4 # Function to check if given matrix is Hankel# Matrix or not.def checkHankelMatrix(n, m):     # for each row    for i in range( 0, n):         # for each column        for j in range( 0, n):             # checking if i + j is less            # than n            if (i + j < n):                 # checking if the element is                # equal to the corresponding                # diagonal constant                if (m[i][j] != m[i + j][0]):                    return False                         else :                 # checking if the element is                # equal to the corresponding                # diagonal constant                if (m[i][j] !=                    m[i + j - n + 1][n - 1]):                    return False                 return True # Drivers coden = 4m =[[1, 2, 3, 5,],    [2, 3, 5, 8,],    [3, 5, 8, 0,],    [5, 8, 0, 9]](print("Yes") if checkHankelMatrix(n, m)                      else print("No")) # This code is contributed by Smitha.

## C#

 // C# Program to check if given matrix is// Hankel Matrix or not.using System; class GFG {     // Function to check if given matrix    // is Hankel Matrix or not.    static bool checkHankelMatrix(int n,                                int [,]m)    {        // for each row        for (int i = 0; i < n; i++) {                 // for each column            for (int j = 0; j < n; j++) {                     // checking if i + j is less                // than n                if (i + j < n) {                         // checking if the element                    // is equal to the                    // corresponding diagonal                    // constant                    if (m[i, j] != m[i + j, 0])                        return false;                }                else {                         // checking if the element                    // is equal to the                    // corresponding diagonal                    // constant                    if (m[i,j] != m[i + j - n                                  + 1, n - 1])                        return false;                }            }        }             return true;    }         // Drivers code    public static void Main()    {        int n = 4;        int [,]m = {            { 1, 2, 3, 5 },            { 2, 3, 5, 8 },            { 3, 5, 8, 0 },            { 5, 8, 0, 9 }        };             if(checkHankelMatrix(n, m))            Console.Write("Yes");        else            Console.Write("No");    }} // This code is contributed by Anuj_67.



## Javascript



Output

Yes

Complexity Analysis:

• Time Complexity: O(N2)
• Auxiliary Space: O(1)

My Personal Notes arrow_drop_up