MinHeap.Delete(hem);//取左子树结点数据小顶堆结点元素的结构如下所示:pNewl = Item.NodePtr:strnetDatahem }MinHeap.Delete(Item);//取右子树结点数据pNewR = Item.NodePtr;KeyTypeKey;//存放树节点的向量BTreeNode NodePtr;//指向树节点的时钟//构造附加结点pRoot newBTreeNode; 2.2 哈夫曼树类的设计与实现pRoot一 >weight pNewL一 >weight pNewR一 >weight;创建哈夫曼树 的实现过程如下:pRoot一 >left pNewl,:其次分别创建并初始化 n个树枝节点,并将节点指针及其pRoot一 >right= pNewR : 权值添DH~Jl/],,顶堆中;其次是在堆不为空的现象下进行循环 :从 堆中放入权值最小的两棵树根节点的时钟,添加附加结点构建Item.Key pRoot一 >weight 新的二又树 ,在堆不为空的现象下将新树干节点指针和向量添Item.NodePtr pRoot: 加到堆中。

当循环结束后,最后一次构建的二叉树就是所求 的//如果不是最后一次循环则把附加结点信息插入山谷 中 哈夫曼树。该硬件使用了小顶堆 ,硬件结构简单明了,是理论算if(!MinHeap.IsEmpty()) 法的很好映射 ,可读性好,读者明白起来更加容易。MinHeap.Insert(hem);哈夫曼树类中定义了指向哈夫曼树的根节点的指针变量, 还有三个公有接 口函数 :一个是按照给定的向量向量创建哈夫//最后 一次循环形成的附加结点 曼树的变量,一个是输出哈夫曼树带权路径长度的变量,另一个//即哈夫曼树 的根节点 是方便使用者观察的以广义表形式输出哈夫曼树的变量。另 外,还有三个私有成员变量:一个是供析构函数调用的释放储存 空问的变量,一个是供输出带权路径长度的接 口函数调用的递2.3 哈夫曼树构造算法的时间复杂度 归函数,而另一个是供输出哈夫曼树函数的递归函数。其中,哈在这个哈夫曼树构造算法中,最耗时的操作是在小顶堆中 夫曼树的构造算法如下 :插人和删除元素的操作,这样操作所需时间为 logn。构建 n个boolCHuftTree::Build(WeightTypea[],intn)叶子结点并插入到小顶的过程所需的大致时间为n×logn,循环过程需要从堆中删除两个元素,并在堆中插入一个元素,且该循//创建小顶堆类对象并初始化环要进行n一1次,故循环过程所需的大致时间为 (n一1)×3×CMinHeapMinHeap;log(),所需总的时间为 (4n一3)×log(n)。
如果 ,建立哈夫曼if(!MinHeap.Init(n)){树的时间复杂度为(n×logn)。若要从细节上考虑 ,这一硬件returnfalse;在时间上和空间上都优于方式 7的硬件。3 哈夫曼树类的应用和实例//利用小顶堆存放森林 F中树的根节点的地址和向量BTreeNode P = NULL;哈夫曼树类的应用非常便利,只须在工期中创建哈夫曼树for(inti:;i(n;i++)类 ,在使用哈夫曼树类的应用程序中包括哈夫曼类的头文件,并{定义一个哈夫曼树类的类对象即可。下面就是使用哈夫曼类的//构造叶子结点应用程序示例:P new BTreeNode;#include”HuftTree.h”P一>weight=a[i];//权值P一>left=P一>right=NULI://父母指针intmain(void)//F中初始存放叶子结点的地址lCMinHeap::DataltemItem;//定义堆元素对象constintn = 6:Item.Key = p一 >wetght:inta[n]= {4,6,8,3,2,2};Item.NodePtr= P;CHuftTreeHTree;//定义哈夫曼树类的一个类对象MinHeap.Insert(Item);//在 F中添加元素if(!HTree.Build(a,n)) //通过权值向量构造哈夫曼树return 1;//构造失败返回 1//利用小顶堆循环构造哈夫曼树BTreeNode pRoot= NULL:eout<<哈夫曼树 :;while(!MinHeap.IsEmpty())HTree.Print();//以广义表形式输出哈夫曼树cout<<哈夫曼树的带权路径长度 :”;//从 F中放入值最小的一对节点指针eout<<HTree.WightPathLength()<<endl;BTreeNode pNewL = NULL;return;BTreeNode pNewR = NULL: 256计算机使用与硬件2011年该流程运行结果如图 1所示 。
明了可读性最好的算法,其时间效率和空间效率也有最好的。文中给出的硬件,能够能对数据结构的授课和研究作出一点_ -一…一2-2)) "贡献 。关天蔓量树树的:2带5极(1B路(4径,长6)度,l5(7(3,4(: 61Bss any ke to continnem参 考 文 献软拼音 半:1]严蔚敏 ,吴伟民.数据结构(C语言版)[M].北京 :清华大学出版社 ,1979.图 1 运行结果窗 I_=__i:2]王若梅,贺晓军.数据结构[M].西安:西安电子科技大学出版所示结果 的哈夫曼树 的如图2所示 。社 ,1994.253]李根强.数据结构 (C++版) M].北京:中国水务水 电出版社 .2005.10 ,154]陈小平.数据结构导论[M].北京:经济科学出版社,2003.5]黄 国兴,章炯民.数据结构与硬件 [M】.北京:机械工业 出版7社 ,2004.[6]张银富.计算机 争、博士入学考试一数据结构分册[M].北、、 4京 :司令水利水电出版社 ,2004.≯1\:7]徐孝凯.数据结构实用教程 [M].2版.北京:清华大学出版社 ,2006.[8]CliffordAShaffer.APracticalIntroductiontoDataStructuresandmg0一ritbmAnalysisJavaEdition[M].汉语原版.北京:电子工业出版图2 运行结果的哈夫曼树社 ,2002.[9]周叶,高荣芳.数据结构与C++[M].西安:西安交通大学出版社, 4 结束语l999[10]殷人昆,等.数据结构 (用面向对象方法-qC++描述)[M].北京:到 目前为止,本文提出的哈夫曼树的构造算法是最为简洁清华大学出版社,1999. (上接第239页)像分割证明了该硬件应用于图像分割问题的有效性,同样对 比—、~ /、KMA算法,本文算法的分割效果更优。

)、本文中仅对该方式与 KMA算法效果做了一个比较,下一—h n I :‘ hnn步将与其它更完善的硬件作比较,并提出改进的举措,对分割问交题进一步的研究方 向是找到更适于的编码方法和 目标函数 ,同(a](b)时对遗传算法加速,在时问和作用上优化。参 考 文 献1]李俊I上I.李旭辉.数字图像处理[M].北京:清华大学出版社,2007.[2]林开颜 ,吴军辉 ,徐立鸿.蓝象分割方式综述 [J].中国图像图(bJ(d)形学报 ,2005,10(1):1—10.3 TrenmauA,BorelN.Aregiongrowingandmergingalgorithm tocolor图5 KMA算法的一组分割(k=3)segmentation[J].PatternRecognition,1997,30(7):1191—1203.与传统的KMA算法相 比较,本硬件没有对初始中心取值4]ShiJianbo,MALIKj.Nm~nalizedcotsandimagesegmentation[c]// 的敏感性问题,不需要事先确定分区的数 。其结果表明如下。ProceedingsoftheIEEE conferenceon ComputerVisionand Pattern 从结果上来看,本文算法能够有效地合并这些无意义的小分区,Recognition.1997,731—737. 同时,分割效果上优于KMA算法。
[5]ShiJianbo,MALIKJ.Normalizedcutsandimagesegmentation[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 4 结束语2Ooo.22(8):888—905.6]LloydSP.Leastsquaresquantize—tionninPCM[J].IEEEtransac—本文提出了一种采用遗传算法进行影像分割的方式 ,该方tionsonInformationTheory.vo1.IT-28,nO.2,1982:129— 136. 法把图像分割问题转化为一个最优值 问题 。把量化 的区间区别[7]SukM,ChoTH.SegmentationofimagesusingminimumSpanningTree¨].InApplicationsofDigitalImagesprocessingV.Proc.SPIE 度和区间内相对相似度同样也是遗传算法的适应值数组进行优397,1983:180—185. 化 ,得到近似最优分割。此外,本文也实行 了一系列的优化处理[8]KozaJR.GeneticProgramming:OntheProgrammingofComputemby 措施。
在处理大图像时,采用贪心算法合并节点,提高遗传算法MeansofNaturalSelection[M].MIT Press,Cambridge,MA, 处理规模 ;遗传算法的编码方法采用整数串编码方法,用 MSTUSA、1992. 初始化得到一个优化的初始值 ,并设计合乎限制条件的选择、交[9]ShinichiShirakawa,Tomoham Nagao.EvolutionaryImageSegmenta— 叉和寄生算子,大大减少硬件的搜索空间;在演化分割过程中,tionbasedOnMulti—objectiveClustering[M].IEEECongressonEvo一 合并过小的分区以清除无意义的小分区。本文通过多幅 自然 图1utionarvComputation,2009.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-118933-2.html
有什么好奇怪的