一种基于有序二叉树的多模式匹配算法
软件水平考试中级软件设计师上午基础知识历年真题试卷汇编1_真题(含答案与解析)-交互

软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编1(总分70, 做题时间90分钟)1. 选择题选择题()下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。
1.采用顺序表和单链表存储长度为n的线性序列,根据序号查找元素,其时间复杂度分别为(51)。
SSS_SINGLE_SELA 0(1)、0(1)B 0(1)、0(n)C 0(n)、0(1)D 0(n)、0(n)分值: 2答案:B解析:顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。
他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据。
链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。
不能随即访问链表元素,必须从表头开始,一步一步搜索元素。
它的优点是:对于数组,可以动态的改变数据的长度,分配物理空间。
因此两者的查找复杂度就显而易见了。
2.设元素序列a、b、c、d、e、f经过初始为空的栈S后,得到出栈序列cedfba,则栈S的最小容量为(52)。
SSS_SINGLE_SELA 3B 4C 5D 6分值: 2答案:B解析:此题考查栈的用法,根据题中出栈的顺序,当元素c出栈后,栈中有元素a、b,当元素e出栈之前,栈中有元素a、b、d、e,此时栈中的元素达到最多。
因此栈S最小容量为4。
3.输出受限的双端队列是指元素可以从队列的两端输入、但只能从队列的一端输出,如图8—1所示。
若有e1、e2、e3、e4依次进入输出受限的双端队列,则得不到输出队列(53)。
SSS_SINGLE_SELA e4、e3、e2、e1B e4、e2、e1、e3C e4、e3、e1、e2D e4、e2、e3、e1分值: 2答案:D解析:此题考查队列的性质,队列为先进先出的线性结构,题中给出的受限的双端队列,两端都可以进,而一端可出,假设分a和b端,b端可以进出,由D 选项的出序列,可以看出e1、e2、e3按顺序从a端进入,而e4从b端进入,当e4从b端出来之后,无法将后面的e2出队列,故D选项有误。
2022年西安交通大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年西安交通大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
A.60B.66C.18000D.332、将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.NB.2N-1C.2ND.N-13、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。
专升本数据结构考试题1(还有很多哦,大家进我的账号下载)

大纲一、考试性质本考试是为在计算机专科生中招收本科生而实施的具有选拔功能的水平考试,其指导思想是既要有利于国家对高层次人材的选拔,又要有利于促进高等学校各类课程教学质量的提高,考试对象为2003年参加专升本考试的考生。
二、考试的基本要求要求学生比较系统地理解数据结构的基本概念和基本知识,掌握表、栈、队列、树和图等数据结构的基本特征和在计算机上实现的方法,要求考生具有抽象思维能力、逻辑推理能力、综合运用所学的知识分析问题和解决问题的能力,以及软件设计和编程能力。
三、考试方法和考试时间考试方法为闭卷笔试,考试时间为120分钟。
四、考试内容和要求1、绪论考试内容:数据结构基本概念和术语,算法、算法的描述和算法分析。
考试要求(1)了解非数值问题的数学模型不是数学方程,而是表、树和图之类的数据结构。
(2)理解数据、数据元素、数据对象、数据结构和数据类型等的定义。
(3)掌握数据的逻辑结构和存储结构及其种类;算法的重要特征等。
(4)会根据语句的最大频度计算算法的时间复杂度的方法。
2、线性表考试内容:线性表的定义、线性表的逻辑结构、线性表的顺序存储结构和链式存储结构,单向链表、循环链表和双向链表,一元多项式的表示及相加。
考试要求(1)了解线性表的定义和线性结构的特点。
(2)理解线性表的顺序存储和链式存储,理解数组与单链表表示表的优缺点。
(3)掌握线性顺序表中数据元素的存储位置的计算,顺序表、单向链表、循环链表和双向链表的插入、删除等有关操作。
(4)会用单链表编写插入、删除等有关算法。
(5)能够从时间和空间复杂度的角度综合比较两存储结构的特点及适用场合。
3、栈和队列考试内容:栈的定义、栈的表示和实现;队列的定义、队列的表示和实现,链队列、循环队列。
考试要求(1)了解栈和队列的定义。
(2)理解线性表、栈和队列特点及区别,栈对实现递归过程的作用。
(3)掌握顺序栈、链栈的入栈和出栈操作,顺序队列、链队列的入队和出队操作,循环队列的队空和队满的判断。
2022年复旦大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年复旦大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。
A.5B.6C.8D.92、将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.NB.2N-1C.2ND.N-13、线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构4、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改5、在下列表述中,正确的是()A.含有一个或多个空格字符的串称为空格串B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树C.选择排序算法是不稳定的D.平衡二叉树的左右子树的结点数之差的绝对值不超过l6、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1 A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ7、已知关键字序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后的小根堆是()。
A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,198、在下述结论中,正确的有()。
①只有一个结点的二叉树的度为0。
②二叉树的度为2。
③二叉树的左右子树可任意交换。
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③B.⑦③④C.②④D.①④9、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()。
2022年中原工学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年中原工学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、将线性表的数据元素进行扩充,允许带结构的线性表是()。
A.串B.树C.广义表D.栈2、有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
A.60B.66C.18000D.333、连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续4、已知串S='aaab',其next数组值为()。
A.0123B.1123C.1231D.12115、下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间B.任何一个关键活动提前完成,那么整个工程将会提前完成C.所有的关键活动提前完成,那么整个工程将会提前完成D.某些关键活动若提前完成,那么整个工程将会提前完成6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、下列叙述中,不符合m阶B树定义要求的是()。
A.根结点最多有m棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接8、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()。
A.二叉排序树B.哈夫曼树C.AVL树D.堆9、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
n个结点的正则二叉树中有()个叶子。
A.log2nB.(n-1)/2C.log2n+1D.(n+1)/210、一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。
2022年湘南学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年湘南学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、n个结点的完全有向图含有边的数目()。
A.n*nB.n(n+1)C.n/2D.n*(n-1)2、将线性表的数据元素进行扩充,允许带结构的线性表是()。
A.串B.树C.广义表D.栈3、线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构4、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341565、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改6、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。
7、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。
假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。
初始时为空,下列判断队空和队满的条件中,正确的是()。
A.队空:end1==end2;队满:end1==(end2+1)mod MB.队空:end1==end2;队满:end2==(end1+1)mod (M-1)C.队空:end2==(end1+1)mod M;队满:end1==(end2+1) mod MD.队空:end1==(end2+1)mod M;队满:end2==(end1+1) mod (M-1)8、有n(n>0)个分支结点的满二叉树的深度是()。
A.n2-1B.log2(n+1)+1C.log2(n+1)D.log2(n-l)9、一棵非空的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足()。
2022年北京理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
2022年北京理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、下列说法不正确的是()。
A.图的遍历是从给定的源点出发每个顶点仅被访问一次B.遍历的基本方法有两种:深度遍历和广度遍历C.图的深度遍历不适用于有向图D.图的深度遍历是一个递归过程2、下列排序算法中,占用辅助空间最多的是()。
A.归并排序B.快速排序C.希尔排序D.堆排序3、线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改6、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ7、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ8、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。
数据结构 判断题
《数据结构》习题库之三:判断题1. 程序就是算法,但算法不一定是程序。
()2. 线性表只能采用顺序存储结构或者链式存储结构。
()3. 线性表的链式存储结构是通过指针来间接反映数据元素之间逻辑关系的。
()4. 除插入和删除操作外,数组的主要操作还有存取、修改、检索和排序等。
()5. 稀疏矩阵中0元素的分布有规律,因此可以采用三元组方法进行压缩存储。
()6. 不管堆栈采用何种存储结构,只要堆栈不空,可以任意删除一个元素。
()7. 确定串T在串S中首次出现的位置的操作称为串的模式匹配。
()8. 深度为h的非空二叉树的第i层最多有2i-1 个结点。
()9. 满二叉树就是完全二叉树。
()10. 已知一棵二叉树的前序序列和后序序列可以唯一地构造出该二叉树。
()11. 非空二叉排序树的任意一棵子树也是二叉排序树。
()12. 对一棵二叉排序树进行前序遍历一定可以得到一个按值有序的序列。
()13. 若有向图G=(V,E)的拓扑序列不唯一,则图中必须有两条弧和。
()14. 散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法。
()15. 序列初始为逆序时,泡排序法所进行的元素之间的比较次数最多。
()16. 算法一定要有输入和输出。
()17. 算法分析的目的旨在分析算法的效率以求改进算法。
()18. 非空线性表中任意一个数据元素都有且仅有一个直接后继元素。
()19. 数据的存储结构不仅有顺序存储结构和链式存储结构,还有索引结构与散列结构。
()20. 线性链表中各个链结点之间的地址不一定要连续。
()21. 若频繁地对线性表进行插入和删除操作,该线性表采用顺序存储结构更合适。
()22. 若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101。
()23. 若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。
()24. 符号link(p)出现在表达式中表示p所指的那个结点的内容。
2022年中南林业科技大学涉外学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
2022年中南林业科技大学涉外学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a, e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是()。
A.a,b,e,c,d,fB.a,c,f,e,b,dC.a,e,b,c,f, dD.a,e,d,f,c,b2、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。
A.5B.6C.8D.93、以下与数据的存储结构无关的术语是()。
A.循环队列B.链表C.哈希表D.栈4、在下列表述中,正确的是()A.含有一个或多个空格字符的串称为空格串B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树C.选择排序算法是不稳定的D.平衡二叉树的左右子树的结点数之差的绝对值不超过l5、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341566、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。
A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ8、设X是树T中的一个非根结点,B是T所对应的二叉树。
在B中,X是其双亲的右孩子,下列结论正确的是()。
2022年广东药科大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
2022年广东药科大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序2、用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].nextB.j=j+lC.j=j->nextD.j=r[j]->next3、算法的计算量的大小称为计算的()。
A.效率B.复杂性C.现实性D.难度4、动态存储管理系统中,通常可有()种不同的分配策略。
A.1B.2C.3D.45、下面关于串的叙述中,不正确的是()。
A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储6、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。
7、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。
假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。
初始时为空,下列判断队空和队满的条件中,正确的是()。
A.队空:end1==end2;队满:end1==(end2+1)mod MB.队空:end1==end2;队满:end2==(end1+1)mod (M-1)C.队空:end2==(end1+1)mod M;队满:end1==(end2+1) mod MD.队空:end1==(end2+1)mod M;队满:end2==(end1+1) mod (M-1)8、有n(n>0)个分支结点的满二叉树的深度是()。
A.n2-1B.log2(n+1)+1C.log2(n+1)D.log2(n-l)9、在下述结论中,正确的有()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Reciveddate:2002-09-19 基金项目:信息产业部中长期发展项目:2004-研1-B-034 作者简介:LiuGong-shen,Ph.D,Hisresearchinter-estsincludeintelligentprocessingofInternetinformationandanti-virustechnology.E_mail:lgshen@sjtu.edu.cn;
MultiplePatternMatchingAlgorithmBasedonSequentialBinaryTree1
LIU Gong-shen1,LI Ning21(SchoolofInformationSecurityEngineering,ShanghaiJiaotongUniversity,Shanghai200030,China)2(DepartmentofComputerScience,UniversityofManchesterManchester,England)
Abstract:Byanalyzingthetraditionalmultiplepatternmatchingalgorithmbasedontreestructure,anewalgorithmisproposedbysubstitutingsequentialbinarytreefortree.Thealgorithmissuitablefortheapplicationwhichrequirespreprocessingthepatternsdynamically.Itisprovedbyexperimentthatthealgorithmhasthreefeatures:Itsconstruc-tionprocessisquick.Itscostofmemoryissmall.Atthesametime,itssearchingprocessisasquickasthetraditionalalgorithm.Keywords:multiplepatternmatching;finitestateautomata;sequentialbinarytree
一种基于有序二叉树的多模式匹配算法
刘功申1,李 宁21(上海交通大学信息安全学院,上海200030)2(曼彻斯特大学计算机系,英国)
摘 要:传统的多模式匹配算法是用树型结构的有限自动机实现的,它具有很多缺点.本文提出的多模式匹配算法是基于有序二叉树的多模式匹配算法.实验证明,本文算法不但具有和传统算法相当的查找速度,而且构造速度快、内存耗费少.因此,本文提出的算法特别适用于要求动态构造自动机的情况.关键词:多模式匹配;DFSA;有序二叉树中图分类号:TP301 文献标识码:A 文章编号:1000-1220(2004)07-1387-06
1 Introduction
Searchinguser-specifiedpatternsinatextfileisacom-monrequirementininformationretrievalandtexteditingap-plications.Now,deterministicfinitestateautomata(DFSA)isthemostcommonmethodinsolvingpatternmatchprob-lem[1,2].Beforesearchingprocess,theDFSAalgorithmmustpreprocessthepatternsetandconstructanautomatonbasedontreestructure.Then,theoccurrencesofeverypatterncanbefoundbyscanningthetextfilejustonce.So,ItstimecomplexityisO(n).Jang-JongFanandKeh-YihSuproposedanewalgorithmbycombiningDFSAalgorithmwithBoyer-Moorealgorithm[3].ThealgorithmofJang-JongFanandKeh-YihSudoesnøtneedtoinspecteverycharacterofthetextfile,whichismoreefficientthanDFSAalgorithm.Inpracticalapplications,therearesomenewrequire-mentstobeemphasizedgradually,suchas,therequirementofchangingthepatternsetthatistobesearcheddynamically(i.e.theimplementofthefunctionofsearchingandreplac-ingintexteditingapplication)andtherequirementofsavingmemory(i.e.implementingthealgorithminPDAorembed-dedsoftware).Atthesametime,thesearchingefficiency
canøtdecrease.Thetraditionalalgorithmbasedontreedoesnøtsatisfytheserequirements,becauseitsconstructionprocessisslowanditscostofmemoryisexcessive.Theconceptionofsequentialbinarytree(seedefinition4indetails)isproposedoriginallyinthispaper.Anewmulti-plepatternmatchingalgorithm---amultiplepatternmatchingalgorithmbasedonsequentialbinarytree(inshortSMAal-gorithm)isimplementedbysubstitutingsequentialbinarytreefortree.TherearemanyadvantagesofSMAalgorithmwhichareprovedbyourexperiment,suchasquickconstruc-tion,theconvenienceofaddingordeletingpatternsdynami-cally,norequirementsofgototable,failuretableandoutputtablewhicharerequiredintraditionalalgorithmandhighsearchingefficiencyastraditionalalgorithm.Inthenextsection,wewilldescribethedisadvantagesoftraditionalmultiplepatternmatchingalgorithm.Thead-vantagesofSMAalgorithmareintroducedinsection3.Insection4and5,theconstructionandsearchingalgorithmsofsequentialbinarytreearegiven.Section6and7arealgo-rithmanalysisandcontrastexperiments.Finally,section8concludesthispaperwithsomeremarks.
第25卷第7期 2004年7月小型微型计算机系统MINI-MICROSYSTEMSVol.25No.7 July2004 2 Shortcomingsoftraditionalalgorithm
Thetraditionalalgorithmisdescribedinpaper[1]inde-tail.Inordertodescribeeasily,asampleisgiven.Thepat-ternsetis{he,hers,his,hour,she,our}.Thecorrespond-ingtreeisshownasfigure1.
Fig.1 AutomatabasedontreeIfanodeofatreehasnsub-trees,thenodemusthavenpointerswhichpointtoitschildrenrespectively.Duringtheconstructionprocessoftree,itisnotdecidedinadvancehowmanysub-treesanodehas.Thereareonlytwomethodstohandleit.Thefirstmethodistore-allocatethememoryofparentnodewhenasub-treeisaddedeachtime.Thesecondmethodisthatthememoryofm(misthemaximumnumberofsub-treesofeverynode)pointerisallocatedtoeverynode,whichcoststhememoryverymuch.
Fig.2 AutomatabasedonsequentialbinarytreeThegototable,failuretableandoutputtableoftradi-tionalalgorithmalsoneedlargememory.Theirsizeispro-portionaltothenumberofnodesofthetreeindirect.Duringthecourseofconstructionoftraditionalalgo-rithm,thepatternsarenotsortedintheorderofdictionary.Thatistosay,ifthepatternsofgivenpatternsetarenotsortedindictionaryorder,thetreeisnotanorderedtree.Thesearchingratemustbeslowifthetreeisnotordered[5].Inthegivensample,thepatterns"she"and"our"arenotinthedictionaryorder.3 AdvantagesofSMAalgorithmInordertoovercometheshortcomingsoftraditionalal-gorithm,SMAalgorithmimplementsmultiplepatternmatchingprocessbyusingsequentialbinarytreeinsteadoftree.Ifthereisapatternset{he,hers,his,hour,she,our},thesequentialbinarytreeofthepatternsetisshownasFigure2.TheadvantagesoftheSMAalgorithm:・ImprovetheconstructionrateBecausethebinarytreehasonlytwosub-trees(leftandrightsub-trees),wedonøtneedtoguesshowmanysub-treesanodehas.So,wecanavoidofcostingmemoryexces-sivelyorallocatingandreleasingthememoryfrequently.・ImprovethesearchingefficiencyBecausethesequentialbinarytreeembodiesthedictio-naryorderofallpatterns,thetransitionrateofstateismorequick(seeSection6.2).・AddanddeletepatternconvenientlyBecauseitisconvenienttoaddordeletenodefrombina-rytree,theSMAalgorithmcanaddordeletepatternconve-niently.・Donøtneedgototable,failuretableandoutputtable.TheSMAalgorithmusespointerinsteadofgoto,failureandoutputtable,soitcansavethememory.4 Constructionofsequentialbinarytree4.1 CorrelationdefinitionThesequentialbinarytreeshowninFigure2iscon-structedfrompatternset{he,hers,his,hour,she,our}.Ifwevisitthesequentialbinarytreeaccordingtoaspecialrule,apatterncanbegainedduringthevisitingprocessfromrootnodetoaleafnode.Thevisitingruleisdescribedasfol-lows:4.1.1 Definition1VisitingRule:Astacksisusedtosavepatterns.Apointerpisusedtokeeptrackthenode.Whenppointstotherightsub-treeofcurrentnodeandeisaedgebetweencurrentnodeanditsrightsub-tree,theitematthetopofstacksisremovedthenthecharacterofedgeeisaddedtostacks.Whenppointstotheleftsub-treeofcurrentnode,thecharacterofedgeeisaddedtostacksdirectly.Re-peataboveprocessuntilppointstotheleafnode.Now,apatternisconsistedofallitemsofthestacks.Forexample,thevisitingprocessofpattern"our"isdescribedasfollows:(thesequentialbinarytreeofpatternsetisshownasFigure2)Step1:s=5;p=0;(rootnode)