Input: frequent items fitem, time slot table occur, key item _item, prefix prefix, minimum support min_sup, minimum |
repeat count min_rep, maximum period max_per, maximum interference distance max_dis |
() hash_period〈 , count ← 1〉; |
() FOR each in occur.tids DO |
() FOR each in occur.tids, DO |
() IF ≤ max_per THEN |
() hash_period [].count++; |
() ELSE break; |
() ENDFOR |
() ENDFOR |
() FOR each key that hash_period [] ≥ min_rep DO |
() hash_segment〈pos, (rep, last)〉; |
() vs_set (patten, period, rep, start) ← ⌀; |
() FOR each in occur.tids DO |
() ← mod ; |
() IF () == THEN |
() hash_segment [].rep++; |
() hash_segment [].last ← ; |
() continue; |
() IF hash_segment [].rep ≥ min_rep THEN |
() pattern ← extend(prefix, fitem); |
() vs_set ← vs_set (pattern, , hash_segment[].rep, hash_segment[]hash_segment[])); |
() hash_list[].rep ← 1; |
() hash_list[].last ← ; |
() ENDFOR |
() FOR each key that hash_list[] ≥ min_rep DO |
() pattern ← extend(prefix, fitem); |
() vs_set ← vs_set (pattern, , hash_list[].rep, hash_list[posi].hash_list[); |
() ENDFOR |
() svs_set ← sort(vs_set); |
() FOR each in svs_set DO |
() IF (.rep ≥ min_sup) && (_item∈pattern) THEN |
() Output(); |
() MergeSeg(, svs_set, .rep, min_sup, max_dis); |
() ENDFOR |
() ENDFOR |