掌桥专利:专业的专利平台
掌桥专利
首页

一种面向方面的算法可视化方法及系统

文献发布时间:2023-06-19 11:11:32


一种面向方面的算法可视化方法及系统

技术领域

本发明涉及算法可视化领域,更具体地,涉及一种面向方面的算法可视化方法及系统。

背景技术

算法可视化是软件可视化领域的一个分支,利用动画的方式演示算法的运行。目前的算法可视化实现方法分为两大类,一是基于事件驱动,即在一个具体的算法代码中加入可视化语句,目前应用最多,但容易导致代码混乱、可重用性低;二是面向方面编程,可在一定程度上解决代码混乱和可重用性的问题,但是并未能同步显示伪代码,且不具有交互性,而且由于上下文层的设计局限,不能同步显示两种不同算法。

另外,目前的研究主要服务于市场,面向教学领域的研究甚少。Ladislav等人发表的文章《Algorithm Animations for Teaching and Learning the Main Ideas of BasicSortings》中,使用纸牌的方式演示动画,使学习者可手动移动两张纸牌,增加了交互性,但存在数据少、演示方式单一、未能同步显示同一算法、无法随时修改数据等问题;并且,目前的研究都主要集中在排序算法,很少涉及到其他算法。

发明内容

本发明为解决现有技术中面向方面编程无法对不同算法进行同步对比等问题,提供一种面向方面的算法可视化方法及系统。

本发明的首要目的是为解决上述技术问题,本发明的技术方案如下:

一种面向方面的算法可视化方法,包括以下步骤:

S1、在算法层选择待演示的算法;

S2、对算法进行数据初始化;

S3、执行算法,将生成的上下文信息及其位置索引保存至上下文层;

S4、在演示层中划分不同算法的显示区域,将每个显示区域的当前视图索引与上下文层中保存的位置索引进行匹配,获取对应的上下文信息,根据预设的视图生成方法,在演示层中生成视图;

S5、判断算法是否执行完毕,若否,则将新生成的上下文信息继续保存至上下文层,进行上下文信息的更新,同时更新演示层中生成的视图,若是,则算法层输出算法最终的运行结果。

作为本发明的改进,在所述步骤S1中,选择一种或两种待演示的算法;当选择两种待演示的算法时,所述待演示的算法为同一类型的算法。

作为本发明的改进,在所述步骤S3中,当待演示的算法为一种时,在演示层中同步显示该算法正在执行的伪代码。

作为本发明的改进,通过加粗和变色的方式对正在执行的伪代码进行突出显示。

作为本发明的改进,在所述步骤S2中,算法的初始数据由手动输入或根据算法本身随机生成。

作为本发明的改进,在所述步骤S3中,生成的上下文信息采用二维数组的形式保存至上下文层。

作为本发明的改进,在所述步骤S4中,对预设的视图生成方法进行扩充,具体为:加入数据结构、离散数学和图论中所有基础算法的视图生成方式。

作为本发明的改进,在所述步骤S5中,更新演示层中生成的视图,具体为:

S5.1、预设视图刷新的时间间隔;

S5.2、当到达预设的时间间隔时,检查每个显示区域的当前视图索引与上下文层中最新的位置索引是否一致,若是,则无需更新视图,若否,则将当前视图索引更新至与上下文层中最新的位置索引一致,根据更新后的当前视图索引找到新生成的上下文信息,并根据预设的视图生成方法,更新演示层中生成的视图。

作为本发明的改进,通过暂停位置索引的更新,进行视图的暂停操作;通过前翻位置索引,进行视图的后退操作;通过后翻位置索引,进行视图的前进操作。

一种面向方面的算法可视化系统,包括算法层、上下文层、演示层,所述算法层输出端与所述上下文层输入端连接,所述上下文层输出端与所述演示层输入端连接,其中:

所述算法层用于存储算法、进行算法的数据初始化、执行算法和输出算法最终的运行结果;

所述上下文层用于保存和更新执行算法时生成的上下文信息及其位置索引;

所述演示层用于划分不同算法的显示区域,每个显示区域的当前视图索引与上下文层中保存的位置索引匹配后获取对应的上下文信息,并根据预设的视图生成方法生成视图。

与现有技术相比,本发明技术方案的有益效果是:

本发明通过算法层、上下文层、演示层的配合,在演示层中划分不同算法的显示区域,并在每个显示区域中生成反映对应算法执行过程的视图,实现不同算法的同步对比。

附图说明

图1为本发明所述方法流程示意图;

图2为本发明所述系统结构示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

实施例1

如图1所示,一种面向方面的算法可视化方法,包括以下步骤:

S1、在算法层选择待演示的算法;

S2、对算法进行数据初始化;

S3、执行算法,将生成的上下文信息及其位置索引保存至上下文层;

S4、在演示层中划分不同算法的显示区域,将每个显示区域的当前视图索引与上下文层中保存的位置索引进行匹配,获取对应的上下文信息,根据预设的视图生成方法,在演示层中生成视图;

S5、判断算法是否执行完毕,若否,则将新生成的上下文信息继续保存至上下文层,进行上下文信息的更新,同时更新演示层中生成的视图,若是,则算法层输出算法最终的运行结果。

在上述技术方案中,通过算法层、上下文层、演示层的配合,在演示层中划分两种(或扩展至多种)算法的显示区域,并在不同的显示区域中生成反映不同算法执行过程的视图,实现不同算法的同步对比。

优选地,在所述步骤S1中,选择一种或两种待演示的算法;当选择两种待演示的算法时,所述待演示的算法为同一类型的算法。

在上述技术方案中,本实施选用最小生成树的Kruskal算法和Prime算法进行演示,此两种算法为同一类型的算法。

优选地,在所述步骤S3中,当待演示的算法为一种时,在演示层中同步显示该算法正在执行的伪代码。

在上述技术方案中,当待演示的算法为两种时,不会显示伪代码,一方面是屏幕范围有限,另一方面是为了避免初学者产生混乱。

优选地,通过加粗和变色的方式对正在执行的伪代码进行突出显示。

在上述技术方案中,根据保存的上下文信息,重点突出当前执行的伪代码语句,利于学习者加强对算法基本原理的理解。

优选地,在所述步骤S2中,算法的初始数据由手动输入或根据算法本身随机生成。

在上述技术方案中,对于初始数据,比如加权连通图的结点和权重信心,学习者可手动输入,然后送入代码中执行。

优选地,在所述步骤S3中,生成的上下文信息采用二维数组的形式保存至上下文层。

在上述技术方案中,扩充了上下文层,原来的上下文层只能包含一个具体算法执行过程中的上下文信息,扩充后,采用二维数据的形式保存生成的上下文信息,每一维数组用以保存一种算法生成的上下文信息,上下文信息包括算法每一次执行后数据的变化情况。

优选地,在所述步骤S4中,对预设的视图生成方法进行扩充,具体为:加入数据结构、离散数学和图论中所有基础算法的视图生成方式。

在上述技术方案中,传统的算法可视化工作,大多局限于排序算法,这对于学习者来说远远不够,加入这些领域的基础算法的视图生成方式后,方便学习者的学习。

优选地,在所述步骤S5中,更新演示层中生成的视图,具体为:

S5.1、预设视图刷新的时间间隔;

S5.2、当到达预设的时间间隔时,检查每个显示区域的当前视图索引与上下文层中最新的位置索引是否一致,若是,则无需更新视图,若否,则将当前视图索引更新至与上下文层中最新的位置索引一致,根据更新后的当前视图索引找到新生成的上下文信息,并根据预设的视图生成方法,更新演示层中生成的视图。

在上述技术方案中,通过设定固定的刷新时间,本实施例中为100ms,检查上下文信息是否更新,然后根据上下文信息刷新视图,实现算法的同步可视化。

优选地,通过暂停位置索引的更新,进行视图的暂停操作;通过前翻位置索引,进行视图的后退操作;通过后翻位置索引,进行视图的前进操作。

在上述技术方案中,通过增加视图的暂停、前进和后退功能,极大提高了交互性,方便学习者手动调整动画,增加学习积极性。

实施例2

如图2所示,一种面向方面的算法可视化系统,包括算法层、上下文层、演示层,所述算法层输出端与所述上下文层输入端连接,所述上下文层输出端与所述演示层输入端连接,其中:

所述算法层用于存储算法、进行算法的数据初始化、执行算法和输出算法最终的运行结果;

所述上下文层用于保存和更新执行算法时生成的上下文信息及其位置索引;

所述演示层用于划分不同算法的显示区域,每个显示区域的当前视图索引与上下文层中保存的位置索引匹配后获取对应的上下文信息,并根据预设的视图生成方法生成视图。

在上述技术方案中,采用了面向方面的设计思想,整体实现方式为:算法层-上下文层-演示层,算法层与演示层分开,互相独立,由上下文层进行连接,避免了算法代码冗余和可重用性低的问题。

综上,本发明扩充了上下文层,克服了以往只能保存一种算法执行过程中的上下文信息的缺陷,并在演示层中划分不同的显示区域,实现了不同算法的同步演示,可方便学习者更好地理解不同算法之间的区别;实现了算法执行过程中,伪代码的同步显示和更新,加强对算法基本原理的理解;实现了对视图的暂停、前进、后退,并增加了学习者可修改算法初始数据的功能,极大提升交互性;且通过扩充视图生成方法,使可视化领域扩展至数据结构、离散数学乃至图论的各种基础算法,而不仅仅局限于排序算法。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

相关技术
  • 一种面向方面的算法可视化方法及系统
  • 一种面向方面的嵌入式系统测试方法及其系统
技术分类

06120112837208