智能科学技术导论:揲蓍成卦算法与字符串计数
本次作业是南京理工大学计算机科学与工程学院智能科学技术导论课程的一部分,由学生黄海浪完成,学号9181040G0818,起止时间为2020年5月12日至13日,指导教师为袁夏。作业包含两个问题: **问题1:揲蓍成卦算法实现** 问题要求实现古人的卜筮方法——揲蓍成卦算法,该算法通过重复以下步骤得到八卦的变化,共经历六次三变(即十八变)过程: 1. **大衍之数**:使用50根蓍草,去除1根不用,剩余49根。 2. **分二**:随机分为两堆,象征阴阳。 3. **挂一**:从右边一堆取1根,象征天地变化。 4. **揲四**:每堆以四根一组计数,更新可用数量s。 5. **归奇**:累加两堆余数,反映闰年的规律。 6. **四营成易**:未达三变继续执行步骤2。 7. **卦象决定**:根据剩余蓍草数量除以4的结果判断爻画。 算法分析指出,s值在36到24之间变化,对应的爻画概率各异,体现了算法的随机性和卜筮的哲学内涵。 **问题2:字符串出现次数计算算法** 第二个问题是关于设计一个计算子字符串在主字符串中出现次数的算法,这里推荐使用KMP(Knuth-Morris-Pratt)模式匹配算法。算法流程包括: 1. 使用KMP函数找到子串首次出现的位置。 2. 计数子串出现次数。 3. 如果还有剩余主字符串,继续用KMP搜索直到主字符串结束。 算法伪代码如下: ```python function getCnt(str, strt): index = KMP(str, strt) // 第一次出现位置 count = 1 while index > 0 and str[index-1:index+len(strt)] == strt: count++ index = KMP(str, strt, index + len(strt)) return count ``` KMP算法的特点在于避免了在查找过程中不必要的比较,提高了搜索效率,适用于处理这类字符串匹配问题。 总结来说,这个作业涉及到了计算机科学中的两个核心概念:一个是模拟古卜筮算法的随机过程,另一个是字符串处理中的高效搜索算法。学生需掌握如何用编程语言实现这些算法,并理解它们在实际问题中的应用及其计算复杂性。
下载后可阅读完整内容,剩余9页未读,立即下载
- 粉丝: 37
- 资源: 289
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦