One of the new sciences that have emerged in the last couple of decades is the network science, which has the ability to model several natural processes such as protein-protein interaction networks, brain neuron networks, technologic networks, social networks, etc1, 2. The graph of these networks has a series of non-trivial characteristics that distinguishes them from other graphs and provides the ability to analyze them briefly. These shared characteristics can be divided into three categories: microscopic, mesoscopic, and macroscopic. Some of the most important characteristic of the macro level are the small world phenomenon, heavy-tailed degree distribution, clustering coefficient, fragility, and robustness3, 4. In addition, each node has some unique characteristics which cause it to be different from other nodes. These are called the micro level characteristics. One of these characteristics is each node’s centrality measures. Another level of characteristics exists for these networks which is a result of one group of nodes called communities5. Communities are sets of nodes in which interactions between nodes are a lot stronger than other node sets. Therefore, it could be said that a preferential link exists between each community’s nodes. The viewpoint in community structure is the link between the micro and macro levels. Generally, the presence of a community structure in these networks has caused their graphs to be sparse in global view, and dense in local view. The network’s community structure provides insight into a graph’s organization5. This makes it possible to focus on a graph’s relatively independent parts. Among applications of community detection are identification of proteins with identical performance in protein-protein interaction networks, webpages with similar topics on the Internet, a set of similar customers on an e-commerce website, a group of friends on a social networking website, and so on. Also, it gives us the ability to identify the exact role of nodes and their importance according to their location in the community structure6. Many studies have been conducted on community detection in complex networks. Over the past decade, many algorithms have been offered for community detection and each of them attempt to do so in different ways. Previous work on community detection can be broadly categorized into two types of global and local. So far, many algorithms have been presented in the global type most important of which are hierarchical, modularity optimization, and based on random walks7. Global methods need the whole graph’s information for detection of community structure. These methods cannot be used for today’s dynamic and large-scale complex networks due to their high time complexity. Recently, however, local methods have been introduced that can detect community structure using local information and have a lower time complexity. Most algorithms in this category can detect only one community through detecting and expanding a node and optimizing a target function8-10. There are very few algorithms that can detect all communities of a graph at the same time using its local information.