In order to model our problem, we first need to translate it from a matrix to a graph. And while doing so, we can either model it as a simple graph, or as a bipartite graph. Both the models will give us the results we are looking for using different algorithms and by using different amount of resources depending on the type of input we pass. However, for our project right now, we shall be focusing only on the simple graph model. The graph representation of our matrix is rather simple, it contains `n` vertices, each representing the n columns in our differential matrix. 2 vertices and have an edge between them if the and columns are non-orthogonal, i.e there exists some row such that and elements of our matrix are both non zero.