算法与算法描述:从渡河问题到自然语言表示

需积分: 20 2 下载量 123 浏览量 更新于2024-07-27 收藏 224KB PPT 举报
"算法及算法描述课件" 在计算机科学中,算法是解决问题的关键,它是一系列精心设计的、有限的、可执行的步骤,旨在解决特定类型的问题或完成特定任务。算法的描述是为了让其他人或者计算机能够理解并执行这个过程。本课件旨在帮助学生理解和掌握算法的基本概念、特征及其描述方法。 一、算法的理解 算法是解决复杂问题的一种有序步骤,这些步骤必须是明确无误的、可执行的,并且能在有限的时间内完成。例如,渡河问题展示了如何通过明确的步骤设计一个可行的解决方案。在这个问题中,关键在于确保每次渡河都能安全地返回和前进,直到所有人都成功渡过。这展示了算法设计中逻辑思维和顺序执行的重要性。 二、算法的描述方式 1. 自然语言描述:使用日常语言来表述算法,如鸡兔同笼问题和求100以内能被3整除的数的例子。自然语言描述直观易懂,但可能存在歧义,可能导致不同的解释,且描述通常较长,不易于计算机直接解析。 2. 流程图:流程图是一种图形化的方式,通过符号和连接线来表示算法的步骤。这种方式直观且易于理解,尤其适合逻辑流程复杂的算法。 3. 伪代码:介于自然语言和编程语言之间,使用类似于编程语言的结构,但更注重可读性,无需完全遵循语法规则。伪代码可以快速地表达算法逻辑,方便转换为实际的编程代码。 三、算法设计的注意事项 设计算法时,需确保以下几点: - 清晰性:每一步骤都应明确,避免模糊不清的描述。 - 完备性:算法必须包含解决整个问题所需的所有步骤。 - 正确性:算法执行的结果应当与预期结果一致。 - 有限性:算法必须在有限的步骤内终止。 - 可行性:每一步骤都需要在实际环境中可执行。 四、自然语言描述的优缺点 优点: - 易理解:对于非专业人士,自然语言描述的算法更容易理解。 - 直观:能够清楚地表达复杂的逻辑流程。 缺点: - 歧义性:自然语言的多义性可能导致对算法的误解。 - 长度:描述可能冗长,不易于阅读和维护。 - 不精确:与编程语言相比,自然语言缺乏严谨性,可能导致执行不准确。 因此,在实际应用中,常常将自然语言描述与流程图或伪代码结合,以提高算法描述的精确性和效率。理解并熟练掌握各种算法描述方式,是成为优秀程序员和问题解决者的基础。
2014-06-05 上传
《算法设计与分析》目录: 第一篇引入篇 第1章算法概述1.1用计算机求解问题与算法 1.1.1用计算机求解问题的步骤 1.1.2算法及其要素和特性 1.1.3算法设计及基本方法 1.1.4从算法到实现 1.2算法描述 1.2.1算法描述简介 1.2.2算法描述约定 1.2.3一个简单问题的求解过程 1.3现代常用算法概览* 1.3.1压缩算法 1.3.2加密算法 1.3.3人工智能算法 1.3.4并行算法 1.3.5其他实用算法 第2章算法分析基础 2.1算法分析体系及计量 2.1.1算法分析的评价体系 2.1.2算法的时间复杂性 2.1.3算法的空间复杂性 2.1.4NP完全性问题 2.2算法分析实例 2.2.1非递归算法分析 2.2.2递归算法分析 2.2.3提高算法质量 第二篇基础篇 第3章算法基本工具和优化技巧3.1循环与递归 3.1.1循环设计要点 3.1.2递归设计要点 3.1.3循环与递归的比较 3.2算法与数据结构 3.2.1原始信息与处理结果的对应存储 3.2.2数组使信息有序化 3.2.3数组记录状态信息 3.2.4大整数存储及运算 3.2.5构造趣味矩阵 3.3优化算法的基本技巧 3.3.1算术运算的妙用 3.3.2标志量的妙用 3.3.3信息数字化 3.4优化算法的数学模型 3.4.1杨辉三角形的应用 3.4.2最大公约数的应用 3.4.3公倍数的应用 3.4.4斐波那契数列的应用 3.4.5递推关系求解方程 习题 第三篇核心篇 第4章基本的算法策略4.1迭代算法 4.1.1递推法 4.1.2倒推法 4.1.3迭代法解方程 4.2蛮力法 4.2.1枚举法 4.2.2其他范例 4.3分治算法 4.3.1分治算法框架 4.3.2二分法 4.3.3二分法变异 4.3.4其他分治方法 4.4贪婪算法 4.4.1可绝对贪婪问题 4.4.2相对或近似贪婪问题 4.4.3贪婪策略算法设计框架 4.5动态规划 4.5.1认识动态规划 4.5.2动态规划算法设计框架 4.5.3突出阶段性的动态规划应用 4.5.4突出递推的动态规划应用 4.6算法策略间的比较 4.6.1不同算法策略特点小结 4.6.2算法策略间的关联 4.6.3算法策略侧重的问题类型 习题 第5章图的搜索算法 5.1图搜索概述 5.1.1图及其术语 5.1.2图搜索及其术语 5.2广度优先搜索 5.2.1算法框架 5.2.2广度优先搜索的应用 5.3深度优先搜索 5.3.1算法框架 5.3.2深度优先搜索的应用 5.4回溯法 5.4.1认识回溯法 5.4.2回溯法算法框架 5.4.3应用1——基本的回溯搜索 5.4.4应用2——排列及排列树的回溯搜索 5.4.5应用3——最优化问题的回溯搜索 5.5分支限界法 5.5.1分支搜索算法 5.5.2分支限界搜索算法 5.5.3算法框架 5.6 图的搜索算法小结 习题 第四篇应用篇 第6章算法设计实践6.1循环赛日程表 6.2求3个数的最小公倍数 6.3猴子选大王 6.4最大子段和问题 6.5背包问题 6.5.1与利润无关的背包问题 6.5.2与利润有关的背包问题