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

本文介绍了算法的基本概念,包括算法的定义、性能分析(时间复杂度和空间复杂度)以及其在计算机科学各领域的核心地位。讨论了算法在大数据处理、深度学习、电子商务和信息推送等方面的重要作用。还概述了算法设计的策略,如穷举法、贪婪法、分治法和动态规划,并提到了算法的表示形式如自然语言、伪代码和编程语言。
摘要由CSDN通过智能技术生成

目录

算法设计与分析讲义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]    #<n-1次
return max          #共计<3n-1次

                               

空间复杂度

算法的重要性

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

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

算法的作用

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

算法的设计

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

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

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

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

算法的表示

  • 自然语言
  • 伪代码
  • 编程语言
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值