一种基于时效平衡树的数据处理方法及系统
文献发布时间:2024-01-17 01:20:32
技术领域
本发明涉及一种数据处理方法及系统,具体涉及一种基于时效平衡树的数据处理方法及系统,属于计算机数据处理领域。
背景技术
平衡树是计算机科学中的一类数据结构,是经过改进的二叉查找树。相比于普通的二叉查找树,平衡树可以平均化数据查询目标到树根的距离,使所有叶子节点的深度趋于平衡,或使在树上所有可能查找的均摊复杂度偏低。平衡树一般支持旋转、插入、删除、修改等基本操作。目前计算机领域经常使用的平衡树有AVL树、树堆(Treap)、伸展树(SplayTree)、红黑树(Red-BlackTree)等。
目前已有的计算机的平衡树技术,如AVL树、红黑树等平衡树的结构,普遍强调整棵树结构的平衡,不会随着计算机的数据查询频次改变,这意味着对于一棵平衡树结构最坏复杂度在对数时间,同时也意味着至少需要对数级别的时间执行单次的数据查询。即使个别数据查询极其频繁,这些树结构仍然会消耗对数时间完成查询操作,使短期内被查询频率最高的节点通常消耗代价过高。而伸展树等结构又缺乏对时效性的有效体现,不具备近期的数据频繁查询比以往的频繁查询更需要被及时优化的结构特性。因此,平衡树缺乏对查询频率和近期查询的时效性的敏感性,导致每次查询时间过长,需要提出一种降低近期频繁查询代价的平衡树方法。
发明内容
本发明为了解决计算机的平衡树类结构上存在的短期内被查询频率最高的节点通常消耗代价过高、单次查询消耗通常固定为对数级别时间,使平衡树缺乏对查询频率和近期查询的时效性的敏感性,导致每次查询时间过长的问题,进而提出了一种基于时效平衡树的数据处理方法及系统。
本发明采取的技术方案是:
它包括以下步骤:
S1、构建时效平衡树:
时效平衡树为二叉查找树,时效平衡树上的每个节点至多有一个左子树和至多有一个右子树,时效平衡树上的每个节点用于检索键值对,计算并记录时效权值和记录查询轮次,时效权值为节点的累计使用次数;
S2、定义时效平衡树的失衡度为左子树和右子树时效权值之差的绝对值;
定义每棵子树的失衡度最小化时,时效平衡树处于平衡状态;
定义时效平衡树上每个节点的旋转方式包括单向右旋平衡处理LL、单向左旋平衡处理RR、先左后右双向旋转平衡处理LR、先右后左双向旋转平衡处理RL;
S3、将计算机数据库中的数据按照时效平衡树的结构进行存储;
S4、获取待处理的计算机数据,将待处理的计算机数据输入S1的时效平衡树中,找到当前数据所在的节点,记录节点的时效权值,基于S2和节点的时效权值从下向上旋转时效平衡树的结构,更新时效平衡树中所有节点的时效权值,直至时效平衡树处于平衡状态,输出处理结果。
进一步地,所述S1中时效平衡树满足以下条件:
条件1、空树和单节点均是时效平衡树;
条件2、时效平衡树的左子树和右子树均是时效平衡树。
进一步地,所述S1中时效平衡树每个节点的时效权值由衰减法计算得到。
进一步地,所述衰减法为:
c*η^(F-H)
其中,c表示某个节点的时效权值,η表示衰减速率,F表示某个节点的当前处理轮次,H表示某个节点的历史最晚处理轮次。
进一步地,所述S2中单向右旋平衡处理LL为:
根节点A的左子树根节点为B,根节点A的右子树为E,左子树根节点B的左子树为C,左子树根节点B的右子树为D,当根节点A进行一次右旋转操作,左子树根节点B变为新根节点,左子树C变为新根节点B的左子树,根节点A变为新根节点B的右子树根节点,右子树D为右子树根节点A的左子树,右子树E为右子树根节点A的右子树;
单向左旋平衡处理RR为:
根节点A的左子树为B,根节点A的右子树根节点为C,右子树根节点C的左子树为D,右子树根节点C的右子树为E,当根节点A进行一次左旋转操作,右子树根节点C变为新根节点,右子树E变为新根节点C的右子树,根节点A变为新根节点C的左子树根节点,左子树D为左子树根节点A的右子树,左子树B为左子树根节点A的左子树;
先左后右双向旋转平衡处理LR为:
对某个节点的左子树进行单向左旋平衡处理RR,再对当前整棵时效平衡树进行单向右旋平衡处理LL;
先右后左双向旋转平衡处理RL为:
对某个节点的右子树进行单向右旋平衡处理LL,再对当前整棵时效平衡树进行单向左旋平衡处理RR。
进一步地,所述S4中的处理包括数据查询、数据增加、数据删除和数据修改。
进一步地,所述S4具体过程为:
将待处理的计算机数据输入S1的时效平衡树中,获得当前数据所在的节点,记录当前节点的时效权值,获取当前节点到时效平衡树根节点路径上的所有节点,以从下到上的顺序依次对时效平衡树所有节点的子树进行旋转,判断每棵子树旋转后的失衡度是否降低,当失衡度降低时,则利用衰减法计算当前节点的时效权值,若当前节点左子树时效权值增加或右子树时效权值降低时,依次执行单向右旋平衡处理LL和先左后右双向旋转平衡处理LR;若当前节点左子树时效权值降低或右子树时效权值增加时,依次执行单向左旋平衡处理RR和先右后左双向旋转平衡处理RL,直至对应子树的失衡度最小化,完成子树的处理;否则保持子树的原有状态;直至每个子树的失衡度最小化,即时效平衡树为平衡状态,输出处理结果。
进一步地,所述利用衰减法计算当前节点的时效权值,具体过程为:
针对当前处理,设定衰减速率η及查询窗口大小M,0≤η≤1,M为正整数,定义当前处理为当前节点的第K次处理,将K与M的商向下取整作为当前处理轮次F,即M为100时,第0-99次查询为第一轮次,第100-199次查询为第二轮次,以此类推;根据当前节点的历史最晚处理轮次H,利用衰减法更新当前节点的时效权值c,且令F赋值为H;
对于当前处理中未更新的节点,它的时效权值在下次更新时与η
进一步地,所述查询窗口大小M由用户根据具体的查询数量和查询时间间隔进行设定。
一种基于时效平衡树的数据处理系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如一种基于时效平衡树的数据处理方法中任一步骤。
有益效果:
本发明构建了时效平衡树,将计算机数据库中的数据按照时效平衡树的结构进行存储。时效平衡树实际上为二叉查找树,时效平衡树上的每个节点至多有一个左子树和至多有一个右子树,空树和单节点均是时效平衡树,时效平衡树的左子树和右子树均是时效平衡树,时效平衡树上的每个节点除了用于检索键值对外,还包括时效权值和记录查询轮次两个属性,时效权值为节点的累计使用次数,时效权值由本发明提出的衰减法计算得到,当每个节点被处理时,它被查询的次数累计加1,但时效权值不会加1,反而时效权值会衰减,保证时效权值可以更好表征最近的频繁查询、更倾向忽略较旧的频繁查询,合理调节时效权值使平衡持续有效。定义时效平衡树的失衡度为左子树和右子树时效权值之差的绝对值,定义时效平衡树的每棵子树的失衡度最小化时,时效平衡树处于平衡状态,定义时效平衡树上每个节点的旋转方式包括单向右旋平衡处理LL、单向左旋平衡处理RR、先左后右双向旋转平衡处理LR、先右后左双向旋转平衡处理RL。在应用时,将待处理的计算机数据输入时效平衡树中,找到当前数据所在的节点,记录节点的时效权值,基于上述定义和节点的时效权值从下向上旋转时效平衡树的结构,更新时效平衡树中所有节点的时效权值,直至时效平衡树处于平衡状态,输出处理结果。
本发明的时效平衡树基于加权平衡树的理论,通过时效权值影响平衡树的平衡结构和旋转方法,即通过与查询次数和时效性相关的权值有效降低近期频繁的查询消耗的时间。本发明可用于数据查询、数据增加、数据删除和数据修改。通过使用本发明的节点附带时效权值的平衡方法执行平衡树的旋转操作,使得查询频率较高的、被查询时间较近期的节点被提高到树中较易查询的位置,在高频节点被频繁查询的查询环境下,平均查询效率会得到有效提升。
附图说明
图1是本发明的结构流程图;
图2是单向右旋平衡处理的示意图;
图3是单向左旋平衡处理的示意图;
图4是实施例中时效平衡树的初始状态示意图;
图5是实施例中时效平衡树的旋转状态示意图;
图6是实施例中时效平衡树的最终状态示意图;
具体实施方式
具体实施方式一:结合图1-图3说明本实施方式,本实施方式所述一种基于时效平衡树的数据处理方法,它包括以下步骤:
S1、构建时效平衡树,将计算机数据库中的数据按照时效平衡树的结构进行存储。
时效平衡树是一种二叉查找树,满足以下条件:
条件1、空树和单节点均是时效平衡树。
条件2、时效平衡树的左子树和右子树均是时效平衡树。
时效平衡树上的每个节点至多有一个左子树和至多有一个右子树。时效平衡树上的每个节点除了用于检索键值对外,还同时拥有“时效权值”和记录“查询轮次”两个属性,这两个属性均用于时效平衡树的旋转过程,时效平衡树的旋转应基于时效平衡树两侧的时效权值,时效权值为节点的累计使用次数。本发明设计的时效权值拥有随时间衰减的特性,即时效权值是根据“衰减法”计算得到的,当每个节点被查询时,查询次数累计加1,但由于考虑了时效衰减率,所以时效权值不会加1,反而时效权值会被衰减。
所述衰减法为:
c*η^(F-H)
其中,c表示某个节点的时效权值,η表示衰减速率,F表示某个节点的当前处理轮次,H表示某个节点的历史最晚处理轮次。
S2、定义时效平衡树的失衡度为左子树和右子树时效权值之差的绝对值。
定义时效平衡树每棵子树的失衡度最小化时,时效平衡树处于平衡状态。所述子树为时效平衡树上除根节点外,每个节点与其对应的左子树或者右子树或者左子树和右子树组成的树结构。当节点无左子树或者无右子树或者无左右子树时,以此节点为根同样构成一个子树。如图5所示,这棵树的所有子树:以C为根的树:C;以D为根的树:D;以G为根的树:G;以E为根的树:E G;以F为根的树:F E G;以B为根的树:B C D。
定义时效平衡树上的每个节点的旋转方式包括:
单向右旋平衡处理LL:如图2所示,根节点A的左子树根节点为B,根节点A的右子树为E,左子树根节点B的左子树为C,左子树根节点B的右子树为D。根节点A进行一次右旋转操作,使得左子树根节点B变为新根节点,则此时左子树C变为新根节点B的左子树,根节点A变为新根节点B的右子树根节点,右子树D为右子树根节点A的左子树,右子树E为右子树根节点A的右子树。
单向左旋平衡处理RR:如图3所示,根节点A的左子树为B,根节点A的右子树根节点为C,右子树根节点C的左子树为D,右子树根节点C的右子树为E。当根节点A进行一次左旋转操作,使得右子树根节点C变为新根节点,则此时右子树E变为新根节点C的右子树,根节点A变为新根节点C的左子树根节点,左子树D为左子树根节点A的右子树,左子树B为左子树根节点A的左子树。
先左后右双向旋转平衡处理LR:首先对某个节点的左子树进行单向左旋平衡处理RR,再对当前整棵时效平衡树进行单向右旋平衡处理LL。
先右后左双向旋转平衡处理RL:首先对某个节点的右子树进行单向右旋平衡处理LL,再对当前整棵时效平衡树进行单向左旋平衡处理RR。
S3、对计算机数据库中某个待处理的数据执行查询或增加或删除或修改操作时,对S1中的时效平衡树从上向下进行处理,找到当前数据所在的节点,记录节点的时效权值,基于S2和节点的时效权值从下向上逐级旋转时效平衡树的结构,以更新时效平衡树中所有节点的时效权值,直至时效平衡树处于平衡状态,输出查询或增加或删除或修改结果。具体过程为:
将待处理(查询或增加或删除或修改)的计算机数据输入S1的时效平衡树中,找到当前数据所在的节点或子树,记录当前节点或子树的时效权值,找出当前节点或子树到时效平衡树根节点路径上的所有节点,以从下到上的顺序依次对时效平衡树所有节点的子树进行旋转,通过比较每棵子树旋转前后的失衡度,判断每棵子树旋转后的失衡度是否降低,若失衡度降低,则利用衰减法计算当前节点的时效权值,若当前节点左子树时效权值增加或右子树时效权值降低时,依次执行单向右旋平衡处理LL和先左后右双向旋转平衡处理LR;若当前节点左子树时效权值降低或右子树时效权值增加时,依次执行单向左旋平衡处理RR和先右后左双向旋转平衡处理RL,直至对应子树的失衡度最小化,完成子树的处理;若失衡度不降低,则不进行任何操作,保持子树的原有状态;直至所有子树都处理完成,且时效平衡树为平衡状态,输出处理结果。
上述利用衰减法计算当前节点的时效权值,具体为:
针对当前处理,设定衰减速率η和查询窗口大小M,0≤η≤1,M为正整数,M由用户根据具体的查询数量和查询时间间隔进行设定。定义当前处理为当前节点的第K次处理操作,将K与M的商向下取整作为当前处理轮次F,例如,M为100时,则第0-99次查询为第一轮次,第100-199次查询为第二轮次,以此类推。根据当前节点的历史最晚处理轮次H(假设当前处理轮次F为第5次,则历史最晚处理轮次H为第4次),利用衰减法更新当前节点的时效权值c,且用F更新H,令F赋值为H,即F:=H。此过程有如下保证:
对于当前处理中未更新的节点,它的时效权值在下次更新时与η
具体实施方式二:结合图1-图3说明本实施方式,本实施方式所述一种基于时效平衡树的数据处理系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如一种基于时效平衡树的数据处理方法中任一步骤。
实施例
如图4-图6所示,本发明考虑时效平衡树上的若干次查询操作对平衡树结构的影响。为了演示时效平衡树的平衡方法,所有查询操作均在同一轮次当中,不考虑时效衰减。初始状态如图4所示,其中,共有7个待查询的节点,中序遍历结果为CBDAFEG。旋转操作将保证中序遍历结果不发生变化。累计查询B节点4次、F节点4次后,将发生如图5的变化:F节点被旋转到右子树的根节点处,B节点位置不变。继续查询F节点15次后,F节点只有作为树根节点才会使左右子树的失衡度最低。通过左旋操作将F节点提至树根。最终树的形状如图6所示,可以看到,最经常被查询的F节点在树根位置,最容易被访问到。此前的树根节点A因为没有收到任何查询,其权重已经非常低,被旋转到了树中较深的位置。
- 一种基于元数据的数据共享自订阅处理方法及系统
- 一种分布式系统以及基于该系统的数据处理方法
- 一种基于大数据的热水器系统故障诊断处理方法及系统
- 一种基于全局现车管理系统的数据系统及其数据处理方法
- 一种基于全局现车管理系统的数据系统及其数据处理方法