算法设计与分析笔记1-算法设计

目录

算法设计与分析讲义1

算法的定义

算法的性能分析

算法的重要性

算法的作用

算法的设计

算法的表示


算法设计与分析讲义1

(来源于hw-dong的算法设计与分析课程)

算法的定义

算法是解决一类问题或某个计算的过程(方法),算法包含有限步可行的明确的操作。

算法的性能分析

时间复杂度

max = a[1];         #1次
for i = 2 to n:     #n-1次复制,一次比较(i>n?),共n次
    if a[i] > max:  #n-1次
        max=a[i]    #

空间复杂度

算法的重要性

计算机科学的核心,每个计算机科学的分支都以算法为核心,如:

  • 操作系统中的进程调度
  • 编译原理中的词法分析
  • 计算机网络中的路由算法,搜索引擎算法
  • 机器学习中的神经网络,随机森林,支持向量机,智能算法
  • 密码学的密码算法,数论算法
  • 计算机生物学:动态规划
  • 计算机图形学:计算几何,光照渲染,流体仿真,动画

算法的作用

  • 大数据处理要求计算速度,计算速度取决于硬件和算法
  • 深度学习/AI:人脸识别,自动驾驶等
  • 电子商务平台:推荐算法
  • 自媒体:信息推送,如Youtube视频推送
  • 创造计算机中更快的数学的计算方法:如a^n,大整数乘法等

算法的设计

如何设计有效的、正确的、高效的算法?

  • 算法设计包括技术(设计模式,本课程所主要介绍的)与艺术(创造性思维,如高斯解决1至100的加法的方法)

算法设计的策略(也是本课程的学习目录)

  • 穷举法/蛮力法(迭代法,回溯法):列举所有可能情况。  暴力求最大值,八皇后,背包问题(Knapsach Problem)
  • 贪婪法/贪心法:选择当前局部最优的策略。 Dijsktra最短路径算法,Prim, 找零钱
  • 分治法:将问题转化为若干个更简单的小问题(divide),逐一解决之(conquer),最终解决原问题(combine)。斐波那契数列(递归),大整数相乘,归并排序,汉诺塔
  • 动态规划:避免重复子问题的重复计算(以空间换时间)。

算法的表示

  • 自然语言
  • 伪代码
  • 编程语言

你可能感兴趣的:(算法设计与分析,算法分析,算法设计,算法)