• 算法和算法分析


    1、算法的性质

    有穷性、能行性、确定性、终止性、输入/输出。

    2、算法的描述

    自然语言(容易歧义)

    自然语言+数学公式(简单方便,还是歧义)

    严格形式描述(比如图灵机模型,非常麻烦,难以阅读)

    类似编程语言描述

    伪代码的形式

    3、6种算法设计模式

      枚举法(枚举全部、找出最优解)、

      贪心法(根据已有信息,先部分求解,再基于部分得到完整的解)、

      分治法(将一个复杂问题化解为很多简单的子问题,对这些子问题分别求解,并组合起来得到复杂问题的解)、

      动态规划法(对于一些复杂的问题,不能一下求解出来。在求解步骤中,不断积累已知信息,然后动态选择已知的最好求解路径)、

      回溯法(通过探索方式求解,当选择一个方向探索时发现无解,就回溯到前面探索的那个路口往其他方向继续探索,直到得出解)、

      分支界限法(回溯法的改良版本,它是在探索的过程中,根据已知的信息如果发现这个选择是错误的,就及早将其删除,用来缩小求解空间,加速问题求解的过程)。

    4、算法分析

      算法是在有限的时间里一步步执行某些任务和过程,算法分析的主要任务:分析算法占用的空间资源跟时间资源。

    5、大O分析法,

      1、原子操作数量t与算法真实运行时间成正比。

      2、把算法和函数 f(n) 像联系,把原子操作的数量 t 描述为输入大小n的函数 f(n) ,大O分析法。

      3、对于输入相等大小但是不相同的输入,算法的运算速度可能不一样。平均情况分析需要针对于这种情况定义一组输入的概率分布。这个过程需要涉及复杂的概率理论。一般按     照的是算法运行的最坏情况下时间表示输入大小为n的函数。

      4、对数函数涉及微积分的运用

      5、原子值和原子操作,原子操作数量t与算法真实运行时间成正比,而执行操作消耗的时间O(1)常数时间(最低的时间复杂度耗时/耗空间与输入数据大小无关

     

  • 相关阅读:
    C# 两个窗体中相互切换的方法
    Linq对DataTable数据的分组统计
    如何让窗体大小随着控件的大小变化而变化
    两张表解决用户自定义数据库之思路
    picturebox显示用字符串代表图片名称的(已导入资源的)图片
    如何将access高版本数据库保存为低版本的?
    Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别
    条件编译解决AutoCAD多版本问题
    一个爬取股票信息的爬虫程序
    Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11301238.html
Copyright © 2020-2023  润新知