本文共 1095 字,大约阅读时间需要 3 分钟。
一、问题及实例
1.问题:需要回答的一般性提问,通常含有若干的参数 2.问题的描述:(数学建模) 1):定义问题参数(集合,变量,函数,序列等) 2):说明每个参数的取值范围及参数间的关系定义问题的解 3):说明解满足的条件(优化目标或约束条件) 3.问题实例:参数的一组赋值可得到问题的一个实例二、算法中一些概念 1.什么是算法? 有限条指令的序列(这个指令序列确定了解决某个问题的一系列运算或者操作) 2.算法A如何解决问题P? 把问题P的任何实例作为算法A的输入 每步计算是确定性的 A能够在有限步停止计算 输出该实例的正确的解 3.算法时间的复杂度:针对指定的 基本运算,计算算法所做运算的次数 4.基本运算:例如 比较,加法,乘法,置指针,交换等等 例如: 排序:元素之间的比较 检索:被检索元素x与数组元素的比较 整数乘法:每位数字相乘1次 m位和n位整数相乘要做mn次位乘 矩阵相乘:每对元素乘1次 i*j矩阵与j*k矩阵相乘要做ijk次乘法 图的遍历:置指针 5.输入规模:输入串编码的长度 例如: 排序:数组中元素个数n, 检索:被检索数组的元素个数n 整数乘法:两个整数的位数m,n 注意: 1.算法基本运算次数可用**输入规模函数**来表示 2.给定问题和基本运算就决定了一个算法类 6.算法两种时间复杂度: 1):最坏时间复杂度W(n) 算法求解输入规模为n的实例所需要的最长的时间 2):平均时间复杂度A(n) 在给定同输入样规模为n的输入实例的概率分布下,算法求解这些实例所需要的平均时间 计算公式: 三、算法设计的步骤: 怎么去设计,设计的原则? 后期加入 通过学习双越的设计模式来总结 1.数学建模 1)需要给出以下几个数学表达式 输入集合 优化目标函数 输出集合(问题的解) 约束条件 2.选择适合算法,进行计算问题 3.测试算法给出的解是否为最优解,若不是怎么找出最优解? 4.评估算法的性能 1)可以使用算法的时间复杂度,平均复杂和最坏复杂度 2)平均复杂度需要一个实例的出现的概率,平均复杂度的计算公式:f(n) = 举个例子:例如排序算法 3)最坏复杂度的计算公式: 举个例子:可以通过算法类的本质来评估 排序算法,这类算法大部分是通过比较两个元素来进行排序的,所以我们可以通过以下例子来评估算法的最坏复杂度四、伪代码
<- 赋值语句 if do then do 判断语句 else 然后 where do 循环语句 for i<-1 to 10 do 循环语句 and 并且 or 或者 return 输出语句 调用直接写过程名字 注释://
转载地址:http://jxobi.baihongyu.com/