DSA概述

DSA:DataStructure + Algorithm

课程

清华大学邓俊辉数据结构与算法

https://dsa.cs.tsinghua.edu.cn/~deng/ds/dsacpp/

概论

  1. 什么是计算
  2. 评判DSA优劣的参照(直尺)
  3. 度量DSA性能的尺度(刻度)
  4. DSA性能度量的方法
  5. DSA的设计及其优化

计算

算法

特定计算模型下,旨在解决特定问题的指令序列

  • 输入:待处理的信息 (问题)
  • 输出:经处理的信息 (答案)
  • 正确性:的确可以解决指定的问题
  • 确定性:任一算法都可以描述为一个由基本操作组成的序列
  • 可行性:每一基本操作都可实现,且在常数时间内完成

程序未必是算法,如还为证明Hailstone的有穷性

好算法

  • 正确
    • 符合语法,能够编译、链接
    • 能够正确处理简单的输入
    • 能够正确处理大规模的输入
    • 能够正确处理一般性的输入
    • 能够正确处理退化的输入
    • 能够正确处理任意合法的输入
  • 健壮:能辨别不合法的输入并做适当处理,而不致非正常退出
  • 可读:结构化+准确命名+注释+...
  • 效率(课程重点):速度尽可能快;存偷空间尽可能少

度量

  • 正确性:算法功能与问题要求一致?数学证明?可不那么简单...

  • 成本:运行时间+所需存储空间 如何度量?如何比较?

稳妥起见,在规模同为n的所有实例中,只关注最坏(成本最高)者

图灵机模型

RAM模型

基本操作的次数–>计算时间

分支转向的原理是goto

bigO、bigΩ、bigΘ

至今没有找到多项式时间算法解的一类问题,称之为NP类问题

动态规划

posted @ 2022-08-24 14:49  bf3fkd  阅读(215)  评论(0)    收藏  举报