美国以及国际上所定义的满二叉树,即full binary tree,和国内的定义不同,美国NIST给出的定义为:A binary tree in which each node has exactly zero or two children. In other words, every node is either a leaf or has two children. For efficiency, any Huffman coding is a full binary tree.
满二叉树的任意
节点,要么度为0,要么度为2.换个说法即要么为
叶子结点,要么同时具有左右孩子。
霍夫曼树是符合这种定义的,满足国际上定义的满二叉树,但是不满足国内的定义。
一种基于满二叉树的原地
快速排序算法。 与经典快速排序算法相比, 新算法每趟划分采用动态枢轴而不是静态枢轴, 同时新算法利用满二叉树的特点计算下一趟划分的枢轴位置和元素范围, 避免使用递归或开辟内存堆栈。 实验表明, 新算法的时间性能优于最好的原地排序—堆排序。 原地快速排序二叉树的概念对排序算法的研究和改进具有很好的理论和实用参考价值。
给定一个长度为m的顺序表 ,每个元素由一个关键字和其他的相关信息构成 , 排序算法的任务就是根据关键字以非降序(或非升序)重新安排数组中的元素(不失一般性, 以下我们按非降序排序)。排序算法仅允许做关键字比较和元素移动操作, 并用关键字比较次数和元素移动次数 ,衡量排序算法的时间性能和空间性能 。如果一个算法所使用的额外空间是一个固定常数 ,与处理问题的规模无关 ,则我们称该算法是原地的。
快速排序算法是最好的排序算法之一, 它的基本思想是通过若干次划分得到有序表。一次划分后枢轴左边元素的关键字都不大于枢轴的关键字, 枢轴右边元素的关键字都不小于枢轴的关键字 。然后对枢轴左边和右边的元素继续划分 ,直到每个部分都只有1个元素为止。经典快速排序或用递归函数实现或自己开辟内存堆栈实现,需要的额外空间, 都不是严格意义上的原地算法 。在本文中 ,将满二叉树的概念引入快速排序中, 利用满二叉树的特点计算下一趟划分的枢轴位置和元素范围 ,避免了使用递归或开辟内存堆栈 ,从而将快速排序改造成严格原地的。实验表明, 该算法的时间性能优于最好的原地排序 —堆排序。
在推荐系统中应用K-means算法聚类可有效降维,然而聚类效果往往依赖于选定的初始中心,并且一旦选定目标簇后,推荐过程只针对目标簇进行,与其他簇无关。针对上述两个问题,提出一种基于满二叉树的二分K-means聚类并行推荐算法。该算法首先反复迭代二分K-means算法,迭代过程中使用簇内凝聚度作为分裂阈值,形成一颗满二叉树;然后通过层次遍历将用户归入到K个叶子节点(簇);最后针对K个簇,应用MapReduce框架进行并行推荐预测。MovieLens上的实验结果表明,该算法可大幅度提高推荐系统准确性,同时增强系统可扩展性。
为提高输入信息较长时重复累积码的编码效率,对重复累积码的交织器进行优化改进。按照满二叉树子节点的奇偶排列方式对交织器的输入序列依次分组,并利用叶子节点对分组信息重新组合获得输出序列,与S随机交织器相比,大大降低输入信息之间的相关性,避免了RA码校验矩阵中I、II类4环的产生,保证了译码的准确性。仿真结果表明,在输入信息序列较长时,改进的交织器编码速度快且误码率远低于行列规则交织器;与S随机交织器相比,改进的交织器可以显著提高编码速率,且在误码率同为时约有0.3dB的增益。