code: def is_adjacency_matrix_symmetric(adjacency_matrix):
      
      # Verify that the matrix is square
      num_columns = len(adjacency_matrix)
      for column in adjacency_matrix:
          # In a square matrix, every row should be the same length as the number of columns
          if len(column) != num_columns:
              return False
  
      # Loop through the bottom half of the matrix and compare it to the top half
      # --We do the bottom half because of how we construct adjacency matrices
      max_i = 0
      for j in range(num_columns):
          for i in range(max_i):
              # If i == j, we can skip ahead so we don't compare with ourself
              if i == j:
                  continue
              # Compare the value in the bottom half with the mirrored value in the top half
              # If they aren't the same, the matrix isn't symmetric
              if adjacency_matrix[j][i] != adjacency_matrix[i][j]:
                  return False
          max_i += 1
  
      # If we reach this far without returning false, then we know that everything matched,
      # which makes this a symmetric matrix
      return True
docs: Determines if an adjacency matrix is symmetric.
         Ref: http://mathworld.wolfram.com/SymmetricMatrix.html