第一次个人编程作业

https://github.com/Eden8771/031902418

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划  15  15
· Estimate · 估计这个任务需要多少时间  15  15
Development 开发  60  180
· Analysis · 需求分析 (包括学习新技术)  20  20
· Design Spec · 生成设计文档  10 10 
· Design Review · 设计复审  10 10 
· Coding Standard · 代码规范 (为目前的开发制定合适的规范)  10 10 
· Design · 具体设计  30  70
· Coding · 具体编码  300  450
· Code Review · 代码复审  60  180
· Test · 测试(自我测试,修改代码,提交修改)  30 60
Reporting 报告  30  50
· Test Repor · 测试报告  40  50
· Size Measurement · 计算工作量  20  20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划  20  20
  · 合计  670  1160


3.标题二:二、计算模块接口

(3.1)计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(18')设计有

敏感词类MGC(包含编号,词,长度,属性)

行类HANG(编号,内容,长度)

答案类ANS(敏感词的编号,行的编号,对应字段的定位)

检测函数search (对本文进行检测,中英文,同音字,拆字等)

输出函数ANS_print(打印找到的答案)

当看到这道题目时,我首先想到的是利用字典树,将一种敏感词的所有可能表现形式打包起来,然后通过识别文本中的各种表现形式去追述到敏感词的词根,从而找出敏感词。通过网上资料的查找,我找到了一种实现方法,AC自动机。

AC自动机需要有前置知识:Trie树(简单介绍:又称前缀树,字典树,是用于快速处理字符串的问题,能做到快速查找到一些字符串上的信息。)ac自动机,就是在tire树的基础上,增加一个fail指针,如果当前点匹配失败,则将指针转移到fail指针指向的地方,这样就不用回溯,而可以路匹配下去了。

 

 

 

展示一下AC自动机的算法完成方法

 

 

 

 

 

 

 

 

(3.2)计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2019、JProfiler或者Jetbrains系列IDE自带的Profiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(12')太菜了,时间不够,也暂时无法完成,在学python,但果然临时抱佛脚是行不通的。

(3.3)计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(12')

太菜了,暂时无法完成。

(3.4)计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(6')

太菜了,暂时无法完成。

4.标题三:三、心得

(4.1)在完成本次作业过程的心得体会(3')

本次作业深感到了自己的无能,需要重新开始努力了。本次作业的第一直觉应该就是使用python来完成了,python里应该有很多相应的现成函数库,可以简化作业的工程量。可是我没碰过python,因此要在短短的时间从头自学,去寻找敏感词检索的方法去从头构建,加上以前从未使用过github,因此本次的作业对我个人而言难度是极大的,我只能勉强的去做了。不过由于自学时间不是很够,目前我只能使用C++先完成一部分功能,截止前还是暂时没能完成可运行的程序,抱歉。

 

 

 

posted @ 2021-09-16 20:23  亿平  阅读(100)  评论(0)    收藏  举报