基于子图发现的设计模式识别系统子图发现算法的设计与实现开题报告等Word文档格式.docx
- 文档编号:21558613
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:55.72KB
基于子图发现的设计模式识别系统子图发现算法的设计与实现开题报告等Word文档格式.docx
《基于子图发现的设计模式识别系统子图发现算法的设计与实现开题报告等Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于子图发现的设计模式识别系统子图发现算法的设计与实现开题报告等Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
为了便于从源码中挖掘元素和进行评估,我们需要一个系统满足以下条件:
●它的大小应该是合理的。
●它的源码应该是开放的
●它应该是面向对象的设计,因为目前主流软件均是面向对象设计
●它应该被广泛使用
我们选择、、作为目标系统原由有三点:
一、这些项目开发时,设计模式的思想已经成熟而且被广泛应用;
二、JUnit、JHotDraw、JRefactory都是开源项目,源码是公开的,方便对识别结果的验证,三个项目的规模逐步递增,可以更好地评估本文提出的设计模式识别方法;
三、其他相关的设计模式发现研究采用了一个或多个这样的系统来评估他们的方法,所以选择上述3个项目能够比较和评价实验结果。
2.图表示
在进行子图挖掘之前,有必要为研究的系统和要挖掘的模式定义一种图表示方式,本文将使用抽象语义图(AbstractSemanticGraph,ASG)进行建模。
下表定义了ASG所使用的图形符号。
在表示系统源码和设计模式签名的ASG中,图的顶点为抽象类、具体类、方法中的一种,图的边为表关联关系的一种(如泛化、聚合、返回类型依赖等)。
表:
抽象语义图使用的图形符号
符号
含义
抽象类或接口
具体类
类或接口中的方法
类或接口之间的一对一的属性关联
类或接口之间的一对多的属性关联
类或接口之间的泛化关系
目标方法是源类或接口的一个操作
源方法和目标类或接口之间的返回类型依赖
源方法接收目标类或接口类型的参数
源方法调用目标方法
源方法重载目标方法
源方法中实例化了目标类,生成对象
3.子图挖掘
(1)图定义:
用无限制的字符标签来定义属性图是一种普遍的定义图的方式。
(2)图匹配分为精确的图匹配和容错的图匹配方法。
(3)频繁子图挖掘算法:
基于Apriori方法和PatternGrowth方法
(4)Subdue算法:
作为一种无需监管的挖掘算法,Subdue算法查找输入图的一个最佳压缩子结构或者子图。
Subdue在它的主搜索算法用的是集束搜索的一种变形方法,算法大致框架如下图所示。
算法:
SUBDUE。
查找最佳地压缩图集子结构的算法。
输入:
图数据集Graph,束宽度BeamWidth,最佳压缩图集的大小MaxBest,
最大子结构数量MaxSubSize,处理子结构的上限Limit
输出:
最佳压缩图集的子结构集合BestList
1:
ParentList=Null;
2:
ChildList=Null;
3:
BestList=Null;
4:
ProcessedSubs=0;
5:
Createasubstructurefromeachuniquevertexlabelanditssingle-vertexinstances;
6:
InserttheresultingsubstructuresinParentList;
7:
whileProcessedSubs≤LimitandParentListnotemptydo
8:
whileParentListisnotemptydo
9:
Parent=RemoveHead(ParentList);
10:
ExtendeachinstanceofParentinallpossibleways;
11:
GrouptheextendedinstancesintoChildsubstructures;
12:
foreachChilddo
13:
ifSizeOf(Child)lessthanMaxSubSizethen
14:
EvaluateChild;
15:
InsertChildinChildListinorderbyvalue;
16:
ifBeamWidth<
Length(ChildList)then
17:
DestroysubstructureatendofChildList;
18:
IncrementProcessedSubs;
19:
InsertParentinBestListinorderbyvalue;
20:
ifMaxBest<
Length(BestList)then
21:
DestroysubstructureatendofBestList;
22:
SwitchParentListandChildList;
23:
returnBestList;
图:
Subdue算法
4.并行算法
(1)并行性识别:
在一个程序中,首先要识别出哪些部分可以并行地执行。
也就是说,对于来自同一个串行程序的两个不同语句,在什么情况下可以并行执行,且计算结果与串行程序执行结果一致。
(2)分解技术:
将计算划分成许多小的计算,再把它们分配到不同处理器中以便并行执行,这是并行算法设计中的两个关键步骤。
目前有一些经常使用的分解技术,这些技术可概括分类为递归分解、数据分解、探测性分解以及推测性分解。
递归分解和数据分解技术是比较通用的,因为它们能适用于大量的各种问题。
探测性和推测性分解技术是专用性质的,因为它们只适用特定类型的问题。
(3)编程模型:
人们已经开发了许多编程语言和程序库用于显式并行编程,这些编程语言及程序库的区别在于程序员可使用的地址空间,对并发活动的同步程度,以及程序的多重性。
常用的编程模型有共享存储编程模型和消息传递编程模式。
(4)并行算法模型:
一个算法模型就是通过选择一种分解和映射技术并用合适的策略最小化交互来构造并行算法的一种典型方法。
并行算法模型包括数据并行模型,任务图模型,工作池模型,主-从模型,流水线模型以及混合模型。
5.子图发现算法设计与实现:
本研究将从搜索集初始化、子图扩展、子图集合并等方面对子图发现算法进行设计,然后选择适当的分解技术和编程模型将原有算法设计成并行的算法,以大幅提高程序性能。
时间进度安排:
2008年11月17日-2008年1月16日
理解毕业设计的任务,阅读有关文献,熟悉开发工具。
征求导师的意见,提交毕业设计开题报告。
2009年1月17日-2009年2月28日
对必要技术及子图挖掘算法进一步了解学习,初步建立DesignPattern的数据模型。
建立子图发现算法的基本框架,了解目标系统源码中所使用的设计模式。
2009年3月1日-2009年3月20日
完成串行子图发现算法的设计,在目标系统上进行实验,提交毕业设计的中期检查报告。
2009年3月21日-2009年5月30日
根据第一阶段的实验结果,将原算法设计成并行算法,重新在目标系统上进行测试,撰写论文。
2009年6月1日-2009年6月11日
提交毕业论文,准备毕业答辩。
指导教师审核意见:
校内指导教师签名:
2009年月日
厦门大学软件学院毕业设计(论文)中期检查报告
二班
204442
助理教授
毕业设计(论文)的目标和主要任务:
已经完成毕业设计(论文)任务的情况:
1.子图发现算法的设计
为设计模式识别算法所设计的子图发现算法,与Subdue算法类似,但是该算法与Subdue算法主要有两个不同之处:
首先该算法没有采用启发式集束搜索方法,因为它会丢失设计模式。
其次该算法使用了DFA来去除那些不可能作为模式候选集的子图。
子图发现算法的大致框架如图1所示。
SubgraphDiscovery。
应用于设计模式识别的子图发现算法。
数据集G,最多处理的边数procLimit,模式指纹确定有限自动机DFA
发现的子结构resultList
searchList=Null;
candidateList=Null;
resultList=Null;
processedEdges=0;
CreatesubstructuresthatareisomorphictotheinitialstatesofDFA;
FindtheisomorphicinstancesinGandputthemintothesubstructures;
InserttheresultingsubstructuresintothesearchList;
whileprocessedEdges≤procLimitandsearchListisnotemptydo
foreachstinsearchList;
ifstisoneofthefinalstatesofDFAthen
AddsttoresultList;
else
ExtendeachinstanceofstconformingtoDFA;
GrouptheextendedinstancesintostListsubstructures;
foreachcandidateStuctureinstListdo
MergecandidateStuctureintothecandidateList;
searchList=Null;
CopycandidateListtosearchList;
candidateList=Null;
processedEdges++;
returnresultList;
图1:
子图发现算法
(1)初始化搜索集
搜索集的初始化是在图G中查找所有的单边子图,它们与DFA的初始态图是同构的。
图2展示了初始化搜索集算法的细节。
InitStructure。
初始化搜索集算法。
数据集G,模式指纹确定有限自动机DFA
初始搜索集initList
initList=Null;
initStatesList←GettheinitialstatesofDFA;
foreachedgeinGdo
Createasingle-edgegraphg;
foreachstateininitStatesListdo
ifgisisomorphictostatethen
addgtocorrespondingnodeofinitList;
returninitList;
图2:
初始化搜索集算法
(2)扩展子图
在候选集生成过程中,通过给定的k边图生成一系列k+1边图。
通过DFA得到从此状态迁移到下一状态所需的信息,然后添加一条边将k边图扩展成k+1边图。
DFA中保存的迁移信息包括用于扩展的顶点,扩展边,边的另一个顶点。
扩展子图的大致算法如图3所示。
ExtendIns。
子图扩展算法。
数据集G,用于扩展的实例parentIns,对应DFA某一状态的图structure,扩展信息transaction
扩展子图集extList
extList=Null;
GetisomorphismrelationbetweenparentInsandstructure;
ifcorrespondingextendedvertexisfound
iftheextendededgeisnotlinktoanewvertex
touchingEdges←GetalledgesconnecttwocorrespondingverticesinG
foreachedgeintouchingEdgesdo
ConfirmitisanewedgeofsametypethenaddthenewedgetoparentIns;
AddthenewinstancetoextList;
else
touchingEdges←Getalledgestouchcorrespondingextendedvertex;
ConfirmanothernewvertexandasameedgethenaddthenewedgetoparentIns;
returnextList;
图3:
扩展子图算法
(3)合并子图集
在子图发现算法中需要用一种数据结构来保存候选子图集。
PatternList是自定义的链表结构,PatternList链表的结点由PatterNode组成,PatterNode结点包含了一个在DFA中定义的状态和在图G中的所有实例。
PatternList设计如图4所示。
图4:
PatternList设计类图
2.在Junit上实验结果
本算法在操作系统为WindowsVistaUltimate,处理器为IntelCore2CPU,RAM2GB的计算机上进行实验,目标软件系统为。
表1给出了识别出设计模式实例的个数。
图5给出了识别各个设计模式所消耗的CPU时间对比。
表1:
基于子图发现的设计模式识别结果单位:
个
JUnit
设计模式
TP
FP
Adapter
Bridge
7
Command
1
Composite
Decorator
FactoryMethod
Observer
2
Proxy
Singleton
State/Strategy
3
TemplateMethod
Visitor
图5:
各个设计模式识别所消耗CPU时间对比单位ms
存在的问题和困难(包括需要学院协助解决的问题和困难):
在子图发现算法的子图扩展部分涉及到子图同构检验,这是一个NP完全问题,其计算复杂度相当高。
当程序以独占CPU的方式串行执行时,子图同构后面的指令必须等待,使得CPU的利用率不高。
校外指导教师签名:
学院检查组意见:
学院检查组组长(签章):
毕业论文任务书
题目:
目标要求:
系统有人性化的用户界面,强大易用的数据处理,跨平台(Windows、Linux和Unix),性能良好。
子图查找算法只需运行一次就能找到所有符合设计模式签名的实例,能够根据用户需求改变算法的并发性。
支持条件:
、、
校内指导教师(签名)职称学生(签名)
分阶段进度安排
阶段
起讫时间
计划完成内容
2008年11月17日-2009年1月12日
2009年1月17日-2009年2月28日
对必要技术及子图挖掘算法进一步了解学习,初步建立设计模式的数据模型。
2009年3月1日-2009年3月20日
4
5
2009年6月1日-2009年6月10日
注:
一般可分为资料文献搜索、拟定方案(提纲)、试验或初稿、定稿等阶段
教师分阶段指导记录
第一阶段:
解释任务目的,提出项目目标,审查开题报告
第二阶段:
推荐相关书籍和论文,讨论算法的基本框架,并给出指导意见
第三阶段:
审查串行子图发现算法,针对实验结果提出建议,审阅中期报告
第四阶段:
对并行算法提出建议,指导论文的撰写
第五阶段:
对论文初稿进行详细修改,提出修改意见
指导论文装订和答辩的有关事宜
论文评语
拟评成绩校内指导教师(签名)职称
2009年月日
论文评阅
评阅成绩评阅教师(签名)职称
答辩记录
演示成绩答辩成绩
答辩小组组长(签名)职务(称)
总评
成绩学院负责人(签盖)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 发现 设计 模式识别 系统 算法 实现 开题 报告