hash tree(哈希树),是由tree和hash table结合,旨在优化hash table冲突解决方案的一种数据结构。

在链式hash table中,若关键字发生冲突,则创建单个新节点链到冲突节点之后,并把关键字插入到新节点。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

而在hash tree结构中,若关键字发生冲突,则创建一组新节点链到冲突节点之后,并把关键字hash后插入到某个新节点中。

每个非叶节点中含有指向下一层子节点的m指针,而叶节点里存有指向候选项集的指针

Apriori算法 人工智能 第1张Apriori算法 人工智能 第2张

项集插入hash tree的过程如下:


1:用k表示插入进行到第几层,初始值为1.

2:对输入项集的第k项进行hash,得到n

3:判断当前层的根节点的第n个子节点是否为叶节点,若非则跳到1继续

4:将项集插入到该叶子节点是否

5:判断该叶子节点是否已满,若是则进行分裂,否则插入结束,分裂过程是

将该节点原有的项集和新项集按第level项进行hash,然后分别插入到下一层

的新叶节点中,而原叶节点变为非叶节点

例如

哈希函数如下图所示,1,4,7映射到左子树,2,5,8映射到中子树,3,6,9映射到右子树

Apriori算法 人工智能 第3张

且每个叶子节点最多含有三个项集

现有以下项集待插入:{1 4 5}, {1 2 4}, {4 5 7}, {1 2 5}, {4 5 8}

插入第一个项集时,用项集的第1项做hash,映射到根节点的左子树,于是得到:

Apriori算法 人工智能 第4张

Apriori算法 人工智能 第5张Apriori算法 人工智能 第6张

插入第二项集时,仍然用第1项做hash,映射到同一个叶节点:

Apriori算法 人工智能 第7张

Apriori算法 人工智能 第8张Apriori算法 人工智能 第9张

第三项插入时同理

Apriori算法 人工智能 第10张

Apriori算法 人工智能 第11张Apriori算法 人工智能 第12张

插入第四项时,仍然映射到同一个叶节点,但由于叶节点最大项数为3,所以需要进行分裂操作,把原来的3项集和新的项集以第2项做hash,映射到新的叶节点:

 

Apriori算法 人工智能 第13张Apriori算法 人工智能 第14张

Apriori算法 人工智能 第15张

  Apriori算法 人工智能 第16张    
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄