`
java小牛
  • 浏览: 7212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

分类编码生成算法

阅读更多

        在做软件的时候常常会遇到商品分类、栏目、频道分类、权限级别的问题(以下统一称为分类问题),本文试图探讨通用分类算法的设计问题,旨在通过合理设计提高生成树形目录、查询某一分类(可能包含子分类)下所有内容(为了讨论方便暂且以商品为例)的效率。

        最常用的分类设计是通过增加一个父id的字段标识分类的父子关系,这样设计的优点是实现简单、可以无限极分类,不需要分类编码算法;但缺点也是很明显的,最明显的不足就是查询某一分类的所有子类及其商品效率低下,这点不足在生成分类树的时候可以在前台界面利用ajax技术异步获取或通过提前处理的方式把分类取出来放到内存或文件中得到弥补,在只取某一分类下所有商品而不需要得到分类信息时的效率将很难提升。

        在设计分类时如果引入分类编码的概念将有助于提高分类查询的效率。分类编码的关键是分类编码算法,这里提出两种分类编码算法:二进制位编码算法和十进制位编码算法。

        二进制位编码算法

        二进制位编码算法是用一定位数的二进制位对分类进行编码,比如用16(4+6+6)位来编码,第一级用4位表示,可表示2^4=16个编码,第二级、第三级分别用6位表示,可表示64个编码,可根据业务需要调整编码的总位数和每一级的位数。

        显然,如果我们得到一个分类的编码0010 000101 000001,我们就知道这是一个三级分类,其父类是             0010 00010 00000,父类的父类是0010 000000 000000。

        现在我们在一般情况下讨论二进制位编码问题,设类别的级数为k,第i层的编码位数为Ni(1=<i<=k),那么总的编码位数为N(N1+N2+……+Ni),则任何一个编码的形式为2^(N-(N1+N2+…+Ni))*j + pcode,其中i表示第i层分类,j表示第i层的第j个分类,pcode表示父编码的十进制值,这样一个分类的编码就可以分为两部分,一部分层编码2^(N-(N1+N2+…+Ni))*j,另一部分为其父编码。

        采用二进制位编码算法分类设计的优点是:

        分类层级清晰,一目了然

        查询效率高

        缺点是:

        每一级的位数固定,表示的分类个数有限,不太容易支持无限极分类

        分类达到最大数时扩展分类位数和调整每一级的分类位数困难

        总编码长度比较长

        十进制位编码算法

        十进制位编码是每一级采用一定位数十进制数作为编码,每级编码程度固定,用分隔符隔开,编码总长度不固定,比如用4位来编码用“_”作为分隔符。

        如果我们得到一个分类编码0020_1008_9800, 我们就知道这是一个三级分类,其父类是0020_1008,父类的父类是0020。

        这样编码的一般形式是:pcode_j,其中pcode表示父编码,j表示这一级的第j个编码。

        十进制位编码算法分类设计的优点是:

        分类层级清晰,一目了然

        查询效率高

        完美支持无限极分类

        缺点是:

        每一级的位数固定,表示的分类个数有限

        每一级分类个数达到最大数时的调整困难

 

        注:每级采用固定位数的编码是为了分类显示排序方便,如果不需要考虑这点便捷性可以采用不固定位数的编码,这样就真正实现了无限极分类,而且每级分类数量也没有限制。

 

        总结,二进制位编码算法和十进制位编码算法在分类结构设计上已经进步了很多,而且大部分的系统在设计之初就能遇见到系统的最大分类数量,可以在设计时预留空前量来弥补分类个数固定的缺陷。如采用十进制位编码方式,4位编码,每一级能表示9999个分类,这已经能满足大多数系统的要求了。

0
0
分享到:
评论

相关推荐

    线缓冲区生成算法

    线缓冲区生成算法是一种在计算机图形学中广泛使用的优化技术,它主要用于提高图形绘制的效率。在Java编程语言中,我们可以利用线缓冲区生成算法来有效地处理大量的线条绘制任务,尤其是在2D图形渲染中。本工程提供的...

    基于实数编码遗传算法的投影寻踪Matlab代码_模糊BP_

    【标题】"基于实数编码遗传算法的投影寻踪Matlab代码_模糊BP_" 涉及的主要知识点包括实数编码遗传算法、投影寻踪法、模糊神经网络以及BP算法在水环境污染物等级分类中的应用。 一、实数编码遗传算法(Real Number ...

    实数编码和二进制编码遗传算法的源代码

    本主题的焦点是实数编码和二进制编码在遗传算法中的应用,这两种编码方式是遗传算法中常见的两种表示个体的方式。 **实数编码:** 实数编码,也称为浮点编码,是将解空间中的每个解用一个或多个连续的实数来表示。...

    论文研究-基于控制流图支配树的测试数据灰度编码生成.pdf

    为进一步提高数据测试算法性能,提出一种基于控制流图支配树的测试数据灰度编码进化生成算法。利用三角分类程序示例构建数据测试的数据流控制流图,并利用其支配树关系构建测试数据的数据流分析,建立程序变量间的...

    java语言实现自动编码器算法(autoencoder)

    在实际应用中,自动编码器不仅用于降维,还可以作为预训练模型,提升其他机器学习任务的性能,比如分类或回归。此外,变分自动编码器(VAE)和自注意力编码器(Self-Attention Autoencoder)是自动编码器的扩展,...

    稀疏表示分类图形识别算法

    在"稀疏表示分类图形识别算法"中,首先,我们需要构建一个训练集,这个训练集中包含多个人脸图像,用于构建字典。然后,使用优化算法(如LASSO、BP算法或OMP算法)找到输入测试图像最稀疏的表示,即将测试图像投影到...

    采用定长节点分类窗口的低误码平台LT编码算法.docx

    ### 采用定长节点分类窗口的低误码平台LT编码算法 #### 1. 引言与背景 喷泉码是一种高效的数据传输技术,尤其适用于大规模数据分发和可靠广播场景。LT码作为喷泉码的一种代表,因其高度灵活性而备受青睐。LT码的...

    论文研究-多属性能力agent的复杂联盟生成算法.pdf

    首先从能力分类的角度,给出了agent及联盟的能力向量的形式化描述,并建立了复杂联盟生成问题的模型;然后提出了基于二阶段修正的PSO算法的求解框架,采用面向可加能力分配的整数编码策略,每次优化过程分两个阶段对...

    神经网络分类_神经网络分类_多个神经网络分类算法_

    在本资料中,"多个神经网络分类算法"可能涵盖了以下几种常见的神经网络模型: 1. **感知器(Perceptron)**:最简单的神经网络,用于二分类问题,由一个输入层、一个隐藏层和一个输出层组成,每个神经元执行线性...

    RDF数据分布式并行语义编码算法.pdf

    在对三元组项进行分类与过滤后,算法将三元组项编码并生成字典表,最终生成带有语义信息且具有规律性的编码。SCOM算法的一个重要特点是它能够简便地将编码后的RDF数据文件恢复为原始文件,这对于数据的可逆性和可靠...

    基于QM算术编码器改进的静态图像压缩算法

    QM编码器的核心思想在于区分大概率符号(Most Probable Symbol, MPS)和小概率符号(Less Probable Symbol, LPS),根据统计模型预测下一位符号的概率分布,进而对其进行分类编码。当模型预测为MPS但实际出现的是LPS时,...

    基于自编码算法的深度学习综述.pdf

    未来,自编码算法的研究将更加关注如何优化编码和解码过程,提升模型的泛化能力和计算效率,以及如何更好地融入其他深度学习框架,如生成对抗网络(GANs)和变分推理方法。此外,随着计算资源的增加和理论理解的深入...

    基于混沌系统和DNA编码的彩色图像加密算法研究.pdf

    5. 超混沌Lorenz系统:超混沌Lorenz系统是一种基于混沌系统的伪随机序列生成算法,它可以生成高质量的伪随机序列,以实现DNA编码和解码。 6. 猫映射:猫映射是一种图像处理技术,它可以对图像进行反复折叠和拉伸,...

    基于BERT的社交电商文本分类算法.pdf

    基于BERT的社交电商文本分类算法是针对社交电商领域中商品文本分类问题提出的一种创新方法。该算法利用了BERT模型的强大能力,通过预训练语言模型提取文本特征,并结合分类器对商品文本进行类别判断。本文将详细阐述...

    遗传算法改进的BP语音分类

    2) 设计遗传算法的编码方案,如二进制或实数编码;3) 定义适应度函数,衡量网络性能;4) 实现GA的基本操作,如选择、交叉和变异;5) 结合BP网络进行训练和分类;6) 后处理,如性能评估和参数调优。 通过这种方式,...

    Python_最小的干净代码的字节对编码BPE算法通常用于LLM标记化.zip

    至于标签为空,我们可以理解为没有特定的分类信息,主要关注的是BPE算法的应用和实现。 压缩包中的文件"说明.txt"可能是对BPE实现的详细解释或使用指南,而"minbpe_master.zip"可能包含一个精简版的BPE实现源代码库...

Global site tag (gtag.js) - Google Analytics