Diagonally Dominant Matrix

25 May, 2022
In mathematics, a square matrix is said to be diagonally dominant if for every row of the matrix, the magnitude of the diagonal entry in a row is larger than or equal to the sum of the magnitudes of all the other (non-diagonal) entries in that row. More precisely, the matrix A is diagonally dominant if  
For example, The matrix  
is diagonally dominant because |a11| ≥ |a12| + |a13| since |+3| ≥ |-2| + |+1| |a22| ≥ |a21| + |a23| since |-3| ≥ |+1| + |+2| |a33| ≥ |a31| + |a32| since |+4| ≥ |-1| + |+2|Given a matrix A of n rows and n columns. The task is to check whether matrix A is diagonally dominant or not.Examples :  
Input : A = { { 3, -2, 1 },
              { 1, -3, 2 },
              { -1, 2, 4 } };
Output : YES
Given matrix is diagonally dominant
because absolute value of every diagonal
element is more than sum of absolute values
of corresponding row.

Input : A = { { -2, 2, 1 },
              { 1, 3, 2 },
              { 1, -2, 0 } };
Output : NO
 
The idea is to run a loop from i = 0 to n-1 for the number of rows and for each row, run a loop j = 0 to n-1 find the sum of non-diagonal element i.e i != j. And check if diagonal element is greater than or equal to sum. If for any row, it is false, then return false or print “No”. Else print “YES”.  
C++
Java
Python3
C#
PHP
Javascript
// CPP Program to check whether given matrix// is Diagonally Dominant Matrix.#include <bits/stdc++.h>#define N 3using namespace std; // check the given  matrix is Diagonally// Dominant Matrix or not.bool isDDM(int m[N][N], int n){    // for each row    for (int i = 0; i < n; i++)   {                // for each column, finding sum of each row.        int sum = 0;        for (int j = 0; j < n; j++)                        sum += abs(m[i][j]);                // removing the diagonal element.        sum -= abs(m[i][i]);         // checking if diagonal element is less        // than sum of non-diagonal element.        if (abs(m[i][i]) < sum)            return false;            }     return true;} // Driven Programint main(){    int n = 3;    int m[N][N] = { { 3, -2, 1 },                    { 1, -3, 2 },                    { -1, 2, 4 } };     (isDDM(m, n)) ? (cout << "YES") : (cout << "NO");     return 0;}
// JAVA Program to check whether given matrix// is Diagonally Dominant Matrix.import java.util.*; class GFG {         // check the given  matrix is Diagonally    // Dominant Matrix or not.    static boolean isDDM(int m[][], int n)    {        // for each row        for (int i = 0; i < n; i++)        {                         // for each column, finding            //sum of each row.            int sum = 0;            for (int j = 0; j < n; j++)                            sum += Math.abs(m[i][j]);                         // removing the diagonal element.            sum -= Math.abs(m[i][i]);                  // checking if diagonal element is less            // than sum of non-diagonal element.            if (Math.abs(m[i][i]) < sum)                return false;                }         return true;    }     /* Driver program to test above function */    public static void main(String[] args)    {        int n = 3;        int m[][] = { { 3, -2, 1 },                      { 1, -3, 2 },                      { -1, 2, 4 } };              if (isDDM(m, n))             System.out.println("YES") ;        else             System.out.println("NO");         }} // This code is contributed by  Arnav Kr. Mandal.
# Python Program to check# whether given matrix is# Diagonally Dominant Matrix. # check the given # matrix is Diagonally# Dominant Matrix or not.def isDDM(m, n) :     # for each row    for i in range(0, n) :                     # for each column, finding        # sum of each row.        sum = 0        for j in range(0, n) :            sum = sum + abs(m[i][j])             # removing the        # diagonal element.        sum = sum - abs(m[i][i])         # checking if diagonal        # element is less than        # sum of non-diagonal        # element.        if (abs(m[i][i]) < sum) :            return False     return True # Driver Coden = 3m = [[ 3, -2, 1 ],    [ 1, -3, 2 ],    [ -1, 2, 4 ]] if((isDDM(m, n))) :    print ("YES")else :    print ("NO") # This code is contributed by# Manish Shaw(manishshaw1)
// C# Program to check whether given matrix// is Diagonally Dominant Matrix.using System; class GFG {         // check the given matrix is Diagonally    // Dominant Matrix or not.    static bool isDDM(int [,]m, int n)    {        // for each row        for (int i = 0; i < n; i++)        {                 // for each column, finding            //sum of each row.            int sum = 0;            for (int j = 0; j < n; j++)                        sum += Math.Abs(m[i, j]);                     // removing the diagonal element.            sum -= Math.Abs(m[i, i]);                 // checking if diagonal element is less            // than sum of non-diagonal element.            if (Math.Abs(m[i,i]) < sum)                return false;                 }         return true;    }     // Driver program    public static void Main()    {        int n = 3;        int [,]m = { { 3, -2, 1 },                    { 1, -3, 2 },                    { -1, 2, 4 } };             if (isDDM(m, n))            Console.WriteLine("YES") ;        else            Console.WriteLine("NO");         }} // This code is contributed by Vt_m.
<?php// PHP Program to check whether// given matrix is Diagonally// Dominant Matrix. // check the given  matrix// is Diagonally Dominant Matrix or not.function isDDM( $m, $n){    // for each row    for ($i = 0; $i < $n; $i++)             {        // for each column, finding        // sum of each row.        $sum = 0;        for ( $j = 0; $j < $n; $j++)                        $sum += abs($m[$i][$j]);             // removing the diagonal element.        $sum -= abs($m[$i][$i]);         // checking if diagonal element        // is less than sum of non-diagonal        // element.        if (abs($m[$i][$i]) < $sum)            return false;    }     return true;} // Driver Code$n = 3;$m = array(array( 3, -2, 1 ),           array( 1, -3, 2 ),           array( -1, 2, 4 )); if((isDDM($m, $n)))echo "YES";elseecho"NO"; // This code is contributed by SanjuTomar?>
<script> // JavaScript Program to check whether given matrix// is Diagonally Dominant Matrix.     // check the given matrix is Diagonally    // Dominant Matrix or not.    function isDDM(m, n)    {        // for each row        for (let i = 0; i < n; i++)        {                           // for each column, finding            //sum of each row.            let sum = 0;            for (let j = 0; j < n; j++)                            sum += Math.abs(m[i][j]);                           // removing the diagonal element.            sum -= Math.abs(m[i][i]);                    // checking if diagonal element is less            // than sum of non-diagonal element.            if (Math.abs(m[i][i]) < sum)                return false;                  }           return true;    } // Driver code                     let n = 3;        let m = [[ 3, -2, 1 ],                      [ 1, -3, 2 ],                      [ -1, 2, 4 ]];                if (isDDM(m, n))             document.write("YES") ;        else            document.write("NO");             </script>
Output : 
YES
 Time Complexity: O(N2)
Auxiliary Space: O(1)
SanjuTomar
manishshaw1
splevel62
rohitkumarsinghcna
sagartomar9927
surinderdawra388
Mathematical
Matrix
Mathematical
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays
Matrix Chain Multiplication | DP-8
Program to find largest element in an array
Rat in a Maze | Backtracking-2
Sudoku | Backtracking-7
The Celebrity Problem