## 2 Related Work  
Apriori is the first algorithm proposed by [PERSON] et al. [1] for mining association rules, and it is widely used in various fields. This algorithm is based on the concept of candidate itemsets. When the support value of a candidate itemset satisfies the minimum support threshold, then this candidate itemset is called a large itemset. Although the Apriori algorithm can discover frequent patterns effectively, its disadvantage is the long execution time for scanning databases multiple times to generate the candidate itemset. [PERSON] et al. [11] proposed the direct hashing and pruning (DHP) algorithm, which is based on the Apriori algorithm that can use a hash table and prunes the size of the candidate K+1 itemsets generated at each step. This method can generate large itemsets more efficiently than the Apriori algorithm. The experimental results also proved that when the size of the database grows, the efficiency of the DHP algorithm is better than that of the Apriori algorithm. However, the performance of the DHP algorithm depends strongly on the hash table size. To mitigate the drawbacks of the DHP Algorithm, [PERSON] et al. [12] proposed the perfect hashing and pruning (PHP) algorithm, which reduces the size of the database and leverages perfect hashing for the hash table generated at each stage. Although the PHP algorithm can solve the collision problem of the DHP algorithm, it also demands more memory space to store the hash table. Therefore, [PERSON] et al. [13] proposed the transaction hashing and pruning (THP) algorithm, which created a new scheme for the hash table. As a result, the THP algorithm can either overcome the disadvantage of the DHP algorithm or the problem of the PHP algorithm. [PERSON] et al. [14] proposed the dynamic itemset counting (DIC) algorithm, in which the database is partitioned into blocks. The DIC algorithm can reduce the number of passes and it searches the database as unit blocks to overcome the high execution time in the Apriori algorithm. However, this method should consider how to suit the block size. With increasing data, previous studies focused on the parallel-distributed structure. [PERSON] et al. [15] proposed an Apriori algorithm based on MapReduce mode, which uses Hadoop distributed file system to handle massive datasets. In [16], the authors proposed the distributed parallel Apriori (DPA) algorithm, which is based on the Apriori algorithm. The main concept is to avoid the problems associated with multiple scans by implementing the message passing interface (MPI) method, which is a message passing system for programming parallel computers. MPI can be used to create parallel programs in C, C++, Fortran, or Python. The DPA algorithm reduces the database scanning time and also achieves a better load balance by storing transaction identifications (TIDs) in a table structure. However, this method has the same drawbacks as the Apriori algorithm; they both generate candidate itemsets during the process of mining association rules. To overcome the problem of the Apriori algorithm, [PERSON] et al. [17] proposed the FP-growth algorithm. The FP-growth algorithm operates in two steps: (a) scan the database and then record a list of frequent items in descending order; (b) scan the database for the second time, obtain conditional pattern bases from the FP tree, and construct a conditional FP tree from the conditional pattern bases. The conditional FP tree is recursively mined until the tree contains a single item. This algorithm only scans the database twice and does not generate a candidate itemset. However, the main disadvantage of FP-growth is that the FP tree may not fit in memory. [PERSON] et al. [18] proposed the multiple local frequent pattern tree algorithm based on the FP-growth algorithm, in which the FP tree is divided in chunks and the shared counters are used to cumulate the frequencies. This algorithm can efficiently improve the problem of the dependent, but it may have issues if the shared memory is locked.