《可视化计算》算法综合加工了的.ppt

  1. 1、本文档共204页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-end End-3 不可计算的牌组如何确定? 计算搜索开始前,先检查某个特定牌组的计算可能性呢? 如果肯定得不到24的计算结果(例如,1,1,1,1和10,10,10,10),那么就可以马上重新发牌,开始新一轮计算 可以使用查表的方式来解决! * 问题 每次查阅这张表也不是一个简单的过程,因为该表列出的关键字是使用字符串实现的,尽管字符串也可以转换成数字进行排序,但显然会增加查找过程的计算工作量 能否设计一个算法,不用转换关键值,又可以减少顺序查找的扫描工作量? 可以考虑采用分块查找算法,该算法又称索引顺序查找,它是顺序查找的一种改进方法 * 分块查询的基本思想 将n个数据元素按块有序划分为m块 (m ≤ n) 每一块中的节点不必有序,但块与块之间必须按块有序; 即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字; 而第2块中任一元素又都必须小于第3块中的任一元素,… * 分块查找的实现 不可计算牌组保存在(以文本格式)文件中 从文件读入后,产生一个索引数组 保存各块的起始元素下标 * 分块算法设计的说明 主要子图 Main:主流程控制;输入/输出 Input_list_stringc:从文件读入149个牌组 Indexing:建立分块索引表 Random_number:产生测试牌组a[] Sort:将测试牌组a[]排序 Setsample:将测试牌组a[]转成测试字符串 Block_search_test:进行分块查找 * 分块查询 Main子图 * 分块查询 主要数据结构: Str_list[]: 保存文件读入的149个牌组,字符串 A[]:保存随机产生的4张牌(1~10),数值 In_key:保存排序完成的牌组样本,字符串 Index[,]:保存分块索引表, * 分块查询 Set_sample子图 * 分块查询 Indexing子图 * 分块算法设计的分析 分块查找的第一部分是进行索引表的查询 一般来说,索引表长度在10以内,就可以使用顺序查找,否则使用二分查找 为了简化算法,本例将149组数据只划分了9个块,以10开始的牌组只有一个,这里将其与9开始的牌组合并了 24点牌组的不可计算比为149/715,将查询初值ok赋值为true,可以减少赋值运算的次数 * 分块算法的运行说明 由于采用随机数产生测试牌组,所以测试无需输入样本,只要回答,y/n即可 需要自行输入样本,可以自行修改样例算法,再进行测试 * 分块查找的时间复杂度 分块查找的时间复杂度:O(索引表查找+块内查找) O(索引表二分查找+块内顺序查找) O(log2 B) + (M+1)/2 O(索引表顺序查找+块内顺序查找) O( (B+1)/2 + (M+1)/2) 一般描述:O( ) 分析: 实际应用中不一定分成大小相等的块,可按表的特征分块(如本例所设计) 提高了顺序查找的效率,但付出了空间的代价(索引表) * 哈希查找 哈希是hash的音译,意为“杂凑”,也称散列 哈希表是一种重要的存储方式,哈希查找技术是一种按照关键字编址的检索方法 哈希查找不同于前面的几种查找方法,它是通过对记录的关键字值进行某种运算,直接求出记录文件的地址 是关键字到地址的直接转换方法,而不需要反复比较,所以计算复杂性为常数阶:O(1) * 哈希查找的实现过程 仍以24点不可计算作为基本查找的数据集 由于哈希查找需要对牌组内的牌面进行计算 注意这一点与分块查找不同 每个牌组内的每张牌面,都必须转变成可以计算的数字 需要设计哈希函数并构建哈希表 * 哈希表查找方法的基本思想 如果在记录的存储位置与它的关键字之间建立一个确定的关系H() 使每个关键字和一个唯一的存储位置相对应 在查找时,只需要根据对应关系计算出给定的关键字值k对应的值H(k),就可以得到记录的存储位置 在使用哈希方法解决24点不可计算牌组时,就是将牌面数字计算后查表,可以查到为不可计算;不可查到就是可以计算 * 哈希表的构建 哈希函数(hash function),记录的关键字值与记录的存储位置的对应关系H称为哈希函数,H(k)的结果被称为哈希地址 哈希表(hash table),是根据哈希函数建立的表,以记录的关键字值为自变量,根据哈希函数,计算出对应的哈希地址,并在此存储该记录的内容 * 哈希冲突与解决 冲突(collision),不同的关键字值其哈希函数计算的哈希地址相同,具有相同函数值的关键字值称为同义词(synonym) 本例中处理同义词冲突的方法是拉链法 ,当发生冲突时,在冲突位置的二维数组行上寻找存放记录的空闲单元 * 24点算法的不可计算案例哈希 设定哈希表的长度为

您可能关注的文档

文档评论(0)

2837587390 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档