算法与设计分析笔记

一、问题及实例
    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 输出语句
     调用直接写过程名字
     注释://

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值