//construct data structure |
() Define hash table h_edgepatterncnt_all |
() for every subgraph in list subgraphs |
() define hash table h_edgepattern_cnt |
() for every edge in |
() store key: value pair, key is the edge pattern, value is count of pattern |
() end for |
() store key: value pair in h_edgepatterncnt_all, key is a unique ID, value is an object |
which stores the concatenation of key and value pair h_edgepattern_cnt, |
() end for |
() for every subgraph in list subgraphs |
() define a list of IDs pointing to h_edgepatterncnt_all (data structure 1) |
() end for |
() for every object in h_edgepatterncnt_all |
() define a list of IDs pointing to list of subgraphs (data structure 2) |
() end for |
//perform query |
() for every subgraph in list subgraphs |
() define set of subgraphs with matching patterns s_match |
() use data structure 1 to get list of IDs |
() expand list of IDs to include more occurrence of patterns |
() for every id in IDs |
() use data structure 2 to get set of subgraphs s_thismatch |
() if first id then s_match = s_thismatch |
() else s_match = s_match ∩ s_thismatch |
() end for |
() if s_match is empty after excluding itself then include into distinct modules |
() else verify_matching(, s_match) |
() end for |