I. Introduction
A graph is often employed to interpret the relationships among a set of objects. These objects are called nodes or vertices and the relationship of any pair of nodes is referred to as an edge or a link. Many complex networks, including social networks [1], [2], [3], [4], biological networks [5], [6], finite state machines [7], [8], and molecular structures [9], [10] can be modeled as graphs. The most common way to represent and store graphs is the adjacency matrix formation [11], [12], [13], [14], [15], [16]. Adjacency matrix is a convenient mathematical tool for representing the relationship (as an edge) between each pair of nodes. However, it would incur redundant memory storage containing many zero entries if a graph has only few edges [17]. In other words, such an adjacency matrix is a sparse matrix (i.e., it contains few nontrivial entries). Moreover, when a sparse adjacency matrix (graph) is involved in a linear system of equations (as appearing in many attribute association problems), intermediate redundant computations related to the zero entries could be avoided. Another way to represent and store graphs is the graph data structure (or adjacency list) [18], [19], [20]. In contrast to the adjacency matrix formation, the graph data structure only stores nontrivial entries. However, if a graph contains numerous edges, i.e., it is a dense graph, it is computationally cumbersome to partition a subgraph (to extract a node-centric subgraph) through the graph data structure [21], [22], [23].