算法设计与分析【期中+期末复习知识点总结】(持续更新)

第1章:算法概述

算法:具有输入、输出、确定性、有限性。

程序(算法+数据结构=程序):具有输入、输出、确定性(注意:程序可以不满足有限性,如操作系统是在无限循环中执行的程序)。

衡量算法好坏的方法:正确性(有限时间正确结果)、简明性、效率(时间、空间)、最优性

渐进意义下的符号:

O:表示算法的渐近上界,如果算法的时间复杂度为O(g(n)),使得对于任何输入规模n,算法的运行时间都不会超过c * g(n),即算法的时间复杂度不会超过g(n)的某个常数倍,此谓上界。

Ω:表示算法的渐近下界,如果算法的时间复杂度为Ω(g(n)),使得对于任何输入规模n,算法的运行时间都不会低于c * g(n),即算法的时间复杂度不会低于g(n)的某个常数倍,此谓下界。

Θ:表示算法的渐近紧确界,如果算法的时间复杂度为Θ(g(n)),使得对于任何输入规模n,算法的运行时间都被夹在c1 * g(n)和c2 * g(n)之间,即算法的时间复杂度大约是g(n)的某个常数倍,此谓同阶。

第2章:递归与分治

分治法:将规模为n的问题分解为k个规模较小的子问题,子问题间互相独立且与原问题相同。通过递归求解子问题,最后将解合并,可实现对原问题的求解。

个人总结:分治法的核心思想是:分解和递归。即将大问题分解为子问题,因为子问题性质与原问题相同,因此可以使用相同的递归式进行求解。

注意子问题间的求解必须是独立的,否则会做很多不必要的重复工作,如果子问题间不完全独立的话选择动态规划会比较好。)

分治法求解过程:分解 -> 递归求解 -> 合并。

分治算法典型问题:二分搜索、合并排序、快速排序、大数乘法、矩阵乘法、棋盘覆盖、最近点对问题、线性时间选择、循环赛日程。

排序算法时复杂度比较
排序方法最好时间平均时间最坏时间辅助空间
插入排序O(n)O(n^{2})O(n^{2})O(1)
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)
冒泡排序O(n)O(n^{2})O(n^{2})O(1)
快速排序O(logn)O(nlogn)O(n^{2})O(logn)
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)

分治答题策略:

第1步:简单描述所设计的算法,要重点说明是如何将问题划分为子问题(分解策略)

第2步:说明如何进行递归,给出递归方程

第3步:合并过程如果有的话就一句话带过即可

第4步:注意要在最后写上时间复杂度和空间复杂度。

第3章:动态规划

动态规划:将规模为n的问题分解为k个规模较小的子问题,子问题间彼此关联且与原问题相同。通过将子问题的解记录下来,以避免重复计算。动态规划常用于解决具有重叠子问题最优子结构特性的问题,通常使用表格法或记忆化搜索来实现,最终得到原问题的最优解。

重叠子问题:在递归执行的过程中,同一个子问题会被多次遇到和解决,通过存储已解决子问题的答案,动态规划可以避免对相同子问题的重复计算。

最优子结构:一个问题的最优解包含其子问题的最优解。

个人总结:动态规划与贪心不同的一点在于:动态规划的子问题间不是完全独立的,换句话说子问题间具有关联或者说是依赖的关系,因此可以用表来记录已解决的子问题答案,后续操作用到时只需要查表即可,不用再重新计算,可以节约开销)

动态规划算法典型问题:最长公共子序列、最大子段和问题、凸多边形最优剖分、多边形游戏、图象压缩、电路布线、流水作业调度、0-1背包问题。

动态规划答题策略:

第1步:简单描述所设计的算法,要重点分析最优解结构(满足最优子结构),简单说明满足重叠子问题性质。

第2步:建立递归关系,给出递归方程。

第3步:计算最优值,即简单描述求解过程,给出时间复杂度,最好给出空间复杂度(表的复杂度)。

第4步:构造最优解

第4章:贪心算法

贪心选择性质:所求问题的整体最优解可以通过一系列局部最优的选择来达到。

证明满足贪心选择性质:证明每一步所做出的贪心选择最终将获得问题的整体最优解。(首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。在做出贪心选择后,原问题简化为规模更小的类似子问题。用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的全局最优解。)

最优子结构性质:一个问题的最优解包含其子问题的最优解。

贪心算法典型问题:装船问题、哈夫曼编码问题、单源最短路径问题、最小生成树问题、多机调度问题。

贪心答题策略:

第1步:先描述所设计的算法。

第2步:证明算法的正确性,包括贪心选择性质和最优子结构性质。

第3步:给出时间复杂度。

(如有谬误望请指正,持续更新中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/163789.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口调用微信公众号群发功能,绕过微信自身限制

微信群发功能要求要微信认证。微信认证要求要企业账号、而且需要认证费用。 本篇文章教大家非微信认证账号如何群发公众号信息 本篇文章基于python语言开发,其他的语言一样的方式,不需要拘泥于语言 注意事项: 要求有微信公众平台登陆状态,也就是Cookie数据, 如何通过Py…

基于SSM的在线投稿系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

计算机的发展

硬件的发展 第一台电子数字计算机:ENIAC(1946),作者:冯诺依曼,逻辑元件:电子管 bug:小虫子,会影响打点 Intel: 机器字长:计算机一次整数运算所能…

OpenAI变天:也许会有另一个OpenAI要崛起?

本周五,OpenAI发布重磅声明,创始人兼CEO山姆奥特曼辞任OpenAI,并退出董事会。总裁Greg Brockman(格雷格布罗克曼)将辞去董事会主席一职,但将继续在公司担任职务,向CEO汇报。 作为吃瓜群众&#…

Linux(4):Linux文件与目录管理

目录与路径 相对路径在进行软件或软件安装时非常有用,更加方便。利用相对路径的写法必须要确认目前的路径才能正确的去到想要去的目录。 绝对路径的正确度要比相对路径好,因此,在写程序(shell scripts)来管理系统的条…

公司会倒闭,但大模型肯定不会

咋玩抖音的我,前几天在抖音上发了一张图片,没想到竟然有1000多的播放量。 当然这个播放量不算高,甚至在抖音的体系里属于很低的,但是比我预料的可能只有个位数的播放量是高了不少。 这张图片是我用某国产 AI 软件生成的&#xff…

【设计模式】设计模式基础

设计模式基础 文章目录 设计模式基础一、七大设计原则1.1 概述1.2 单一职责原则1.3 接口隔离原则1.4 依赖倒转原则1.5 里氏替换原则1.6 开闭原则1.7 迪米特法则1.8 合成复用原则 二、UML类图2.1 概述2.2 依赖关系(Dependence)2.3 泛化关系(generalizatio…

linux在非联网、无网络环境下,使用yumdownload、reportrack方法安装rpm包

文章目录 前言1、下载yum-utils​​2、yumdownloader3、repotrack4、区别:总结 前言 当开发者在联网环境下使用Linux时,可以轻松地通过yum或apt-get安装软件。然而,在公司和企业中,由于安全原因,生产环境通常无法访问…

es的优势

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

系列一、堆里面的分区:Eden、From、To、老年代各自的特点

一、堆里面的分区:Eden、From、To、老年代各自的特点 堆是对象共享的区域,也是垃圾回收器主要工作的地方。主要分为新生区、养老区和元空间,而这三块地方中GC主要工作在新生区和养老区,其中新生区占1/3、养老区占2/3,新…

springboot+activiti5.22.0集成Activiti在线流程设计器

SpringBoot集成Activiti5.22在线流程设计器 文章目录 SpringBoot集成Activiti5.22在线流程设计器📝1.增加配置pom依赖 增加数据库及redis配置文件📜 2.启动类ActivitiDesignApplication排除安全校验注解启动项目后将会自动在数据库中生成表 &#x1f4d8…

Win11+Modelsim SE-64 10.6d搭建UVM环境

1、添加源文件及tb文件 在目录下建立文件夹,将DUT和Testbench添加进去,文件夹内容如下所示: 2、以《UVM实战》中的例子做简单的示例: 2.1 设计文件 :dut.sv 功能很简单,即将接受到的数据原封不动发送出去…

鸿蒙:Harmony开发基础知识详解

一.概述 工欲善其事,必先利其器。 上一篇博文实现了一个"Hello Harmony"的Demo,今天这篇博文就以Demo "Hello Harmony" 为例,以官网开发文档为依据,从鸿蒙开发主要的几个方面入手,详细了解一下鸿…

谈谈 MySQL 事务隔离级别

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

Maven依赖管理项目构建工具(保姆级教学---上篇)

对于Maven依赖管理项目构建工具的介绍,我们将其分为上篇和下篇。如果您对文章感兴趣,您可以在此链接中找到下篇详细内容: Maven依赖管理项目构建工具(保姆级教学---下篇)-CSDN博客 一、Maven介绍 官网地址&#xff…

R语言的入门学习

目录 准备工作导入csv数据集选择前200行作为数据集展示数据集的前/后几N行宏观分析删除缺失值构建直方图导出为图片 R语言常见图像类型例1:散点图例2:散点矩阵图 准备工作 安装教程: R语言和RStudio的下载安装(非常简便舒适&…

大模型是怎么知道 “我赚了200万” 的?

今天在和 chatGPT 聊天时,我说“我赚了200万”,他立刻就根据这句话给我了一句。 我当然没有赚到200万,只是想引出一个话题:“大模型是如何识别出这句话,又是怎么知道该回答什么的呢?" 在学习自然语言…

GIS杂记(三):MaxEnt模型中的图像地理范围不匹配【全网最好的方法,没有之一】

图像地理范围不匹配问题解决方法 1. 问题描述2. 问题范例3. 问题解决4. 其他参考 1. 问题描述 一般在使用全国的的生物气候变量时,由于其地理范围一致,因此不会出现地理范围不匹配的问题。但是,当加入其他影响因子的时候,如海拔、…

mongodb——原理简介,docker单机部署

MongoDB noSQL数据库 特点 数据文件存储格式为 BSON (JSON 的扩展) {“name”:“joe”}这是 BSON 的例子,其中"name"是键,"joe"是值。键值对组成了 BSON 格式。面向集合…