Research Article

A New Algorithm and Its Application in Detecting Community of the Bipartite Complex Network

Algorithm 1

Detecting community from the bipartite network based on generalized suffix tree.
Input: The matrix of relation of a bipartite graph .
Output: The initial communities.
(1)Begin
(2)// Step 1: Get the adjacent node sequences.
(3)fordo
(4)  Calculate the adjacent node sequences .
(5)  Let be the set of all adjacent node sequences, that is, .
(6)end for
(7)
(8)Step 2: Integrate the adjacent node sequences into a linked list to facilitate the establishment of a generalized suffix tree.
(9) Create a node class with two attributes, and .
(10)fordo
(11)  Convert to .
(12)end for
(13) Create a suffix linked list according to the node linked list:
(14)fordo
(15)  Convert each to .
(16)end for
(17)
(18)Step 3: Establish a generalized suffix tree according to the linked list of adjacent node sequences.
(19) Create a class with two attributes, and . Since the number of child nodes of the generalized suffix tree is uncertain, is an array of , which stores all its child nodes.
(20) node is null node.
(21) Insert all the linked lists of adjacent node sequence into the generalized suffix tree, the process is:
(22)fordo
(23)  
(24)  whiledo
(25)   ifthen
(26)    Insert the linked lists from to the node.
(27)   else
(28)     ; .
(29)   end if
(30)  end while
(31)end for
(32)
(33)Step 4: Get the bipartite cliques through the generalized suffix tree.
(34)fordo
(35)  if is a leaf node, that is, , or is a branch node, that is, then
(36)   Create the bipartite clique .
(37)  end if
(38)end for
(39)
(40)// Step 5: Adjust the bipartite cliques.
(41)
(42)// Step 6: Merging the bipartite cliques to form the initial communities.
(43)while true do
(44)  Calculate the tightnesses of bipartite cliques: .
(45)  ifthen
(46)   Merge the bipartite cliques.
(47)  end if
(48)end while
(49)
(50)Step 7: Adjust the isolated edges and divide them into communities.
(51) Taking the isolated edge as bipartite cliques, and calculate the tightness .
(52) Divide the isolated edges into the communities with the highest tightness.
(53)End