使用哈希表技术判别两个源程序的相似性

上传人:zhan****gclb 文档编号:57207262 上传时间:2022-02-23 格式:DOCX 页数:1 大小:182.62KB
返回 下载 相关 举报
使用哈希表技术判别两个源程序的相似性_第1页
第1页 / 共1页
亲,该文档总共1页,全部预览完了,如果喜欢就下载吧!
资源描述
实习六 使用哈希表技术判别两个源程序的相似性问题描述 对于两个C语言的源程序清单,用哈希表的方法分别统计两程序中使用C语言关键字的情况,并最终按定量的计算结果,得出两份源程序清单的相似性。基本要求 C语言关键字的哈希表自建,此题的工作只要是扫描给定的源程序,累计在每个源程序中C语言关键字出现的频度。在扫描源程序过程中,每遇到关键字就查找哈希表,并累加相应关键字出现的频度。为保证查找效率,建议自建哈希表的平均查找长度ASL不大于2。 扫描两个源程序所统计的所有关键字不同频度,可以得到两个向量。如下面简单的例子所示:VoidintforcharifelseWhile43437024254521关键字程序1种关键字频度程序2中关键字频度 0 1 2 3 4 5 6 7 8 9 哈希地址X1=4,3,0,4,3,0,7,0,0,2 X2=4,2,0,5,4,0,5,2,0,1通过计算向量X1和X2的相对距离来判断两个源程序的相似性,相对距离的计算方法是按例子所给数据,S0.13。显然当X1=X2时,S=0,反映出可能是同一个程序;S值越大,则两个程序的差别可能也越大。测试数据作几个编译和运行都无误的C程序,程序之间有相近的和差别大的,用上述方法求S,并对比差异程度。实现提示本题的很大工作量将是对源程序扫描,区分出C程序的每一关键字。可以为C语言关键字建一棵键树,扫描源程序和在键树种查找同步进行,也取得每一个关键字。问题讨论 这种判断方法只是提供一种辅助手段,即便S=0也可能不是同一程序,S的值很大,也可能算法完全是一样的。例如,一个程序使用while语句,另一个使用for 语句,但功能完全相同 。事实上, 当发现s的值很小时,就应该以人工干预来区分。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!